幾經艱辛,終于基本完成了u-boot在s3c44b0的移植工作,在些記錄一下在移植過程中所碰到的困難和解決方法(一些心得),作為日后參考之用,也希望能夠幫到其它有需要的人^_^。
1.來由:在我搞完ucos后(本來我是想學uclinux的,不過在對系統一無所知的情況下,還是先學一下ucos比較實際^_^,從中也可以對系統有個清晰的概念),我意識到要搞系統的話一個功能強大的bootloader是必不可少的,而我的板上自帶的是armboot(其實我個人覺得應用在ARM上的話armboot已經足夠了,畢竟u-boot也是從armboot中發展過來的,純屬個人意見),如果我的板上自帶光盤有已經移植好的armboot源代碼供我參考的話,我想我也不會花這么多時間去搞u-boot,可恨的是我的光盤上只有armboot.bin這個二進制文件,而沒有源文件,沒辦法,我下定主意自己搞一個,考慮了一番后我選擇了u-boot,畢竟參考資料相對比較多,再我學完u-boot后再回頭看armboot,簡直是一個爐里出的餅,這是后話。
2.準備: 說是容易,做起來卻挺難。因為編譯u-boot要在linux環境下,而不能在我們平時所熟悉的ads下那么直觀。首先要建立好交叉編譯環境,這個交叉編譯環境可以自己來做,不過完全沒必要,而且難度也挺大,一般是下載人家編譯好的工具。我剛開始在這里就郁悶了很久,現在會了以后覺得原來就是這么簡單,在些我把方法說清楚,希望不會再有人為這個問題郁悶了^_^
1) 在網上下載一個u-boot源代碼,我用的是1.1.2版本的,的應該是1.1.4的吧,其實差不多,那就像我那樣下載一個1.1.2版本的吧。把源文件解壓,這個應該不用說了吧,學過linux的人應該會,不會的話我想你繼續做下去也困難,那就先裝個linux用下吧(我用的是RedHat的,哦對了,編譯程序是需要gcc編譯器的,所以安裝方式一定要選擇工作站哦^_^)。好了,解壓后你發現在u-boot.1.1.2目錄下有Makefile這個文件吧?讓我們看看它里面的內容,簡單的方法就是vi Makefile了。我們要看的是它選擇的是哪一個交叉編譯器。可以看到這一項:ifeq ($(ARCH),arm)CROSS_COMPILE = arm-linux-看到吧,也就是說這里所用的交叉編譯器是arm-linux-gcc了,(u-boot默認是用這個的,也有用arm-elf-gcc的,網上有個工具包arm-elf-tools-20030314.sh,我試過用它來編譯,沒有問題,順便提一下,arm-elf-gcc是用來編譯uClinux內核的工具來的)那你就下載一個arm-linux-的交叉編譯器吧,我是在網上下載cross-2.95.3.tar.bz2這個文件,然后解壓得到2.95.3版本的交叉編譯工具的,具體設置如下(參考網上資料)
2)在宿主機上建立arm-linux-gcc交叉編譯環境在RedHat Linux系統下以root用戶登錄,將cross-2.95.3.tar.bz2文件復制到/目錄下,安裝:# tar jxvf cross-2.95.3.tar.bz2這個命令會在你的/usr/local/arm/2.95.3目錄下安裝 arm-linux-gcc 交叉編譯程序,然后在PATH變量中添加一項:/usr/local/arm/2.95.3/bin.[root@localhost root]# export ATH=/usr/local/arm/2.95.3/bin:$PATH或把PATH=/usr/local/arm/2.95.3/bin:$PATH添加到/ETC/bash_profile文件中或者在/etc/bashrc文件中添加一項:export PATH=/usr/local/arm/2.95.3/bin:$PATH測試:把終端關閉,重新打開后執行如下命令:# arm-linux-gcc –v好了,建立好交叉編譯環境后可以試著編譯u-boot了
這里提幾個注意點:1.不可用winRAR解壓u-boot-1.1.2.tar.bz2或u-boot-1.1.2.tar.gz這種文件(就個可能新手會犯,一般熟悉linux命令的人應該都不會這樣做吧,在此還是要提一下)2.可能下載的文件有一些中間文件會阻礙編譯的運行,所以在編譯前來個徹底清除,在u-boot.1.1.2目錄下運行命令:make distclean (其實這個命令在Makefile文件下就有)我當時為這個問題郁悶了很久,希望你們不會像我這樣^_^);3,有些人為了方便想在cygwin下編譯,但是經常在網上看到在這個虛擬平臺下編譯有很多的問題,要配置的東西也多,而且好像我用過那個vi沒有linux環境下的好用,所以還是不要用這個軟件了吧,如果你真的離不開windows的話可以像我這樣裝個虛擬機,在虛擬機下再裝linux的系統,具體參考這個網站):http://fedora.linuxsir.org/doc/vmware/3)好了,現在開始測試你的交叉編譯器搞好沒有。在u-boot.1.1.2目錄下執行如下命令:1) Make distclean (再次強調)2) Make B2_config(隨便再個現成的試試^_^)
3) Make (沒錯的話應該會生成u-boot.bin文件,發生錯誤的話也不怕,只要細心看一下哪里錯就行了,gcc碰到錯誤后會退出編譯,所以可以一個個錯誤來改,一般的問題都是沒找到編譯器(可能你沒裝或者裝的不對,例如人家用的是arm-linux-而你裝的是arm-elf-,如果你裝了的話看看你的環境變量設好了沒有,前面有講,如果不關編譯器的事的話那就再看看,一般是文件的后綴不對,有些文件后綴是大寫的,例如start.S但是如果你的是start.s小寫的話那當然找不到(解決方法很,把它改成大寫就行了)。細心看吧,不用怕,它都有注明路徑,很容易可以找到的))如果以上步驟都無誤的話那么恭喜你,你的交叉編譯環境可以用來編譯你的u-boot源代碼了,可以開始以下階段(待續)
u-boot移植日記1
更新時間: 2007-02-02 21:40:26來源: 粵嵌教育瀏覽量:1759
免費預約試聽課
- 姓名
- 電話
- 獲取試聽資格