ARM開發板系統移植-----kernel的編譯
背景:把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檔案,這是一個可以被啟動的二進位制檔案,當然這裡面還沒有檔案系統的程式碼,這將是下一篇文章的內容。