JZ2440移植最新u-boot-2015.04-rc4.tar
1,配置uboot
去官網下載最新uboot原始碼u-boot-2015.04-rc4.tar,開發環境採用JZ2440光碟片上的vmware虛擬機器ubuntu9.10。
本次採用smdk2410的預設配置來配置uboot,然後啟動類似linux一樣的menuconfig菜單進行配置,然後make,並燒寫進JZ2440看效果,然後根據現象一步步修改。
我們移植uboot的基本原則是:因為我們剛上手,可能什麼都不知道,更加不知需要更改什麼,這個時候我們就先盡量什麼都不改,直接燒寫進去看現象,然後根據現象或者提示資訊一步步更改,從而移植完成。
配置命令如下:
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ tar jxvf u-boot-2015.04-rc4.tar.bz2
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ cd u-boot-2015.04-rc4/
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ make smdk2410_defconfig
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ make menuconfig
3,在uboot根目錄執行
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ make
報錯:
cc1: error: bad value (armv4) for -march= switch
cc1: error: bad value (armv4) for -mtune= switch
make[2]: *** [include/autoconf.mk] Error 1
make[1]: *** [silentoldconfig] Error 1
make: *** No rule to make target `include/config/auto.conf', needed by `include/config/uboot.release'. Stop.
錯誤並不可怕,學會看錯誤提示,根據提示進行下一步工作。錯誤提示意思好像是說機器平台不對,那麼我們就來指定,開啟頂層Makefile,指定交叉編譯器和架構平台:
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ vim Makefile
如圖所示添加下面兩行:
ARCH=arm
CROSS_COMPILE=arm-linux-
完成後,再次執行:make 開始編譯
book@book-desktop:~/uboot/u-boot-2015.04-rc4$ make
報錯:
AS arch/arm/lib/vectors.o
AS arch/arm/lib/crt0.o
AS arch/arm/lib/relocate.o
arch/arm/lib/relocate.S: Assembler messages:
arch/arm/lib/relocate.S:50: Error: selected processor does not support `bx lr'
make[1]: *** [arch/arm/lib/relocate.o] Error 1
make: *** [arch/arm/lib] Error 2
耐著性子認真看錯誤資訊,說不支援bx lr指令,這是arm的一個跳轉指令,沒理由arm交叉編譯器不支援啊,是不是版本太低了。
查看版本:
arm-linux-gcc -v