基于S3C2410的嵌入式Linux系统构建
2.2 linux2.6.14内核的移植
2.2.1 内核的选择
linux内核版本的更新速度非常快,但linux的内核版本发行同linux对嵌入式处理器支持程度的发展是不同步的,因此,需要对特定的处理器体系结构选择合适的内核,并且根据其硬件功能部件加上相应的补丁。根据$3c2410的体系结构以及外围硬件特性,该系统采用linux2.6.14内核,所用的编译器为arm-linux-gcc一3.4.1版本;由于该系统采用的是yaffs2文件系统,因此需要从网上下载yaffs2.tar.gz文件,解压并执行./patch.ker.sh/i.inux2.6.14命令,对i.inux内核打补丁使其支持yaffs2文件系统。
2.2.2 内核的修改
(1)修改内核源码中makefile的交义编译项:
arm?=arm;cross一compile?=/usr/local/arm/3.4.1/bin/arm-linux一;
(2)在arch/arm/mach-s3c2410/devs.c文件中:
①增加头文件定义:
#includelinux/mtd/pa rtitions.hi>
#includelinux/mtd/nand.h>
#ineludeasm/arch/nand.h>
②增加static struct mtd-partition partition-info[]函数,建立分区表信息,分区内容如表1所示;
③加入nand flash分区:struet s3c24 1 o-nand-set nandset一{nr_partitions:5,partitions:partition-info,};
④建立nand flash 芯片支持struct s3c24 10-platform-nand superlpplatform={tacls:o,twrph0:30,twrphl:0,sets:&.nandset,nr-sets:1,};
⑤在nand flash驱动里加入nand flash芯片支持:在s3c-device-nand中增加.dev一{.platform一data一&super-lpplatform}。
(3)在arch/arm/machs3c2410/machsmdk2410.c中的一initdata部分增加s3c-device-nand,使内核启动时初始化nand flash信息。
(4)为了使内核支持devfs并在启动时在/sbin/init运行之前自动挂载/dev为devfs文件系统.修改fs/kconfig.并在menupseudo filesystetns下添加如下语句:config devfs_fsbooi/dev flie system support(obolete)default yconfig devfs-mountboolautomatically mount at bootdefault ydepends on devfs fs
2.2.3 内核的编译和加载
(1)执行make mrproper:编译内核前清理编译环境。
(2)执行make menuconfig:对内核进行配置是量体裁衣的过程.是十分复杂的过程,配置适合自已的内核可能需要多次重复的配置操作。以下根据该系统对部分配置做简单介绍: boot options一一一>default kernel command st ring
noinitrd root=/dev/mtdblock3 init=/linuxrc
console--ttysac0.1 15200
说明:mtdblock3代表nand fash第4个分区,他足该系统的root分区;
floating point emulation一一一>
[*]nwfpe math emulation
#选择在内核中使用nwfpe浮点模拟
file systems一一一>
>second extended fs support
#去除对ext2的支持
pseudo file
[*]/proc file system support
[*]virtual memory file system support(former
shm fs)
[*]/dev file system support(obsolete)
[*]automatically mount at boot(new)
这里会看到前面修改fs/kconfig的结果,devfs已经被支持。
miscellaneous filesystems一-- >
#选择yaffs2根文件系统
*>yaffs2 file system support
------51 2 byte/page devices
[*]lets yaffs do its own ecc
[ ]use the same ecc byte order as steven hill's nand-ecc.c
一一一2048 byte (or larger)/page devices
[*]autoselect yaffs2 format
[*]disable lazy loading
(1 0)reserved blocks for checkpointing
[*]turn off wide tnodes
[]force chunk erase check
[]cache short names in ram
network file systems---〉
*〉nfs file system support
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论