《嵌入式实验报告三.docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告三.docx(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式实验报告三报告人实验时间 2013/6/9一、实验目的:1 .学习 cygwin;2 .通过上机实验,使学生验证、巩固和充实所学理论知识,加深对相关内容的理解,了解 嵌入式Linux的内核布局,掌握内核配置及编译方法。二、实验要求:1 .安装cygwin及内核源码;2 .配置基于S3c2410处理器的内核选项。3 .编译生成zlmage。三、问题:1 .简述嵌入式开发中和体系结构相关的内核布局,说明哪些目录是在内核移植中需要重点 关注的。Linux内核主要由5个子系统构成:进程调度、内存管理、文件系统、网络接口和进程通信。相互关系如图:内核 目录有 arch、block、crypo dr
2、ivers fs include init ipc kernel lib、 mm、 net security sound、usr Documentation scripts等,在内核移植中需要重点注意 arch include init mm kernel drivers fs、ipc、lib 等目录。2 .简述内核编译的步骤和对应命令的作用,说明zlmage、bzlmage的异同。1 .安装 cygwin安装路径d:cygwin 选择全部安装All2 .准备文件linux-2.4.18-rmk7-pxal-mz5.tar /tmp/edukit-2410复制 patch /tmp/eduki
3、t-2410复制 cross-armtools-linux-edukit2410.tar /tmp3 .安装交叉编译工具&设置系统环境$ cd /tmp/$ tar -P -xvjf cross-armtools-linux-edukit2410.tar.bz2$ Is. armtools-linux .出现类似这样的信息即为正确,为/tmp/目录下其他内容 $ source armtools-linux/cross-install.sh$ Is /usr.arm-linux.出现类似这样的信息即为正确,为/usr/目录下其他内容$ source /tmp/edukit-2410/set_en
4、v_linux.sh4 .安装内核源码包tar -xvjf /tmp/edukit-2410/linux-2.4.18-rmk7-pxal-mz5.tar.bz25 .安装内核补丁patch -pl /tmp/edukit-2410/patch/linux-2.4.18-rmk7-pxa 1 -mz5.tar.bz2.edukit2410.patch6 .编译生成内核make xconfig 或 make menuconfig选择合适的配置文件或者自己进行相应的配置Make depMake zlmage7 .检测生成的内核镜像是否存在/arch/arm/bootbzlmage和zlmage的区
5、别来自于保护模式代码的放置位置:1 .众所周知,内核映像包括两部分代码:实模式代码和保护模式代码,当引导装载器装载 内核映像到代码段内存时,分别放置实模式代码和保护模式代码到不同的位置,然后进 入实模式代码执行,实模式代码执行中转入CPU保护模式,开始执行32位保护模式代 码。2 .不管是zlmage还是bzlmage,他们的实模式代码部分都被装入0x9000:0000(物理地址 0x90000)-0x9A00:0000(物理土也址 0x9A000),其 0x9000:0000-0x9020:0000 是内核引导扇 区,现在只是些假代码,无用。0x9020:0000-0x9800:0000是内
6、核实模式代码。内核从这 里开始执行。3 . bzlmage的内核映像中的保护模式代码,由引导装载器直接装载入高位内存(物理地址 0x100000),就是1M以上。内核实模式代码在完成检查引导装载器兼容性(旧loader 可能把实模式代码放在不是0x90000的其他地方,这是需要移到这里),A20初始化 gdt,idt(全局描述表,和中断描述表)之后,就将CPU初始化为保护模式,然后跳转到 0x100000o至此内核活了起来,他进入了强大的32位线性地址空间执行。由于bzlmage 是在1M以上,所以它的大小理论上是没有限制的。4 . zlmage的的内核映像中的保护模式代码由引导装载器装载入低
7、位内存 Ox 1000:0000-0x9000:0000(物理地址Ox 10000-0x90000),然后实模式代码在把它移到从 64K=0x 10000位置移到4K位置Ox 1000,然后做和bzlmage实模式代码一样的事情,如: 检查引导装载器兼容性,A20,初始化gdt,idt(全局描述表,和中断描述表),最后进入保 护模式代码执行,0x100:0000(物理地址0x1000)位置。所以我们看到保护模式代码范 围必须是0x10000-0x90000,大小是512K字节,再大就会覆盖实模式安装代码。所以 zlmage的内核最大只能512K.四、实验心得:在这次试验中已经完全熟练了 cygwin的安装,这次试验花费的时间比较长,用了两节 实验课的时间才完成,第一次实验课没有成功。再课后花了些时间操作,在第二次的试验课 的时候成功完成了,不过中间也遇到了一些小问题。要学好还要继续努力。