新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > minis3c2440移植之內核移植

minis3c2440移植之內核移植

作者: 時間:2016-11-24 來源:網絡 收藏
說在前頭:一般是基于支持s 3c2440的內核文件作相應的修改以適應自己的需求,如果單是純粹的修改不支持s3c2440的內核文件或者自己寫s3c2440的內核文件將會非常費時費事,也是一個人在短時間難以完成的工作。下面的修改也就是最基本的內核文件所必須的步驟,也就是我們所做的工作就是一個最小文件系統(tǒng)(最小文件系統(tǒng):能是能使整個系統(tǒng)跑起來的系統(tǒng)軟件和硬件)。一般的編程思路也是首先實現一個最基本的功能,再此基礎上添加其他的功能,切忌一次性的寫完全部的代碼,然后已編譯出現了一大堆錯誤,那可就真的掛了。
一、將linux-2.6.18.tar內核源代碼的壓縮包拷貝到linux的根目錄下進行解壓,然后進入linux-2.6.18的目錄下修改配置文件。
二、修改Makefile配置文件
1、第176行 改為ARCH ?=arm
因為這是arm體系的,會生成arm目錄。
2、第177行 改為CROSS_COMPILE ?=arm-linux-
因為這是交叉編譯的需要,缺省的是gcc,但是在arm板子上的編譯環(huán)境和linux不一樣,應該是arm-linux-gcc便已命令。
三、在linux-2.6.18的目錄下打開終端執(zhí)行 cp arch/arm/configs/smdk2410_deconfig .config實際上這條操作是將smdk2410_deconfig重命名為.config,因為對配置文件的操作都會自動保存到當前目錄下并且命名為.config
四、打開終端在linux-2.6.18的目錄下執(zhí)行make menuconfig的操作,修改內核配置文件(說明:括號前面加*表示選中該選項)
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,與此同時去掉SMDK2410/A9M2410前面的“*”
3、Floating point emulation --->分別選中[*] NWFPE math emulation 和[*] Support extended precision這是浮點運算方式,在啟動Shell終端的時候用到。
4、Device Drivers --->Memory Technology Devices (MTD) --->分別選中[*] Memory Technology Device (MTD) support和[*] MTD partitioning support,選中它們就可以對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),動態(tài)內存的大小。
7、Device Drivers ---> Network device support ---> Ethernet (10 or 100Mbit) --- >選中[*] DM9000 support這是板子上網卡的型號。
8、Device Drivers --->Character devices ---> Serial drivers --->確認以下兩個選項都被選中(它們都是對串口的支持,缺省選中)
[*] Samsung S3C2410/S3C2440/S3C2442/S3C2412 Serial port support
[*] Support for console on S3C2410 serial port
9、File systems --->分被選中一下的選項,它們是對外部引腳的支持:[*] Ext2 extended attributes
[*] Ext2 execute in place support
[*] Ext3 journalling file system support
[*] Ext3 extended attributes
10、File systems--->Network File Systems --->去掉這兩個選項[ ] NFS server support和[ ]Root file system on NFS
11、File systems--->Miscellaneous filesystems--->選中文件系統(tǒng)類型[*] Compressed ROM file system support (cramfs),燒錄的時候的文件系統(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);//初始化實時時鐘的時間
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ū)名稱,在次燒錄內核
.size = 0x300000, //第二快分區(qū)的大小,必須大于內核代碼的大小
.offset = 0x80000, //偏移地址
},
[2] = {
.name="file system",//flash 的第三快分區(qū)名稱,在次燒錄文件系統(tǒng)
.size=0x2000000,//第三快分區(qū)的大小,必須大于文件系統(tǒng)代碼的大小
.offset=0xa00000, //偏移地址
}
};
六、編譯內核生成uImage
1、在linux-2.6.18下make clean;
2、然后將u-boot-2009.08/tools下的mkimage拷貝到/bin目錄下,因為uImage由二進制文件zImage生成,而此時/bin下沒有整個二進制命令。
3、然后再在linux-2.6.18下make uImage,編譯通過之后就會在linux-2.6.18/arch/arm/boot下生成二進制文件uImage。


評論


技術專區(qū)

關閉