標籤:linux核心 移植 arm
最近一段時間一直在學習向TQ2440開發板移植核心、移植驅動。真心覺得這方面的知識有很大的難度。但是從另一角度去看,難度越大,能力提升的空間就越大!!
1、解壓源碼
從網上下載一個Linux 核心,我是用的是Linux-2.6.20.4。然後用命令解壓。建議解壓到“/home/使用者名稱”目錄下。我的核心源碼存放在:
2、添加對ARM的支援
因為所用的是TQ2440開發板,屬於ARM9。因此要在系統中添加對ARM的支援。
方法:進入核心源碼目錄,
修改“Makefile”檔案,將193行的“ARCH ?=(SUBARCH)”與194行“CROSS_COMPILE?=”將其修改為()
也可以在第一次使用“make menuconfig”時使用“make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig ”來代替。記得有一次忘記了修改對ARM的支援,結果在配置的時候好多的選項都沒有,一開始還以為是核心的原因,於是重新下載了核心,結果還是一樣。愚蠢的錯誤啊!!!!貼出來,刺激一下自己!
修改前的配置菜單:
修改後的配置菜單:
3、交叉編譯器環境搭建4、時鐘頻率修改
TQ2440使用的是12MHz的外部時鐘源,而相應的設定檔中是16.9344MHz,開啟下面的檔案:
修改下面的函數:
5、修改機器碼
在TQ2440使用的uboot中設定的機器碼是168,所以核心這裡需要修改機器碼,否則會出現不能啟動的情況。此參數儲存在核心源碼的“arch/arm/tools/mach-tupes”中。在編譯第一個核心的時候,核心能成功下載到開發板上,但是就是無法啟動。剛開始還認為是核心編譯太大的原因,裁剪了很多的東西之後,還是無法啟動。經一個隊友提示“是否改了機器碼”,我還很自信的說“已經改過了”,到了最後查看一下檔案,機器碼木有改啊~~~~~~~~~~~
6、Nand Flash 驅動移植
進入核心源碼“arch/arm/plat-s3c24xx/common-smdk.c”,修改如下兩個位置的代碼(修改後的)
如:
(1)
(2)
然後開啟
修改第752行的代碼:
7、添加對yaffs的支援
可以通過命令來擷取yaffs的源碼:git clone git://www.alcphl.co.uk/yaffs2
然後進入到yaffs2目錄下,打補丁到核心中,使用下面的命令:
./patch-ker.sh c m /home/xg/linux_arm/linux-2.6.30.4/(核心所在的目錄)