Linux内核源码文件近2万个,分别位于17个子目录下,各个目录功能相对独立。Linux内核子目录结构见表12-1。
表12-1 Linux内核子目录结构
本文使用的是linux-2.6.26.8版本的内核。内核的源代码可以从http://www.kernel.org获取。
1)首先解压缩内核源代码,修改顶层的Makefile文件。
这里需要指定目标平台的体系结构和交叉编译工具链的路径。
2)修改linux-2.6.26.8/arch/arm/mach-s3c2440/mach-smdk2440.c文件。
指定开发板的晶振频率为12MHz。(www.xing528.com)
3)修改linux-2.6.26.8/arch/arm/plat-s3c24xx/common-smdk.c文件。
这里需要修改内核的MTD分区信息,定义NANDFlash分配空间。给内核分配2MB大小的空间,其余的全部留给根文件系统。其中,MTDPART_OFS_APPEND表示当前分区紧接着上一个分区;MTDPART_SIZ_FULL表示当前分区的大小为剩余的Flash空间。
下一步就是进行内核的配置了。这里可以参考S3C2410的开发板来进行配置和调整,内核自带了S3C2410开发板的配置文件。在内核源代码的根目录下执行make s3c2410_defconfig,生成一个基于S3C2410的开发板的默认配置文件。然后再执行make menuconfig生成一个基于S3C2410开发板的内核配置菜单。这里需要保留S3C2410/S3C2440CPU的相关配置选项、TCP/IP、NANDFlash驱动、USB驱动以及适合的文件系统类型。
本文采用的是JFFS2的文件系统类型。内核默认已经对JFFS2有着非常良好的支持,只需要在配置内核时加入相应的配置选项就可以了。
JFFS2文件的系统配置如下:
最后一步,只需执行makeuImage生成uImage文件,然后就可以通过U-boot固化到开发板中了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。