您好,欢迎访问三七文档
嵌入式实验报告三一、实验目的:1.学习cygwin;2.通过上机实验,使学生验证、巩固和充实所学理论知识,加深对相关内容的理解,了解嵌入式Linux的内核布局,掌握内核配置及编译方法。二、实验要求:1.安装cygwin及内核源码;2.配置基于S3c2410处理器的内核选项。3.编译生成zImage。三、问题:1.简述嵌入式开发中和体系结构相关的内核布局,说明哪些目录是在内核移植中需要重点关注的。linux内核主要由5个模块构成:进程控制模块,内存管理模块,文件系统模块,进程间通信模块和网络接口模块。这几个模块的相互关系如下图,虚线和虚线框表示在该版本中还未实现的:可以看到所有的模块都与进程调度有关,它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。下图是内核结构图:2.简述内核编译的步骤和对应命令的作用,说明zImage、bzImage的异同。1.安装cygwin安装路径d:\cygwin选择全部安装All2.准备文件复制linux-2.4.18-rmk7-pxa1-mz5.tar--/tmp/edukit-2410复制\patch--/tmp/edukit-2410复制cross-armtools-linux-edukit2410.tar--/tmp安装交叉编译工具&设置系统环境$cd/tmp/$tar-P-xvjfcross-armtools-linux-edukit2410.tar.bz2$ls!-armtools-linux!!/tmp/$sourcearmtools-linux/cross-install.sh$ls/usr!-arm-linux!-!/usr/3.安装内核源码包tar-xvjf/tmp/edukit-2410/linux-2.4.18-rmk7-pxa1-mz5.tar.bz24.安装内核补丁patch-p1/tmp/edukit-2410/patch/linux-2.4.18-rmk7-pxa1-mz5.tar.bz2.edukitii.patch5.编译生成内核makexconfig或makemenuconfig选择合适的配置文件或者自己进行相应的配置MakedepMakezImage6.检测生成的内核镜像是否存在/arch/arm/bootbzImage和zImage的区别来自于保护模式代码的放置位置:1.众所周知,内核映像包括两部分代码:实模式代码和保护模式代码,当引导装载器装载内核映像到代码段内存时,分别放置实模式代码和保护模式代码到不同的位置,然后进入实模式代码执行,实模式代码执行中转入CPU保护模式,开始执行32位保护模式代码。2.不管是zImage还是bzImage,他们的实模式代码部分都被装入0x9000:0000(物理地址0x90000)-0x9A00:0000(物理地址0x9A000),其0x9000:0000-0x9020:0000是内核引导扇区,现在只是些假代码,无用。0x9020:0000-0x9800:0000是内核实模式代码。内核从这里开始执行。3.bzImage的内核映像中的保护模式代码,由引导装载器直接装载入高位内存(物理地址0x100000),就是1M以上。内核实模式代码在完成检查引导装载器兼容性(旧loader可能把实模式代码放在不是0x90000的其他地方,这是需要移到这里),A20(不明白:-(),初始化gdt,idt(全局描述表,和中断描述表)之后,就将CPU初始化为保护模式,然后跳转到0x100000。至此内核活了起来,他进入了强大的32位线性地址空间执行。由于bzImage是在1M以上,所以它的大小理论上是没有限制的。4.zImage的的内核映像中的保护模式代码由引导装载器装载入低位内存0x1000:0000-0x9000:0000(物理地址0x10000-0x90000),然后实模式代码在把它移到从64K=0x10000位置移到4K位置0x1000,然后做和bzImage实模式代码一样的事情,如:检查引导装载器兼容性,A20,初始化gdt,idt(全局描述表,和中断描述表),最后进入保护模式代码执行,0x100:0000(物理地址0x1000)位置。所以我们看到保护模式代码范围必须是0x10000-0x90000,大小是512K字节,再大就会覆盖实模式安装代码。所以zImage的内核最大只能512K.四、实验心得:在这次试验中已经完全熟练了cygwin的安装,这次试验花费的时间比较长,用了两节实验课的时间才完成,第一次实验课没有成功。再课后花了些时间操作,在第二次的试验课的时候成功完成了,不过中间也遇到了一些小问题。要学好还要继续努力。
本文标题:嵌入式实验报告三
链接地址:https://www.777doc.com/doc-6333820 .html