基于S3C2410的嵌入式Linux系統(tǒng)構(gòu)建
2.2 linux2.6.14內(nèi)核的移植
2.2.1 內(nèi)核的選擇
linux內(nèi)核版本的更新速度非??欤玪inux的內(nèi)核版本發(fā)行同linux對(duì)嵌入式處理器支持程度的發(fā)展是不同步的,因此,需要對(duì)特定的處理器體系結(jié)構(gòu)選擇合適的內(nèi)核,并且根據(jù)其硬件功能部件加上相應(yīng)的補(bǔ)丁。根據(jù)$3c2410的體系結(jié)構(gòu)以及外圍硬件特性,該系統(tǒng)采用linux2.6.14內(nèi)核,所用的編譯器為arm-linux-gcc一3.4.1版本;由于該系統(tǒng)采用的是yaffs2文件系統(tǒng),因此需要從網(wǎng)上下載yaffs2.tar.gz文件,解壓并執(zhí)行./patch.ker.sh/i.inux2.6.14命令,對(duì)i.inux內(nèi)核打補(bǔ)丁使其支持yaffs2文件系統(tǒng)。
2.2.2 內(nèi)核的修改
(1)修改內(nèi)核源碼中makefile的交義編譯項(xiàng):
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[]函數(shù),建立分區(qū)表信息,分區(qū)內(nèi)容如表1所示;
③加入nand flash分區(qū):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驅(qū)動(dòng)里加入nand flash芯片支持:在s3c-device-nand中增加.dev一{.platform一data一&super-lpplatform}。
(3)在arch/arm/machs3c2410/machsmdk2410.c中的一initdata部分增加s3c-device-nand,使內(nèi)核啟動(dòng)時(shí)初始化nand flash信息。
(4)為了使內(nèi)核支持devfs并在啟動(dòng)時(shí)在/sbin/init運(yùn)行之前自動(dòng)掛載/dev為devfs文件系統(tǒng).修改fs/kconfig.并在menupseudo filesystetns下添加如下語(yǔ)句:config devfs_fsbooi/dev flie system support(obolete)default yconfig devfs-mountboolautomatically mount at bootdefault ydepends on devfs fs
2.2.3 內(nèi)核的編譯和加載
(1)執(zhí)行make mrproper:編譯內(nèi)核前清理編譯環(huán)境。
(2)執(zhí)行make menuconfig:對(duì)內(nèi)核進(jìn)行配置是量體裁衣的過(guò)程.是十分復(fù)雜的過(guò)程,配置適合自已的內(nèi)核可能需要多次重復(fù)的配置操作。以下根據(jù)該系統(tǒng)對(duì)部分配置做簡(jiǎn)單介紹: boot options一一一>default kernel command st ring
noinitrd root=/dev/mtdblock3 init=/linuxrc
console--ttysac0.1 15200
說(shuō)明:mtdblock3代表nand fash第4個(gè)分區(qū),他足該系統(tǒng)的root分區(qū);
floating point emulation一一一>
[*]nwfpe math emulation
#選擇在內(nèi)核中使用nwfpe浮點(diǎn)模擬
file systems一一一>
>second extended fs support
#去除對(duì)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)
這里會(huì)看到前面修改fs/kconfig的結(jié)果,devfs已經(jīng)被支持。
miscellaneous filesystems一-- >
#選擇yaffs2根文件系統(tǒng)
*>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操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論