本文主要是介绍44b0之bootloader编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在老婆的鼓励下,重新拿起风尘了多年的44b0开发板。首先遇到的是bootloader的编译。下面写一下编译的过程以及遇到的问题吧。
1、拷贝u-boot-20050311.tar.gz(uboot源代码)到工作目录(我的工作目录是 /home/usr/wjb/MyUboot
cp u-boot-20050311.tar.gz /home/usr/wjb/ MyUboot
2、拷贝arm-elf-tools-20040427.sh(arm ucLinux交叉编译工具)到工作目录
cp arm-elf-tools-20040427.sh /home/usr/wjb/ MyUboot
3、解压uboot代码
cd /home/usr/wjb/MyUboot/
tar -zxvf u-boot-20050311.tar.gz
4、运行arm-elf配置脚本
./arm-elf-tools-20040427.sh
注意:此时出现了问题。
1) 问题一 tail: cannot open `+43' for reading: No such file or directory
解决方法: 在Linux下(注:不要在Win下) 重新下载一个arm-elf-tools-20030314.sh
将第39行的代码:
tail +${SKIP} ${SCRIPT} | gunzip | tar xvf -
改成如下:
tail -n +${SKIP} ${SCRIPT} | gunzip | tar xvf -
2) 问题二 gunzip: stdin: unexpected end of file
解决方法: 要在arm-elf-tools-20030314.sh 最后一行加入一空行(注,不要在Win下修改,建议用VI)
5、添加arm-elf到环境变量PATH
export PATH=$PATH:/usr/local/arm-elf/bin
注意:这里的目录就是你arm-elf的安装目录,arm-elf(给编译uclinux用的)和arm-linux(给编译linux用的)是安装在不同的地方
6、清除
make distclean
7、配置
make hfrks3c44b0_config
注意:这里需要配置一些东西, 用make加上开发板对应的配置。 在Makefile里面可以看到很多config,那就是我们需要的参数了,比如我的开发板用的就是hfrks3c44b0_config。 如果你没有任何配置的话, 只想验证你的编译环境,你完全可以从已有的配置里面选一个。
8、make
make all
注意,此时会出现的错误为:
1)错误一:
make[1]: *** No rule to make target `hello_world.srec', needed by `all'. Stop.
make[1]: Leaving directory `/work/src/u-boot-1.1.4/examples'
解决办法:
打开 examples/Makefile
把example文件夹下的Makefile中的
第126行
%.srec: % 改成 %.srec: %.o
第129行的
%.bin: % 改成 %.bin: %.o
2)错误二:(这个错误我没有遇到,网上查错误一的解决办法时,看到的,也列在这里吧)
cc1: Invalid option `abi=apcs-gnu'
make[1]: *** [hello_world.o] Error 1
make[1]: Leaving directory `/root/u-boot-1.1.4/examples'
make: *** [examples] Error 2
解决办法:
出错的文件是/cpu/arm920t/下的config.mk:
将
PLATform_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
改成:
PLATform_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu,))
这时候,错误解决完了,一切顺利的话,u-boot.bin会出现在u-boot文件夹下。
这篇关于44b0之bootloader编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!