一、環境
目標板:mini2440
u-boot版本:u-boot-2009.08
交叉編譯器:arm-linux-gcc-4.3.2 下載見 http://www.linuxidc.com/Linux/2011-04/34049.htm
操作系統:Linux(Ubuntu-11.10)
U-Boot源代碼下載地址 http://www.linuxidc.com/Linux/2011-07/38897.htm
二、目的
搭建mini2440目標板環境。閱讀本文前,建議閱讀嵌入式系統Boot Loader 技術內幕 見 http://www.linuxidc.com/Linux/2011-12/50389.htm
三、步驟
1、下載源代碼
2、創建mini2440目錄和頭文件
在這之前,必須熟悉下U-boot的目錄樹。比如board目錄是存放根板子相關的文件(smdk2410.c等)
、
進入到u-boot的根目錄
3、修改u-boot根目錄下的Makefile
U-boot是個好東西,有詳細的說明文檔。查閱U-boot根目錄下的README[227行],我們得知make之前我們必須配置出目標板的環境。
For all supported boards there areready-to-use default
configurations available; just type"make <board_name>_config".
找到Makefile的2997行,在這裡可以看到對不同板子的配置。例如:
在這之後,我們添加如下:
以上各項參數說明如下。
unconfig:對unconfig的依賴,執行unconfig實際上是執行清理工作。
unconfig:
@rm–f $(obj)include/config.h$(obj)include/config.mk \
$(obj)board/*/config.tmp$(obj)board/*/*/config.tmp \
$(obj)include/autoconf.mk$(obj)include/autoconf.mk.dep
arm CPU的架構(ARCH)
arm920t CPUde 類型,其對應於cpu/arm920t子目錄
mini2440 開發板的型號(BOARD),其對應於board/samsung/mini2440目錄
samsung 開發者/或經銷商(vender) 。新開發板項目目錄的上級目錄,如直接在board下建立新的開發板項目的目錄,則這裡就為NULL
s3c24x0 片上系統(S0C)
如果默認的交叉編譯器為arm-linux-gcc,則不需要對編譯環境重新設置,否則要重新添加。
找到Makefile的161行
設置交叉編譯器:
4、我們現在先NorFlash啟動,所以暫時不用修改其他代碼。
5、測試前面所修改的是否有問題,如果沒問題,編譯成功後會生成u-boot.bin文件
回到u-boot根目錄
四、出現的錯誤
make -C board/samsung/mini2440/
make[1]: 正在進入目錄 `/home/yz019/u-boot/u-boot-2009.08/board/samsung/mini2440'
make[1]: *** 沒有規則可以創建“libmini2440.a”需要的目標“.depend”。 停止。
make[1]:正在離開目錄 `/home/yz019/u-boot/u-boot-2009.08/board/samsung/mini2440'
make: ***[board/samsung/mini2440/libmini2440.a] 錯誤 2
解決方案:
查看 board/Samsung/mini2440/Makefile28行
修改為
make。驚喜的發現如下語句,大功告成~
arm-linux-objcopy -Osrec u-boot u-boot.srec
arm-linux-objcopy--gap-fill=0xff -O binary u-boot u-boot.bin
五、成果
由於時鐘配置等相關的板級都未進行設置,串口是輸出不了調試信息的,所以將編譯生成的u-boot.bin燒寫到NorFlash不能看到任何效果。