全志A33-编译uboot
開發板:A33,運行linux-3.4.39
主機:Ubuntu 14.04
----------------------------------------------
?
?
1. 進入uboot目錄:~/A33-Vstar/dragonboard/brandy/u-boot-2011.09
編譯涉及的重要文件:build.sh、Makefile
?
?
2. 編譯
2.1 方式一,使用build.sh腳本
執行:sudo ./build.sh -p sun8iw5p1
出現以下錯誤:
?
1)make: INTERNAL: Exiting with 9 jobserver tokens available; should be 8!
解決:打開build.sh,將-j8去掉即可。
即將make -j8 $PLATFORM CROSS_COMPILE=arm-linux-gnueabi-
修改為make $PLATFORM CROSS_COMPILE=arm-linux-gnueabi-
?
2)dereferencing type-punned pointer will break strict-aliasing rules
原因:dereferencing type-punned pointer will break strict-aliasing rules警告信息跟優化選項-strict-aliasing 有關。當開啟這個優化選項時,可能優化會導致源代碼中部分語句缺失,而造成系統工作不正常,所以就所有的違反strict-aliasing rules原則的地方加了條這個警告信息,提醒讀者檢查這個地方的代碼,看看是不是如果優化后會導致部分語句工作不正常。同時這個信息提示還有另外一個目的,兩個不同類型的指針指向同一個地址時,極有可能會導致代碼編寫出錯(比如犯大小端的錯誤,還有地址字節對齊的錯誤),所以這個警告信息還有這一層的目的。
解決:編譯時make系統使用了錯誤的gcc編譯器:/usr/bin/arm-linux-,必須要使用A33自帶的gcc編譯器,位于~/A33-Vstar/dragonboard/out/sun8iw5p1/dragonboard/common/buildroot/external-toolchain/bin/
-1. 先屏蔽 /usr/bin/下的gcc系列編譯器,可將其移動到別的路徑。
-2. 修改build.sh,將PATH修改為:
export PATH=$PATH:~/A33-Vstar/dragonboard/out/sun8iw5p1/dragonboard/common/buildroot/external-toolchain/bin/
即A33自帶gcc編譯器的存放路徑。
?
注:通過在Makefile中添加CFLAGS = -fno-strict-aliasing -O0無效,依舊會出現此錯誤,所以只能采用換自帶編譯器的方法。
?
3)cp: cannot create regular file ‘../brandy/out_source’: No such file or directory
解決:去掉build.sh最后一行:cp -rf u-boot.bin ../brandy/out_source
?
依次解決上述錯誤后,編譯成功:
?
2.2 方式二,直接執行make
$ sudo make distclean
$ sudo make sun8iw51
注:應該不會出現方式1的三個錯誤,并且方式二使用的是~/A33-Vstar/dragonboard/brandy/gcc-linaro/bin/目錄下的gcc編譯器
?
?
3. 使用u-boot
編譯成功后,生成的u-boot.bin和u-boot-sun8iw5p1.bin文件存放在當前目錄。且u-boot-sun8iw5p1.bin會自動copy到:~/A33-Vstar/dragonboard/tools/pack/chips/sun8iw5p1/bin/
這時回到dragonboard/目錄下,直接運行sudo ./build pack即可使用新生成的u-boot。
?
?
?
總結
以上是生活随笔為你收集整理的全志A33-编译uboot的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全志A33-BootLoader的两个阶
- 下一篇: 腾讯最大股东也扛不住了!Naspers宣