新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > minis3c2440移植之內核移植

        minis3c2440移植之內核移植

        作者: 時間:2016-11-24 來源:網絡 收藏
        說在前頭:一般是基于支持s 3c2440的內核文件作相應的修改以適應自己的需求,如果單是純粹的修改不支持s3c2440的內核文件或者自己寫s3c2440的內核文件將會非常費時費事,也是一個人在短時間難以完成的工作。下面的修改也就是最基本的內核文件所必須的步驟,也就是我們所做的工作就是一個最小文件系統(最小文件系統:能是能使整個系統跑起來的系統軟件和硬件)。一般的編程思路也是首先實現一個最基本的功能,再此基礎上添加其他的功能,切忌一次性的寫完全部的代碼,然后已編譯出現了一大堆錯誤,那可就真的掛了。
        一、將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板子上的編譯環境和linux不一樣,應該是arm-linux-gcc便已命令。
        三、在linux-2.6.18的目錄下打開終端執行 cp arch/arm/configs/smdk2410_deconfig .config實際上這條操作是將smdk2410_deconfig重命名為.config,因為對配置文件的操作都會自動保存到當前目錄下并且命名為.config
        四、打開終端在linux-2.6.18的目錄下執行make menuconfig的操作,修改內核配置文件(說明:括號前面加*表示選中該選項)
        1、System Type ---> ARM system type (Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2---> 修改為(X) Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442(這是系統類型,改為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做分區了。
        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),動態內存的大小。
        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--->選中文件系統類型[*] Compressed ROM file system support (cramfs),燒錄的時候的文件系統為root. Cramfs。
        12、File systems---> Pseudo filesystems ---> 選中虛擬文件系統 [*] Virtual memory file system support (former shm fs)。
        五、在linux-2.6.18的目錄flash分區等配置文件的修改:

        1、在arch/arm/mach-s3c2410/目錄下的common-smdk2440.c中第194行中將修改為s3c24xx_init_clocks(12000000);//初始化實時時鐘的時間
        2、在arch/arm/mach-s3c2410/目錄下的common-smdk.c修改flash分區為:
        static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
        .name = "u-boot",//flash 的第一快分區名稱,在此位置燒錄u-boot
        .size = 0x60000, //第一快分區的大小
        .offset = 0, //偏移地址是0
        },
        [1] = {
        .name = "kernel", //flash 的第二快分區名稱,在次燒錄內核
        .size = 0x300000, //第二快分區的大小,必須大于內核代碼的大小
        .offset = 0x80000, //偏移地址
        },
        [2] = {
        .name="file system",//flash 的第三快分區名稱,在次燒錄文件系統
        .size=0x2000000,//第三快分區的大小,必須大于文件系統代碼的大小
        .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。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 武功县| 巴林右旗| 宜城市| 连云港市| 长泰县| 富平县| 新昌县| 右玉县| 黄石市| 攀枝花市| 五大连池市| 东丽区| 勃利县| 尚志市| 南丰县| 青州市| 长泰县| 溧水县| 屏边| 桃园县| 新津县| 那坡县| 鹤峰县| 齐齐哈尔市| 壶关县| 皮山县| 天台县| 福泉市| 崇仁县| 清涧县| 黑河市| 泸西县| 桦南县| 镇平县| 武胜县| 凤翔县| 英吉沙县| 阳泉市| 汤原县| 安徽省| 郴州市|