嵌入式Linux系统应用及项目实践-教学课件-丰海-第5章嵌入式Linux启动程序内核根文件系统

上传人:痛*** 文档编号:244850581 上传时间:2024-10-06 格式:PPT 页数:43 大小:1.98MB
返回 下载 相关 举报
嵌入式Linux系统应用及项目实践-教学课件-丰海-第5章嵌入式Linux启动程序内核根文件系统_第1页
第1页 / 共43页
嵌入式Linux系统应用及项目实践-教学课件-丰海-第5章嵌入式Linux启动程序内核根文件系统_第2页
第2页 / 共43页
嵌入式Linux系统应用及项目实践-教学课件-丰海-第5章嵌入式Linux启动程序内核根文件系统_第3页
第3页 / 共43页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,在线教务辅导网:,http:/,教材其余课件及动画素材请查阅在线教务辅导网,QQ:,349134187,或者直接输入下面地址:,http:/,1,第五章 嵌入式,Linux,启动引导程序、内核、文件系统,丰海,2,BootLoader,的基本概念,Boot Loader,就是在操作系统内核运行之前运行的一段引导系统启动的程序。通过这段小程序的作用是初始化硬件设备、建立内存空间的映射图,并将系统的软硬件环境带到一个合适的状态,以便为调用操作系统内核准备好正确的环境。在嵌入式世界,,Boot Loader,是严重地依赖于硬件而实现的,没有,Bootloader,,嵌入式系统就不能启动。由于作者在这方面的功力还不够,所以无法向读者介绍针对,TQ2440,开发板的,u-boot,移植,只介绍一下,u-boot,的使用基础和概念。,Bootloader,完成的主要功能就是将操作系统调进内存中执行,然后将控制权交给操作系统,嵌入式系统中常见的,Bootloader,有,Vivi,、,Blob,、,Redboot,、,U-Boot,等。,3,内核移植的平台,1.,首先验证所下载内核的完整性,2.,安装编译内核时所需要的工具:,3.,编译前的准备,4.,内核源代码的修改,修改平台输入时钟,Makefile,文件,、,机器,代,码加入,NAND FLASH,的分区信息,、,添加内核对,yaffs2,的支持,、修改看门狗驱动,5.,输入,make,进行编译,4,fhfh,:$,gpg,-verify linux-2.6.30.4.tar.bz2.sign,gpg,:,于,2009,年,07,月,31,日星期五,07,时,13,分,44,秒,CST,创建的签名,使用,DSA,,钥匙号,517D0F0E,gpg,:,完好的签名,来自于,“,Linux Kernel Archives Verification Key”,gpg,:,警告:这把密钥已经被它的持有者吊销了!,gpg,:,这表明这个签名有可能是伪造的。,gpg,:,吊销原因:密钥已泄漏,gpg,:,吊销注释:,Key was used to,autosigning,;,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,所示,则表示这个包是完整的。,5,6,安装编译内核时所需要的工具:,fhfh,:$,sudo,apt-get install libncurses5-dev,fhfh,:$,sudo,apt-get install,ncurses,-doc,fhfh,:$,sudo,apt-get install kernel-package,fhfh,:$,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,(,进入内核目录,实际上源代码是需要根据具体的硬件修改的,只是,TQ2440,的配套光盘中给的,2.6.30.4,内核源代码已经修改好了。,),fhfh:/kernel/linux-2.6.30.4$make clean,(清除以前的旧数据),fhfh:/kernel/linux-2.6.30.4$make,mrproper,(清理以前编译时留下的临时文件),7,内核源代码的修改,1.,修改根目录下的,Makefile,文件,Linux,内核源码目录下的,Makefile,文件,控制内核的编译,虽然我们在,x86,平台上进行编译,但是我们的目标平台是,ARM,,故必须进行交叉编译,将编译器改为,arm-,linux,-,,处理器的架构改为,arm,。,tq2440,的配套光盘中给的,2.6.30.4,内核源代码中的,命令:,vi,Makefile,修改:(,193,行),ARCH=arm,(,194,行),CROSS_COMPILE=arm-,linux,-,原因:指明体系结构为,arm,,采用的交叉编译器为,arm-,linux,-,,一定要改完,Makefile,文件,再执行,make,menuconfig,,否则,默认的配置平台就是针对,x86,架构的,PC,普通电脑,。,8,2.,修改平台输入时钟,命令:,fhfh:/kernel/linux-2.6.30.4$vi arch/arm/mach-s3c2440/mach-smdk2440.c,修改:(,163,行),smdk2440_map_io(),中的,s3c24xx_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,中的机器码一致,因为,uboot,源码中为,168,,所以要改成与,uboot,一致;,9,4.,修改,common-,smdk.c,文件,加入,NAND FLASH,的分区信息,命令:,fhfh:/kernel/linux-2.6.30.4$vi arch/arm/plat-s3c24xx/common-smdk.c,1),修改内容如下:(,109,行开始),static,struct,mtd_partition,smdk_default_nand_part,=,0=,.name=,uboot,.offset=0 x00000000,.size=0 x00040000,1=,.name=kernel,.offset=0 x00200000,.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,相关的。,10,2),然后,修改同文件的下面代码,(,140,行),static,struct,s3c2410_platform_nand,smdk_nand_info,=,.,tacls,=,10,.twrph0=,25,.twrph1=,10,.,nr_sets,=,ARRAY_SIZE(smdk_nand_sets,),.sets=,smdk_nand_sets,;,其中修改的值由,NAND flash,芯片手册查询得到的,简单的说,这些设置就是要按照,NAND FLASH,芯片的读写时序而已。,11,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.mode,=NAND_ECC_NONE;,(原来为,NAND_ECC_SOFT,),这里不采用,NAND flash,的软件,ECC,校验码,因为在初始化的时候,,uboot,中有校验码,然后在后面,yaffs2,文件系统内核移植的时候,要选上采用,S3C2440,硬件校验码。,12,添加内核对,yaffs2,的支持,YAFFS,(,Yet Another Flash File System,)是专门为,NAND Flash,存储器设计的嵌入式文件系统,遵循,GPL,(,General Public License,)协议。在移植前,首先要为内核添加,yaffs2,文件系统的支持,首先下载,yaffs2,文件系统的补丁,可到官方下载页,下载,但是现在都用,git,工具下载了,。,1,)需要使用,git,工具,如果没有安装,请先输入,sudo,apt-get install,git,2,),下载,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 objects: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 yaffs2,13,3,)给,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/kernel/linux-2.6.30.4/fs/Kconfig,Updating/home/fh/kernel/linux-2.6.30.4/fs/Makefile,再,进入内核根目录的,fs,目录,就可以看到一个,yaffs2,目录,说明已经为内核打上了支持,yaffs2,的补丁。,注意:以后的操作都是在内核源代码的根目录下执行的。,14,6,)修改看门狗驱动,drivers/watchdog/s3c2410_wdt.c,程序修改如下加粗部分,(,49,行),#define,CONFIG_S3C2410_WATCHDOG_ATBOOT,(1),/,启动看门狗,原来是(,0,),(,50,行),#define,CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME,(15),/,设置时间默认,15,秒没喂狗,,CPU,就重启(,55,行),static,int,soft_noboot,=0;,(,56,行),static,int,debug=0;,15,7.,打补丁,_,gnu_mcount_nc_patch,,解决,EABI,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!