新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > minis3c2440移植之內(nèi)核移植

minis3c2440移植之內(nèi)核移植

作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏
說(shuō)在前頭:一般是基于支持s 3c2440的內(nèi)核文件作相應(yīng)的修改以適應(yīng)自己的需求,如果單是純粹的修改不支持s3c2440的內(nèi)核文件或者自己寫(xiě)s3c2440的內(nèi)核文件將會(huì)非常費(fèi)時(shí)費(fèi)事,也是一個(gè)人在短時(shí)間難以完成的工作。下面的修改也就是最基本的內(nèi)核文件所必須的步驟,也就是我們所做的工作就是一個(gè)最小文件系統(tǒng)(最小文件系統(tǒng):能是能使整個(gè)系統(tǒng)跑起來(lái)的系統(tǒng)軟件和硬件)。一般的編程思路也是首先實(shí)現(xiàn)一個(gè)最基本的功能,再此基礎(chǔ)上添加其他的功能,切忌一次性的寫(xiě)完全部的代碼,然后已編譯出現(xiàn)了一大堆錯(cuò)誤,那可就真的掛了。
一、將linux-2.6.18.tar內(nèi)核源代碼的壓縮包拷貝到linux的根目錄下進(jìn)行解壓,然后進(jìn)入linux-2.6.18的目錄下修改配置文件。
二、修改Makefile配置文件
1、第176行 改為ARCH ?=arm
因?yàn)檫@是arm體系的,會(huì)生成arm目錄。
2、第177行 改為CROSS_COMPILE ?=arm-linux-
因?yàn)檫@是交叉編譯的需要,缺省的是gcc,但是在arm板子上的編譯環(huán)境和linux不一樣,應(yīng)該是arm-linux-gcc便已命令。
三、在linux-2.6.18的目錄下打開(kāi)終端執(zhí)行 cp arch/arm/configs/smdk2410_deconfig .config實(shí)際上這條操作是將smdk2410_deconfig重命名為.config,因?yàn)閷?duì)配置文件的操作都會(huì)自動(dòng)保存到當(dāng)前目錄下并且命名為.config
四、打開(kāi)終端在linux-2.6.18的目錄下執(zhí)行make menuconfig的操作,修改內(nèi)核配置文件(說(shuō)明:括號(hào)前面加*表示選中該選項(xiàng))
1、System Type ---> ARM system type (Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2---> 修改為(X) Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442(這是系統(tǒng)類型,改為s3c2440的支持)。
2、System Type --->S3C24XX Implementations--->選中為
[*] SMDK2440和[*] SMDK2440 with S3C2440 CPU module,與此同時(shí)去掉SMDK2410/A9M2410前面的“*”
3、Floating point emulation --->分別選中[*] NWFPE math emulation 和[*] Support extended precision這是浮點(diǎn)運(yùn)算方式,在啟動(dòng)Shell終端的時(shí)候用到。
4、Device Drivers --->Memory Technology Devices (MTD) --->分別選中[*] Memory Technology Device (MTD) support和[*] MTD partitioning support,選中它們就可以對(duì)flash做分區(qū)了。
5、Device Drivers ---> Memory Technology Devices (MTD) ---> NAND Flash Device Drivers --->分別選中[*] NAND Device Support和[*] NAND Flash support for S3C2410/S3C2440 SoC和[*] S3C2410 NAND driver debug,作用是支持s3c2440的nand flash。
6、Device Drivers ---> Block devices --->分別選中[*] Loopback device support和[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support,然后修改為(65535) Default RAM disk size (kbytes),動(dòng)態(tài)內(nèi)存的大小。
7、Device Drivers ---> Network device support ---> Ethernet (10 or 100Mbit) --- >選中[*] DM9000 support這是板子上網(wǎng)卡的型號(hào)。
8、Device Drivers --->Character devices ---> Serial drivers --->確認(rèn)以下兩個(gè)選項(xiàng)都被選中(它們都是對(duì)串口的支持,缺省選中)
[*] Samsung S3C2410/S3C2440/S3C2442/S3C2412 Serial port support
[*] Support for console on S3C2410 serial port
9、File systems --->分被選中一下的選項(xiàng),它們是對(duì)外部引腳的支持:[*] Ext2 extended attributes
[*] Ext2 execute in place support
[*] Ext3 journalling file system support
[*] Ext3 extended attributes
10、File systems--->Network File Systems --->去掉這兩個(gè)選項(xiàng)[ ] NFS server support和[ ]Root file system on NFS
11、File systems--->Miscellaneous filesystems--->選中文件系統(tǒng)類型[*] Compressed ROM file system support (cramfs),燒錄的時(shí)候的文件系統(tǒng)為root. Cramfs。
12、File systems---> Pseudo filesystems ---> 選中虛擬文件系統(tǒng) [*] Virtual memory file system support (former shm fs)。
五、在linux-2.6.18的目錄flash分區(qū)等配置文件的修改:

1、在arch/arm/mach-s3c2410/目錄下的common-smdk2440.c中第194行中將修改為s3c24xx_init_clocks(12000000);//初始化實(shí)時(shí)時(shí)鐘的時(shí)間
2、在arch/arm/mach-s3c2410/目錄下的common-smdk.c修改flash分區(qū)為:
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "u-boot",//flash 的第一快分區(qū)名稱,在此位置燒錄u-boot
.size = 0x60000, //第一快分區(qū)的大小
.offset = 0, //偏移地址是0
},
[1] = {
.name = "kernel", //flash 的第二快分區(qū)名稱,在次燒錄內(nèi)核
.size = 0x300000, //第二快分區(qū)的大小,必須大于內(nèi)核代碼的大小
.offset = 0x80000, //偏移地址
},
[2] = {
.name="file system",//flash 的第三快分區(qū)名稱,在次燒錄文件系統(tǒng)
.size=0x2000000,//第三快分區(qū)的大小,必須大于文件系統(tǒng)代碼的大小
.offset=0xa00000, //偏移地址
}
};
六、編譯內(nèi)核生成uImage
1、在linux-2.6.18下make clean;
2、然后將u-boot-2009.08/tools下的mkimage拷貝到/bin目錄下,因?yàn)閡Image由二進(jìn)制文件zImage生成,而此時(shí)/bin下沒(méi)有整個(gè)二進(jìn)制命令。
3、然后再在linux-2.6.18下make uImage,編譯通過(guò)之后就會(huì)在linux-2.6.18/arch/arm/boot下生成二進(jìn)制文件uImage。


評(píng)論


技術(shù)專區(qū)

關(guān)閉