Linux-26242在FL2440开发板上的内核移植知识讲解_第1页
Linux-26242在FL2440开发板上的内核移植知识讲解_第2页
Linux-26242在FL2440开发板上的内核移植知识讲解_第3页
Linux-26242在FL2440开发板上的内核移植知识讲解_第4页
Linux-26242在FL2440开发板上的内核移植知识讲解_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Good is good, but better carries it.精益求精,善益求善。Linux-26242在FL2440开发板上的内核移植Linux-在FL2440开发板上的内核移植(经本人验证已经成功)自己在移植中遇到很多问题,写这篇文章的目的是为能为那些正在学习Linux内核移植的朋友提供参考。感谢互联网上无数作者的的无私奉献。宿主机:RedhatLinux9.0目标机:s3c2440交叉编译器:arm-linux-gcc-3.4.1要移植的内核版本:linux-文件系统类型:yaffs2(从网上下载cvs-root.tar.gz)1.解压linux

2、-,和arm-linux-gcc-3.4.1然后通过超级终端进入linux-目录下进行这样一步操作:#makedistclean2.进入linux-根目录,修改makefile文件vimakefile第193行改为:ARCH=armCROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-(告诉交叉编译器的路径CROSS_COMPILE根据你自己arm-linux-gcc-3.4.1安装的路径设置.)3.修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改NAND_FLASH

3、分区信息和硬件信息.根据FL2440的板子,我设置如下:找到staticstructmtd_partitionsmdk_default_nand_part的结构体,将内容修改为:0=.name=boot,.size=0 x00020000,.offset=0,1=.name=bootParam,.size=0 x00060000,.offset=0 x00020000,2=.name=Kernel,.size=0 x00300000,.offset=0 x00500000,3=.name=fs_yaffs,.size=0 x03c00000,.offset=0 x00800000,4=.nam

4、e=eboot,.size=0 x00080000,.offset=0 x04400000,5=.name=WINCE,.size=0 x03b80000,.offset=0 x04480000,注意:一定要和bootloader上的分类方法一样,并且根文件系统分区必须放在第4个目录中(即标号为3的那个分区)另外修改smdk_nand_info,如下:staticstructs3c2410_platform_nandsmdk_nand_info=.tacls=0,.twrph0=30,.twrph1=0,.nr_sets=ARRAY_SIZE(smdk_nand_sets),.sets=smd

5、k_nand_sets,;4.修改时钟:arch/arm/mach-s3c2440/mach-smdk2440.cstaticvoid_initsmdk2440_map_io(void)s3c24xx_init_io(smdk2440_iodesc,ARRAY_SIZE(smdk2440_iodesc);s3c24xx_init_clocks(12000000);外部的晶振的频率是12MHzs3c24xx_init_uarts(smdk2440_uartcfgs,ARRAY_SIZE(smdk2440_uartcfgs);5、修改机器码。进入内核目录,修改机器码跟bootloader的机器码一

6、致(FL2440为193)#cd./linux-#viarch/arm/tools/mach-types首先删除以下行:s3c2410ARCH_S3C2410S3C2410182然后将以下行:s3c2440ARCH_S3C2440S3C2440362修改为:s3c2440ARCH_S3C2440S3C24401936、修改nandflash的校验方式,去掉ECC校验在drivers/mtd/nand/s3c2410.c的第699行将chip-ecc.mode=NAND_ECC_SOFT;改为chip-ecc.mode=NAND_ECC_NONE;7、增加devfs文件管理器的支

7、持。#vifs/Kconfig找到以下行:menuPseudofilesystems在此行后面增加以下内容:configDEVFS_FSbool/devfilesystemsupport(OBSOLETE)defaultyconfigDEVFS_MOUNTboolAutomaticallymountatbootdefaultydependsonDEVFS_FS8、修改nandflash驱动,支持K9F1G08的nandflash。文件为:drivers/mtd/nand/nand_bbt.c#vidrivers/mtd/nand/nand_bbt.c将以下两个部分进行修改staticstruc

8、tnand_bbt_descrlargepage_memorybased=.options=0,.offs=0,.len=1,/原数值为2,支持128M的K9F1G08修改为1.pattern=scan_ff_pattern;staticstructnand_bbt_descrlargepage_flashbased=.options=NAND_BBT_SCAN2NDPAGE,.offs=0,.len=2,/原始值为2,支持128M的K9F1G08修改为1.pattern=scan_ff_pattern;9.复制编译配置文件到内核根目录下.cparch/arm/configs/

9、s3c2410_defconfig.config将config覆盖掉,他是内核的配置,我们在图形界面下配置内核后的最终保存结果就是变成了config文件,我们用s3c2410_defconfig的配置,是因为他接近我们的2440的配置,再此基础上修改内核配置。10.增加Yaffs2文件系统的支持下载Yaffs2:cvs-root.tar.gz解压cvs-root.tar.gz并将其加入linux内核(打补丁的方式):cdyaffs2./patch-ker.shc/home/dk/myboard/linux-/./patch-ker.shc后面跟的是你linux解压所在的路径.上

10、面命令完成下面三件事情:(1)修改内核fs/Kconfig增加一行:sourcefs/yaffs2/Kconfig(2)修改内核fs/Kconfig增加一行:ojb-$(CONFIG_YAFFS_FS)+=yaffs2/(3)在内核fs/目录下创建yaffs2目录将yaffs2源码目录下面的Makefile.kernel文件复制为内核fs/yaffs2/Makefie;将yaffs2源码目录的Kconfig文件复制到内核fs/yaffs2目录下;将yaffs2源码目录下的*.c*.h文件复制到内核fs/yaffs2目录下.11、配置内核,注意SystemType中,S3C2440中只选择以下内

11、容即可。#makemenuconfigARCH=arm*Enableloadablemodulesupport*Moduleunloading*Automatickernelmoduleloading选择这两个,剩下的可以去掉SystemType*S3C2410DMAsupport*SupportARM920TprocessorS3C2410Machines*SMDK2410/A9M2410S3C2440Machines*SMDK2440*SMDK2440withS3C2440CPUmoduleSystemType这部分,只选这些,其他可以全部去掉。(经过测试,必须SMDK2410的选项)Bo

12、otoption修改启动参数为:noinitrdroot=/dev/mtdblock5init=/linuxrcconsole=ttySAC0,115200可能根据个人板子的设置会不一样,我的是从NandFlash中加载文件系统,其中mtdblock5是存放我的Linux文件系统的分区。不过,在bootloader可以传递内核参数的情况下这个设置是无效的。UserspacebinaryformatsKernelsupportfora.outandECOFFbinaries(去除该选项,a.out和ECOFF是两种可执行文件的格式,在ARMLinux下一般都用ELF,所以这两种基本用不上。)De

13、viceDriversMemoryTechnologyDevice(MTD)support*MTDpartitioningsupportNANDDeviceSupportNANDFlashsupportforS3C2410/S3C2440SoCS3C2410NANDHardwareECC/这个要去掉*Networkdevicesupport*Ethernet(10or100Mbit)DM9000supportRealTimeClock“N”掉SetsystemtimefromRTConstartupandresume去掉红字的两个部分,黑子部分选上,其他的选择默认就可以了。Filesystem

14、s-Secondextendedfssupport#去除对ext2的支持Ext3journallingfilesystemsupport#去除对ext3的支持KernelautomountersupportKernelautomounterversion4support(alsosupportsv3)FilesysteminUserspacesupportPseudofilesystems-*Virtualmemoryfilesystemsupport(formershmfs)Userspace-drivenconfigurationfilesystem(EXPERIMENTAL)Miscel

15、laneousfilesystems-YAFFS2filesystemsupport“N”掉Autoselectyaffs2format和CacheshortnamesinRAM,因为这是给每页大于1024B的NANDFlash设计的JournallingFlashFileSystemv2(JFFS2)support(0)JFFS2debuggingverbosity(0=quiet,2=noisy)*JFFS2write-bufferingsupportJFFS2summarysupport(EXPERIMENTAL)JFFS2XATTRsupport(EXPERIMENTAL)*Advan

16、cedcompressionoptionsforJFFS2*JFFS2ZLIBcompressionsupport*JFFS2RTIMEcompressionsupport*JFFS2RUBINcompressionsupportJFFS2defaultcompressionmode(priority)NetworkFileSystems-NFSfilesystemsupport-以下最好选上,因为在挂载NFS时可能出现protocol不支持的情况-*ProvideNFSv3clientsupport*ProvideclientsupportfortheNFSv3ACLprotocolexte

17、nsion*ProvideNFSv4clientsupport(EXPERIMENTAL)*AllowdirectI/OonNFSfilesNFSserversupport*ProvideNFSv3serversupport*ProvideserversupportfortheNFSv3ACLprotocolextension*ProvideNFSv4serversupport(EXPERIMENTAL)ProvideNFSserveroverTCPsupport*RootfilesystemonNFS注:我后面用到的根文件系统是cramfs或yaffs12、编译内核.首先:#makeclean清除一些以前留下的文件,比如以前编译生成的目标文件,这一步必须要进行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论