最近在研究uboot,做正式樣機(jī)需要移植uboot,而不用自己寫(xiě)的boot程序,F(xiàn)將搭建toolchain的過(guò)程記錄下來(lái),其實(shí)用Ubuntu操作系統(tǒng)搭建交叉編譯非常簡(jiǎn)單。分下面幾步;
1.安裝Ubuntu系統(tǒng),這個(gè)不用多說(shuō),下載,安裝在虛擬機(jī)上就可以直接用。
2.安裝toolchain交叉編譯環(huán)境。Ubuntu系統(tǒng)可以直接設(shè)置軟件源,直接用命令行下載自己所需要的軟件,很方便。
把這句話寫(xiě)入軟件源 “deb http://download.analog.com/27516/distros/debian stable main”,手冊(cè)上說(shuō)可以直接用命令行添加,但是我試了很多次在命令行下直接添加老是出錯(cuò),干脆在圖形界面下直接添加了。
接著執(zhí)行以下兩個(gè)命令:
sudo apt-get update
sudo apt-get install blackfin-toolchain-uclinux blackfin-toolchain-linux-uclibc
前面一句是更新軟件,后一句說(shuō)明是安裝blackfin-toolchain-uclinux 和 blackfin-toolchain-linux-uclibc兩個(gè)工具,這就是交叉編譯工具。一般不會(huì)出錯(cuò)。但是有的Ubuntu版本會(huì)提示你沒(méi)有安裝什么什么軟件,但是它也會(huì)提示你該怎么做,你就按它提示的做就行了,一般就是輸入一個(gè)命令的事,很簡(jiǎn)單,這里不詳細(xì)說(shuō)了。
3.安裝完交叉編譯環(huán)境之后,會(huì)在/opt目錄下生成一個(gè)uclinux文件夾,此文件夾下有兩個(gè)文件夾,分別存放安裝好的文件。系統(tǒng)默認(rèn)是安裝到這里的,當(dāng)然你也可以改變安裝目錄,個(gè)人感覺(jué)無(wú)所謂。
這時(shí),要記得設(shè)置環(huán)境變量,即設(shè)置路徑,輸入以下命令:
export PATH=$PATH:/opt/uClinux/bfin-uclinux/bin:/opt/uClinux/bfin-linux-uclibc/bin
執(zhí)行完畢之后,可以查看以下路徑是不是加進(jìn)去了,直接輸入export就可以查看路徑是否添加成功。
到現(xiàn)在為止,交叉編譯環(huán)境已經(jīng)建立完畢,可以直接使用了,是不是比RedHat系統(tǒng)要方便很多啊,呵呵
其實(shí)我寫(xiě)的這些在發(fā)行手冊(cè)上都是有的,而且比我寫(xiě)的要詳細(xì)的多,不過(guò)是英文版的,初學(xué)者可以參考以下我寫(xiě)的,然后去直接看文檔,那樣更快捷。
編譯uboot:
1.下載uboot最新版本。打開(kāi)Blackfin的開(kāi)源網(wǎng)站的uboot頁(yè)面http://blackfin.uclinux.org/gf/project/u-boot/
左邊欄有個(gè)SVN,點(diǎn)開(kāi)。找到Anonymous users stuck behind a firewall may use:
svn checkout svn://firewall-sources.blackfin.uclinux.org:80/svn/u-boot/trunk u-boot復(fù)制后半部分svn checkout svn://firewall-sources.blackfin.uclinux.org:80/svn/u-boot/trunk u-boot直接放在Ubuntu命令行,就可以直接下載uboot的最新版本了。
2.配置參數(shù)。這里下載的應(yīng)該是個(gè)文件夾,所以不用解壓,直接cd 到文件里面。配置參數(shù),以bf537為例,輸入下面命令:make bf537-stamp_config
make clean
3.make ,這一步直接make就行了。make成功會(huì)在當(dāng)前目錄下生成幾個(gè)以u(píng)boot開(kāi)頭的文件,分別是System.map u-boot u-boot.bin u-boot.hex u-boot.ldr u-boot.ldr.hex u-boot.ldr.srec u-boot.map u-boot.srec 這幾個(gè)文件中我們只關(guān)注u-boot.bin和u-boot.ldr就可以。*.bin文件可以在bypass模式下運(yùn)行,在Flash模式下只能用ldr文件。因?yàn)閎ypass模式是代碼直接在Flash里面執(zhí)行,所以要二進(jìn)制文件。如果加載模式是從flash引導(dǎo)的話,代碼被加載到RAM中去執(zhí)行,所以這時(shí)要用ldr格式,放在Flash上的文件也是LDR格式的。
這就是大體流程,還是那句話,英文版的發(fā)布文檔比這里要詳細(xì)的多,此處只做簡(jiǎn)單參考。