1. 程式人生 > >ARM開發板系統移植-----kernel的編譯

ARM開發板系統移植-----kernel的編譯

前面一篇文章介紹了開發板上系統軟體的第一部分--bootloader的編譯方法。

  背景:把bootloader燒寫到開發板的Nand Flash中後,開發板從Nand啟動,硬體會自動將bootloader載入到記憶體中執行,bootloader將板載資源都初始化完成後,會停留在一個命令列介面,接收並執行使用者敲入的命令。這時候使用者可以通過命令控制開發板,比如檢視引數列表:print、讀寫nand:nand read\nand write 、記憶體管理:mm、設定引數列表:setenv、網路下載:tftp、啟動核心:bootm等等。如果我們把一個編譯好的核心通過tftp伺服器下載到記憶體中,就可以通過bootm 命令啟動核心。

  好吧,囉嗦了、、、下面回到正題-----核心的編譯。

  編譯適合開發板的使用的核心映像其實很簡單,無非就是配置然後編譯。當然最麻煩的就是配置了,因為配置的過程需要了解板子上都有哪些資源,都是什麼型號,需要什麼驅動等等,然後根據這些瞭解到的資訊舍取。不過既然我們使用的是別人開發的開發板,那就說明廠家已經進行配置過,只要我們能拿到別人後的配置檔案,再通過自己稍加修改,就能省掉很多麻煩。進入頂層目錄,操作步驟如下:  

  1、配置核心:執行命令  make menuconfig ARCH=arm-linux 出現如下配置介面:

  

      前面說了,這裡可以根據板子的情況一項一項的選,但是筆者通常都是往下拉,找到一個 "Load an Alternate Configuration File"

的選項,使用廠家提供的配置檔案,這樣省時省力。配置完成後儲存退出,進行下一步。

  2、編譯核心:執行命令 :make uImage ARCH=arm CROSS_COMPILE=arm-linux- 。這是個挺漫長的過程,而且還可能出現編譯錯誤,比如筆者就遇到一個問題,mkimage not found ,其實就是一個打包工具沒找到,導致核心映像生成失敗。後來發現這個工具是在uboot/tools目錄中的,把工具複製到/bin目錄中再執行一次編譯命令即可。

  這兩個步驟完成後使用者可以在 arch/arm/boot/中找到uImage.bin檔案,這是一個可以被啟動的二進位制檔案,當然這裡面還沒有檔案系統的程式碼,這將是下一篇文章的內容。