![]() |
|
在電路板上移植U-Boot程序 |
|
U-Boot能夠支持多種體系結(jié)構(gòu)的處理器,支持的開發(fā)板也越來越多,因為Bootloader是完全依賴硬件平臺的,所以在新電路板上需要移植U-Boot程序。 開始移植U-Boot之前,要先熟悉硬件電路板和處理器,確認(rèn)U-Boot是否已經(jīng)支持新開發(fā)板的處理器和I/O設(shè)備。假如U-Boot已經(jīng)支持一塊非常相似的電路板,那么移植的過程將非常簡單。移植U-Boot工作就是添加開發(fā)板硬件相關(guān)的文件、配置選項,然后配置編譯。開始移植之前,需要先分析一下U-Boot已經(jīng)支持的開發(fā)板,比較出硬件配置接近的開發(fā)板。選擇的原則是,首先處理器相同,其次處理器體系結(jié)構(gòu)相同,然后是以太網(wǎng)接口等外圍接口相同。還要驗證一下這個參考開發(fā)板的U-Boot,至少能夠配置編譯通過。 以S3C2410處理器的FS2410開發(fā)板為例,U-Boot的高版本已經(jīng)支持SMDK2410開發(fā)板。我們可以基于SMDK2410移植,那么先把SMDK2410編譯通過。移植U-Boot的基本步驟如下。 (1)在頂層Makefile為開發(fā)板添加新的配置選項,以使用已有的配置項目為例: smdk2410_config : unconfig 參考上面兩行,添加下面兩行: fs2410_config : unconfig (2)創(chuàng)建一個新目錄存放開發(fā)板相關(guān)的代碼,并且添加新文件。 (3)為開發(fā)板添加新的配置文件?梢韵葟(fù)制參考開發(fā)板的配置文件,再修改,例如: $cp include/configs/smdk2410.h include/configs/fs2410.h 如果是為一顆新的CPU移植,還要創(chuàng)建一個新的目錄存放CPU相關(guān)的代碼。 (4)配置開發(fā)板。 $ make fs2410_config (5)編譯U-Boot。執(zhí)行make命令,編譯成功可以得到U-Boot映像。有些錯誤是與配置選項有關(guān)系的,通常打開某些功能選項會帶來一些錯誤,一開始可以盡量與參考板配置相同。 (6)添加驅(qū)動或者功能選項。在能夠編譯通過的基礎(chǔ)上,還要實現(xiàn)U-Boot的以太網(wǎng)接口、Flash擦寫等功能。對于FS2410開發(fā)板的以太網(wǎng)驅(qū)動和smdk2410完全相同,所以可以直接使用。CS8900驅(qū)動程序代碼包括: drivers/cs8900.c 對于Flash的選擇就麻煩多了,F(xiàn)lash芯片價格或者采購方面的因素都有影響。多數(shù)開發(fā)板大小、型號都不相同,所以還需要移植Flash的驅(qū)動。每種開發(fā)板目錄下一般都有flash.c這個文件,需要根據(jù)具體的Flash類型修改。例如: board/fs2410/flash.c (7)調(diào)試U-Boot源代碼,直到U-Boot在開發(fā)板上能夠正常啟動。調(diào)試的過程是很艱難的,需要借助工具,并且有些問題可能會困擾很長時間。 本文選自華清遠(yuǎn)見嵌入式培訓(xùn)教材《從實踐中學(xué)嵌入式Linux應(yīng)用程序開發(fā)》 熱點(diǎn)鏈接:
1、在電路板上移植U-Boot程序 |