|  | |
| 在電路板上移植U-Boot程序 | |
| U-Boot能夠支(zhi)持多種(zhong)體系結(jie)構的處(chu)理器(qi),支(zhi)持的開(kai)發板也越來(lai)越多,因為Bootloader是完全依賴硬件平臺的,所以(yi)在新(xin)電(dian)路(lu)板上需要移植(zhi)U-Boot程序(xu)。 開(kai)始(shi)移植(zhi)U-Boot之前(qian),要先熟悉硬(ying)件(jian)電(dian)路板(ban)和處(chu)理(li)器,確認U-Boot是否已(yi)(yi)(yi)經(jing)支(zhi)持新開(kai)發(fa)(fa)板(ban)的(de)(de)(de)處(chu)理(li)器和I/O設備(bei)。假如U-Boot已(yi)(yi)(yi)經(jing)支(zhi)持一(yi)塊非(fei)常(chang)相(xiang)(xiang)似(si)的(de)(de)(de)電(dian)路板(ban),那(nei)么移植(zhi)的(de)(de)(de)過程將非(fei)常(chang)簡單(dan)。移植(zhi)U-Boot工作就是添加開(kai)發(fa)(fa)板(ban)硬(ying)件(jian)相(xiang)(xiang)關(guan)的(de)(de)(de)文件(jian)、配置(zhi)(zhi)選項,然(ran)后配置(zhi)(zhi)編譯。開(kai)始(shi)移植(zhi)之前(qian),需(xu)要先分析(xi)一(yi)下(xia)U-Boot已(yi)(yi)(yi)經(jing)支(zhi)持的(de)(de)(de)開(kai)發(fa)(fa)板(ban),比較(jiao)出(chu)硬(ying)件(jian)配置(zhi)(zhi)接(jie)近的(de)(de)(de)開(kai)發(fa)(fa)板(ban)。選擇的(de)(de)(de)原則(ze)是,首先處(chu)理(li)器相(xiang)(xiang)同,其次處(chu)理(li)器體系結構相(xiang)(xiang)同,然(ran)后是以(yi)太網(wang)接(jie)口(kou)(kou)等外圍接(jie)口(kou)(kou)相(xiang)(xiang)同。還要驗證一(yi)下(xia)這個參考開(kai)發(fa)(fa)板(ban)的(de)(de)(de)U-Boot,至少能夠配置(zhi)(zhi)編譯通過。 以S3C2410處理(li)器的FS2410開(kai)發板為例,U-Boot的高版本已經支持SMDK2410開(kai)發板。我們可以基于SMDK2410移(yi)植,那么先把SMDK2410編譯通過。移(yi)植U-Boot的基本步驟如下。 (1)在頂(ding)層(ceng)Makefile為開(kai)發板(ban)添(tian)加新的配置(zhi)選項,以(yi)使用已有(you)的配置(zhi)項目為例:     smdk2410_config   :       unconfig 參考上面(mian)兩行(xing),添加下面(mian)兩行(xing):     fs2410_config   :       unconfig     (2)創建一個新目錄存放開發板相關的代碼,并且添加新文件。 (3)為(wei)開發板(ban)添加新(xin)的配置文件。可以先(xian)復制參考開發板(ban)的配置文件,再(zai)修(xiu)改,例如:   $cp include/configs/smdk2410.h include/configs/fs2410.h  如果是為一(yi)顆新(xin)的(de)CPU移植,還要創建(jian)一(yi)個新(xin)的(de)目錄(lu)存放(fang)CPU相關(guan)的(de)代碼(ma)。 (4)配置開發板。 $ make fs2410_config (5)編譯U-Boot。執(zhi)行make命令(ling),編譯成功可以(yi)得到U-Boot映像(xiang)。有些(xie)錯(cuo)誤是(shi)與配(pei)置(zhi)選(xuan)項(xiang)有關系的(de),通常打開(kai)某些(xie)功能選(xuan)項(xiang)會帶來一些(xie)錯(cuo)誤,一開(kai)始可以(yi)盡量(liang)與參(can)考板配(pei)置(zhi)相同。 (6)添加驅(qu)動或者(zhe)功(gong)能(neng)(neng)選項(xiang)。在能(neng)(neng)夠編譯(yi)通過的(de)基(ji)礎上,還要(yao)實現U-Boot的(de)以太網(wang)接口、Flash擦寫等功(gong)能(neng)(neng)。對于FS2410開發板的(de)以太網(wang)驅(qu)動和smdk2410完全相同,所以可(ke)以直接使(shi)用(yong)。CS8900驅(qu)動程序代碼包括:     drivers/cs8900.c 對于(yu)Flash的選擇就麻煩(fan)多(duo)了,Flash芯片價格或者采(cai)購方面的因素都(dou)有影響。多(duo)數(shu)開發(fa)板(ban)大(da)小、型號都(dou)不相同,所以還需(xu)要移植Flash的驅動。每種開發(fa)板(ban)目錄下一般都(dou)有flash.c這個(ge)文件,需(xu)要根據具體的Flash類型修改。例如: board/fs2410/flash.c   (7)調試U-Boot源代碼,直到U-Boot在開發板上(shang)能夠正常啟動。調試的(de)過程是很艱(jian)難的(de),需(xu)要借助工具,并且有(you)些問題可能會(hui)困擾很長時間(jian)。 本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》 熱(re)點鏈接:             
         1、在電路板上移植U-Boot程序 |