最近由于工作的原因需要研究下uboot在2440上的移植,于是乎今天開始着手。首先下載下傳了uboot的源碼(源碼下載下傳官網http://www.icdev.com.cn/batch.viewlink.php?itemid=1694),由于要移植的目标闆是2440核心的,我下載下傳的是uboot-1.1.6這個經典版本。然後網上查了下,說是要對應 arm-linux-gcc-3.3.2 編譯,于是乎又下載下傳了arm-linux-gcc-3.3.2.tar.bz2。開始正式的閱讀與移植前,先來感受一把uboot的編譯。
首先是安裝arm-linux-gcc。前兩年是安裝過的,但是因為很久沒弄,對linux指令都生疏了,折騰了兩三個小時才裝好。其實就是将下載下傳到的tar.bz2解壓到/usr/local/arm/目錄下,然後導出環境變量到PATH就行了。
說幹就幹,首先把下載下傳的arm-linux-gcc-3.3.2.tar.bz2檔案丢到VMWare的共享檔案夾windows_share下(關于VMWare中設定共享檔案夾的方式,請參照我另一篇部落格VMware+Ubuntu與Windows主控端檔案共享的實作)。開啟ubuntu,打開終端。
1)、 cd /usr/local 進入/usr/local目錄下
2)、 mkdir arm 在/usr/local下建立arm目錄
3)、 sudo cp ~/windows_share/arm-linux-gcc-3.3.2.tar.bz2 /usr/local/arm 将安裝檔案copy到/usr/local/arm目錄下
4)、 sudo tar -jxvf arm-linux-gcc-3.3.2.tar.bz2 執行解壓
解壓後在/usr/local/arm檔案夾下可以看到多了一個usr,逐層去看就會發現這個usr下面有個local,local下有個arm,arm檔案夾内有3.3.2這個檔案夾,3.3.2内才是真正的arm-linux-gcc-3.3.2的檔案。為了結構清晰,我們直接從./usr/local/arm檔案加下copy這個3.3.2檔案夾到/usr/local/arm下,然後再删掉/usr/local/arm下剛才解壓時得到的那個usr檔案夾。這樣arm-linux-gcc-3.3.2就安裝完成了。
然後是導出arm-linux-gcc-3.3.2的可執行目錄到PATH。
1) cd ~ 進入目前使用者home目錄下
2) ls -la 即可以看到檔案夾下有一個.bashrc檔案,這個是目前使用者的bash資源檔案
3) sudo vi .bashrc 打開這個.bashrc檔案,注意一定要sudo打開,不然等下的更改不能被儲存
4) 在該檔案最後空白處添加以下 export PATH=$PATH:/usr/local/arm/3.3.2/bin 儲存退出
5) 關閉目前終端,并且重新打開終端(重新打開時會加載.bashrc,是以剛才添加的一行被執行)
6) arm-linux-gcc -v 如果可以看到版本資訊,說明arm-linux-gcc-3.3.2安裝成功了!
uboot的編譯就比較簡單了,因為我們這裡是直接編譯,并不做任何更改和移植。隻要将下載下傳的uboot源碼包copy到linux下一個目錄中,然後解壓,進入根目錄,依次執行 make distclean; make smdk2410_config; make all 即可得到uboot.bin。
問題總結:實驗中遇到過以下問題
1、arm-linux-gcc-3.3.2.tar.bz2 直接放在~/'Documents/tmp下解壓不成功,後來移動到/usr/local/arm下解壓成功。
2、 uboot代碼放在windows中共享檔案夾下面可以解壓,但是不能make smdk2410_config,後來換到linux檔案夾下ok。