嵌入式Linux系统应用及项目实践-教学课件-丰海-第5章嵌入式Linux启动程序内核根文件系统.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《嵌入式Linux系统应用及项目实践-教学课件-丰海-第5章嵌入式Linux启动程序内核根文件系统.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 系统 应用 项目 实践 教学 课件 丰海 启动 程序 内核 文件系统
- 资源描述:
-
1、1在线教务辅导网:在线教务辅导网:http:/教材其余课件及动画素材请查阅在线教务辅导网教材其余课件及动画素材请查阅在线教务辅导网QQ:349134187 或者直接输入下面地址:或者直接输入下面地址:http:/2第五章 嵌入式Linux启动引导程序、内核、文件系统3BootLoader的基本概念 Boot Loader 就是在操作系统内核运行之前运行的一段引导系统启动的程序。通过这段小程序的作用是初始化硬件设备、建立内存空间的映射图,并将系统的软硬件环境带到一个合适的状态,以便为调用操作系统内核准备好正确的环境。在嵌入式世界,Boot Loader 是严重地依赖于硬件而实现的,没有Bootl
2、oader,嵌入式系统就不能启动。由于作者在这方面的功力还不够,所以无法向读者介绍针对TQ2440开发板的u-boot移植,只介绍一下u-boot的使用基础和概念。Bootloader完成的主要功能就是将操作系统调进内存中执行,然后将控制权交给操作系统,嵌入式系统中常见的Bootloader有Vivi、Blob、Redboot、U-Boot等。4内核移植的平台内核移植的平台 1.首先验证所下载内核的完整性2.安装编译内核时所需要的工具:3.编译前的准备编译前的准备4.内核源代码的修改 修改平台输入时钟修改平台输入时钟Makefile文件文件、机器机器代代码加码加入入NAND FLASH的分区信
3、息的分区信息、添加内核对添加内核对yaffs2的支持的支持、修改看门狗驱动、修改看门狗驱动 5.输入make进行编译5fhfh:$gpg-verify linux-2.6.30.4.tar.bz2.signgpg:于2009年07月31日星期五 07时13分44秒 CST 创建的签名,使用DSA,钥匙号 517D0F0Egpg:完好的签名,来自于“Linux Kernel Archives Verification Key”gpg:警告:这把密钥已经被它的持有者吊销了!gpg:这表明这个签名有可能是伪造的。gpg:吊销原因:密钥已泄漏gpg:吊销注释:Key was used to autos
4、igning;autosigning server was compromised.gpg:警告:这把密钥未经受信任的签名认证!gpg:没有证据表明这个签名属于它所声称的持有者。主钥指纹:C75D C40A 11D7 AF88 9981 ED5B C86B A06A 517D 0F0E如果主钥指纹和ftpadminkernel.org 邮箱与http:/www.kernel.org/signature.html网站的信息一样如图5-1所示,则表示这个包是完整的。67安装编译内核时所需要的工具:fhfh:$sudo apt-get install libncurses5-dev fhfh:$su
5、do apt-get install ncurses-docfhfh:$sudo apt-get install kernel-packagefhfh:$mkdir/home/fh/kernel (建立放置内核的目录)fhfh:$cp linux-2.6.30.4.tar.bz2/home/fh/kernel(复制内核)fhfh:$cd/home/fh/kernel、fhfh:/kernel$tar jxvf linux-2.6.30.4.tar.bz2(解压内核)fhfh:/kernel$cd/home/fh/kernel/linux-2.6.30.4(进入内核目录,实际上源代码是需要根据具
6、体的硬件修改的,只是TQ2440的配套光盘中给的2.6.30.4内核源代码已经修改好了。)fhfh:/kernel/linux-2.6.30.4$make clean (清除以前的旧数据)fhfh:/kernel/linux-2.6.30.4$make mrproper (清理以前编译时留下的临时文件)8内核源代码的修改 1.修改根目录下的修改根目录下的Makefile文件文件 Linux内核源码目录下的Makefile文件控制内核的编译,虽然我们在x86平台上进行编译,但是我们的目标平台是ARM,故必须进行交叉编译,将编译器改为arm-linux-,处理器的架构改为arm。tq2440的配套
7、光盘中给的2.6.30.4内核源代码中的命令:vi Makefile修改:(193行)ARCH=arm (194行)CROSS_COMPILE=arm-linux-原因:指明体系结构为arm,采用的交叉编译器为arm-linux-,一定要改完Makefile文件再执行make menuconfig,否则,默认的配置平台就是针对x86架构的PC普通电脑。92.修改平台输入时钟修改平台输入时钟命令:fhfh:/kernel/linux-2.6.30.4$vi arch/arm/mach-s3c2440/mach-smdk2440.c修改:(163行)smdk2440_map_io()中的s3c24
8、xx_init_clocks(16934400)修为 s3c24xx_init_clocks(12000000)原因:TQ2440开发板使用的是12MHz的外部时钟。3.修改机器代码修改机器代码命令:fhfh:/kernel/linux-2.6.30.4$vi arch/arm/tools/mach-types修改:(379行)s3c2440这一行最后的数字改为168原因:在内核文件arch/arm/mach-s3c2440/mach-smdk2440.c中的 MACHINE_START(S3C2440,”SMDK2440”)中要使用该机器码,同时它还应该与uboot中的机器码一致,因为ubo
9、ot源码中为168,所以要改成与uboot一致;104.修改修改common-smdk.c文件,加入文件,加入NAND FLASH的分区信息的分区信息命令:fhfh:/kernel/linux-2.6.30.4$vi arch/arm/plat-s3c24xx/common-smdk.c1)修改内容如下:(109行开始)static struct mtd_partition smdk_default_nand_part=0=.name =uboot,.offset=0 x00000000,.size =0 x00040000,1=.name =kernel,.offset=0 x0020000
10、0,.size=0 x00300000,2=.name =yaffs2,.offset=0 x00500000,.size =MTDPART_SIZ_FULL ;即将NAND flash分为3个分区,名称分别为uboot,kernel和yaffs2,偏移量分别为0,2M和5M,大小分别为256kb,3M和251M(MTDPART_SIZ_FULL就是剩余的全部空间),注 意:大小必须为128KB的整数倍,这是和uboot相关的。11 2)然后,修改同文件的下面代码(140行)static struct s3c2410_platform_nand smdk_nand_info=.tacls =1
11、0,.twrph0 =25,.twrph1 =10,.nr_sets=ARRAY_SIZE(smdk_nand_sets),.sets =smdk_nand_sets,;其中修改的值由NAND flash芯片手册查询得到的,简单的说,这些设置就是要按照NAND FLASH芯片的读写时序而已。12 3)修改s3c2410.c文件fhfh:/kernel/linux-2.6.30.4$vi drivers/mtd/nand/s3c2410.c最后,修改drivers/mtd/nand/s3c2410.c中752行s3c2410_nand_init_chip函数的语句改为(752行)chip-ecc
12、.mode =NAND_ECC_NONE;(原来为NAND_ECC_SOFT)这里不采用NAND flash的软件ECC校验码,因为在初始化的时候,uboot中有校验码,然后在后面yaffs2文件系统内核移植的时候,要选上采用S3C2440硬件校验码。13添加内核对添加内核对yaffs2的支持的支持 YAFFS(Yet Another Flash File System)是专门为NAND Flash存储器设计的嵌入式文件系统,遵循 GPL(General Public License)协议。在移植前,首先要为内核添加yaffs2文件系统的支持,首先下载yaffs2文件系统的补丁,可到官方下载页
13、下载,但是现在都用git工具下载了。1)需要使用git工具,如果没有安装,请先输入sudo apt-get install git2)下载yaffs2补丁fhfh:/kernel$git clone git:/www.aleph1.co.uk/yaffs2 Cloning into yaffs2.remote:Counting objects:6875,done.remote:Compressing objects:100%(4105/4105),done.remote:Total 6875(delta 5452),reused 3478(delta 2700)Receiving object
14、s:100%(6875/6875),3.40 MiB|541 KiB/s,done.Resolving deltas:100%(5452/5452),done.fhfh:/kernel$ls linux-2.6.30.4 linux-2.6.30.4.tar.bz2.sign yaffs2143)给2.6.30.4内核打上yaffs2的补丁,先进入yaffs2目录,fhfh:/kernel$cd yaffs2输入下面命令:fhfh:/kernel/yaffs2$./patch-ker.sh c m/home/fh/kernel/linux-2.6.30.4/Updating/home/fh/k
15、ernel/linux-2.6.30.4/fs/KconfigUpdating/home/fh/kernel/linux-2.6.30.4/fs/Makefile再进入内核根目录的fs目录,就可以看到一个yaffs2目录,说明已经为内核打上了支持yaffs2的补丁。注意:以后的操作都是在内核源代码的根目录下执行的。156)修改看门狗驱动drivers/watchdog/s3c2410_wdt.c 程序修改如下加粗部分(49行)#define CONFIG_S3C2410_WATCHDOG_ATBOOT (1)/启动看门狗,原来是(0)(50行)#define CONFIG_S3C2410_WA
展开阅读全文
链接地址:https://www.163wenku.com/p-4308048.html