<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          minis3c2440移植之內核移植

          作者: 時間:2016-11-24 來源:網絡 收藏
          說在前頭:一般是基于支持s 3c2440的內核文件作相應的修改以適應自己的需求,如果單是純粹的修改不支持s3c2440的內核文件或者自己寫s3c2440的內核文件將會非常費時費事,也是一個人在短時間難以完成的工作。下面的修改也就是最基本的內核文件所必須的步驟,也就是我們所做的工作就是一個最小文件系統(tǒng)(最小文件系統(tǒng):能是能使整個系統(tǒng)跑起來的系統(tǒng)軟件和硬件)。一般的編程思路也是首先實現(xiàn)一個最基本的功能,再此基礎上添加其他的功能,切忌一次性的寫完全部的代碼,然后已編譯出現(xiàn)了一大堆錯誤,那可就真的掛了。
          一、將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ū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();