linux-2.6.32在mini2440開發板上移植(0)之內核準備與編譯

編者:這裏使用內核的版本爲2.6.32,保持和板子原來自帶的內核相同。因爲該內核已經支持了mini2440,所以我們應該做一下基本處理。另外,這裏的目標就是能建立一個可以運行的內核,當然可能這個內核只是可以運行,其實也沒運行,沒文件系統,不能提供什麼實際的功能。另外我們的移植是以SMDK2440爲藍本進行的。

1、獲取內核源碼

方法很多,找個一個2.6.32的就可以,然後進行解壓。

2、指定交叉編譯變量

修改Makefile的這兩句
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-

ARCH 是指定目標平臺爲arm,CROSS_COMPILE 是指定交叉編譯器,這裏指定的是系統默認的交叉編譯器,如要使用其它的,則要把編譯器的全路徑在這裏寫出。

3、試編譯

#make s3c2410_defconfig;使用缺省內核配置文件,s3c2410_defconfig 是SMDK2440 的缺省配置文件
#make   ;編譯時間較長

4、克隆建立自己的目標平臺

 

4.1 關於機器碼
        以上編譯是用的Linux 內核本身支持的目標平臺配置,它對應於SMDK2440。現在我們要參考SMDK2440 加入自已的開發板平臺,我們使用的是mini2440,因此取名爲MINI2440。需要說明的是,Linux-2.6.32.2 本身已經包含了mini2440 的支持,這樣就出現了重名。那怎麼辦呢?在此我們依然使用MINI2440 這個名稱,只不過在後面的移植步驟中,把原始內核自帶的mini2440 代碼部分直接刪除就可以了,以免和我們自己移植的混淆了。首先,很關鍵的一點,內核在啓動時,是通過bootloader 傳入的機器碼(MACH_TYPE)確定應啓動哪種目標平臺的,友善之臂已經爲mini2440 申請了自己的機器碼爲1999,它位於linux-2.6.32.2/arch/arm/tools/mach_types 文件中。
接下來, 我們注意到linux-2.6.32.2/arch/arm/mach-s3c2440 目錄下有個mach-mini2440.c 文件,它其實就是國外愛好者爲mini2440 移植添加的主要內容了,但我們不用它,把它直接刪除。將linux-2.6.32.2/arch/arm/mach-s3c2440/目錄下的mach-smdk2440.c 複製一份。命名爲mach-mini2440.c , 找到MACHINE_START(S3C2440, "SMDK2440") , 修改爲MACHINE_START(MINI2440, "FriendlyARM Mini2440 development board")。

4.2 修改時鐘源頻率
現在再來修改系統時鐘源, 在mach-mini2440.c( 就是我們剛剛通過複製mach-smdk2440.c 得到的)的第160 行static void __init smdk2440_map_io(void)函數中,把其中的16934400(代表原SMDK2440 目標板上的晶振是16.9344MHz)改爲mini2440 開發板上
實際使用的12000000。

4.3 從SMDK2440 到MINI2440
因爲我們要製作自己的mini2440 平臺體系,因此把mach-mini2440.c 中所有的smdk2440 字樣改爲mini2440,可以使用批處理命令修改,在vim 的命令模式下輸入:
%s/smdk2440/mini2440/g上面這句的意思是:把所有和“smdk2440”匹配的字符串全部替換爲“mini2440”,前面的“%s“代表字符串匹配,最後的“g”代表global,是全局的意思,輸入如圖除此之外,還有一個地方需要改動,在mini2440_machine_init(void)函數中,把smdk_machine_init()函數調用註釋掉,因爲我們後面會編寫自己的初始化函數,不需要調用smdk2440 原來的。
4.4 編譯測試
在Linux 源代碼根目錄下執行
#make mini2440_defconfig ;使用Linux 官方自帶的mini2440 配置
#make zImage ;編譯內核,時間較長,最後會生成zImage
重新編譯並把生成的內核文件zImage(位於arch/arm/boot 目錄)下到板子中,可以看到內核已經可以正常啓動了,如下圖,但此時大部分硬件驅動還沒加,並且也沒有文件系統,因此還無法登陸。

PS:文中提及使用vi,或vim,其實我個人感覺使用gedit纔是最好的,這個和windows下的文本文件運用差不多。彩色顯示,支持很多功能。不支持的地方,當然還是vi了。
發佈了94 篇原創文章 · 獲贊 96 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章