剛開始做Uboot的移植,發現移植的任務量也是很大的。所以把每個主要的階段分成一塊,希望自己能堅持着寫完。
實驗環境:win7 + Ubuntu10.04
交叉編譯器:arm-linux-gcc-4.3.2
開發板:TQ2440
首先,分析Uboot已經支持的開發板,選擇出於硬件配置最接近的開發板。首選MCU(微控制單元,micor control unit,集成了外圍器件)相同的開發板,如果沒有相同的,則選擇MPU(微處理單元,micor processor unit)相同的。
接下來,就是修改Uboot當中與開發板最相近的文件:
1:# cd /u-boot-2010.06
#vi Makefile
a.添加編譯器
# set default to nothing for native builds
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE = arm-linux-
endif
b.參照已有的:
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
修改2440爲:
smdk2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2440 samsung s3c24x0
2:在board目錄下創建一個屬於新開發板的目錄,並修改此目錄下的Makefile
# mkdir -p /board/smdk2440
#cp -rf board/samsung/smdk2410/ board/samsung/smdk2440
#cd /board/samsung/smdk2440
#mv smdk2410.c smdk2440.c
#vi Makefile
#COBJS := smdk2410.o flash.o 註釋掉已有的關於2410的信息
COBJS := smdk2440.o flash.o
SOBJS := lowlevel_init.o
3:爲開發板添加新的配置文件,先複製,後修改。
# cd /u-boot-2010.06
#cp include/configs/smdk2410.h include/configs/smdk2440.h
4:編譯自己的板子
# make smdk2440 _config
#make
當出現下面的內容時,就是正確了
rch/arm/lib/eabi_compat.o -L /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t -lgcc -Map u-boot.map -o u-boot
arm-linux-objcopy -O srec u-boot u-boot.srec
arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin