嵌入式系统 实验报告

嵌入式系统 实验报告

ID:11249853

大小:37.00 KB

页数:5页

时间:2018-07-11

嵌入式系统 实验报告_第1页
嵌入式系统 实验报告_第2页
嵌入式系统 实验报告_第3页
嵌入式系统 实验报告_第4页
嵌入式系统 实验报告_第5页
资源描述:

《嵌入式系统 实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、嵌入式系统实验报告  一.选题    我们组的实验题目是:将配制过并且用Open64编译过的linux操作系统移植到ebox中。    这个实验是编译原理实验和嵌入式系统实验的结合。我们的小组成员有三位选了董渊老师的编译原理专题训练。当时董渊老师对大实验给出了一个提议,用open64编译器编译busybox,并且和嵌入式系统实验相结合。我们组员感觉这将是一个很好的尝试。另外,在ebox平台上运行linux,网上鲜有现成的案例。我们觉得,虽然ebox运行EmbeddedWinCE已经可以满足很多商业上的需求,

2、但是linux有它的许多特点是WinCE不具备的。显然最重要的就是它的开源特性,使得功能的开发变得更加灵活,虽然可能没有WinCE容易上手,但是linux可以支持更多的CPU类型,应用的场合也较多。    新的创意往往可以激发我们的干劲。实验刚一开始,我们就为这个前所未有的挑战而激动万分,跃跃欲试。我们也很想通过实验,使得我们在学习嵌入式系统新知识的同时,尝试运用编译知识和巩固以前学过的操作系统知识,以达到使知识融会贯通、学以致用的目的。    在接下来的实验报告中,我们将主要体现嵌入式实验部分的工作。 二

3、.实验过程    嵌入式linux操作系统的三大要素是:bootloader,kernelimage和根文件系统。我们也就按照这三点要素来总结我们的实验流程。     1.初选bootloader    在查阅了一些嵌入式linux的资料后,我们把bootloader的备选集定位在了lilo、grub和syslinux上面。根据我们的实验设计,我们希望首先尝试用U盘引导,之后再尝试把U盘的内容写到ebox里面引导linux。明确了需求,我们就对这些bootloader的功能和适用性进行了比较。    Lil

4、o是Grub的前身,grub在很多功能上加强了lilo,在实验设计做好之后,我们进一步询问业内人士并且得到了一些建议:GRUB不像LILO一样使用裸扇区,而是可以从ext2或ext3文件系统中加载Linux内核。这也就是说,如果用U盘做引导,lilo可能不能用,而grub是可以的。syslinux相对于grub是一个更轻量级的引导器,一般用于光盘和U盘。原本我们认为syslinux可能比grub更适合我们的实验,但是由于网上关于grub的参考更多一些,并且我们认为grub是可以胜任预期的工作。于是我们没有实

5、验syslinux,用grub开始了我们的初期实验之旅。     2.编译配制kernel    构建一个根文件系统首先需要的就是加载一个kernel。我们将busybox集成在内核中,这样kernel启动后,再加载initramfs,就可以直接进入带shell的linux环境中了。    kernel我们选择的是Linux2.6.31.6的最新版本。由于ebox使用的Vortex也是x86系统的,因此不需要交叉编译。在编译kernel的时候,我们指定的是自己的initramfs。我们的initramfs只

6、是增加了一个init文件。init是一个hello.c文件,如下:    hello.c:     #include     #include     intmain(intargc,charargv[])     {     printf("helloworld,frominitramfs.");     sleep(9999999);     return0;     }    创建一个initramfs的源文件目录image,把hello程序拷入,并改名为in

7、it。在image下,创建一个dev/console的设备文件,否则无法输出helloworld。    mknod-m600dev/consolec51     在编译kernel时,在generalsetup配置目录下的initramfssources配置项下输入image的路径名。为我们的init程序是ELF格式的,所以内核需要支持ELF的可执行文件,否则启动这个init程序会失败。在内核的Executablefileformats配置目录下,选择kernelsupportforELFbinaries

8、,则可使内核支持ELF格式的可执行文件。       在编译kernel的时候,需要配置选项。kernel中有很多可选模块,makeallconfig是加载所有模块,这样做编译完kernel会很大。makenoconfig是最小化kernel。我们一开始使用的是makedefconfig,使用默认的配置。但是事实证明这是不可取的。在后来grub加载kernel中,出现了cmov问题。kernel无法加载,这是由于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。