移植U-Boot过程中遇到的问题
2014-06-19 18:54
246 查看
http://blog.sina.com.cn/s/blog_548d39f90100ar06.html
移植U-Boot过程中遇到的问题
原创,转载请注明本文作者和出处
由于暑假期间没按计划弄我的ARM嵌入式系统编程,最近趁毕业论文还没开题,赶紧把U-Boot和Linux移植到我的开发板QQ2440V3,总是遇到各种问题,在这公布出来给后来者一些有价值的参考吧。
问题一:“软浮点”问题
用arm-linux-gcc-3.4.1编译U-Boot出现:
/home/peng/toolchain/3.4.1/bin/arm-linux-ld: ERROR: /home/peng/toolchain/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/libgcc.a(_udivdi3.oS) uses hardware FP, whereas u-boot uses software FP
/home/peng/toolchain/3.4.1/bin/arm-linux-ld: failed to merge target specific data of file /home/peng/toolchain/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/libgcc.a(_udivdi3.oS)
/home/peng/toolchain/3.4.1/bin/arm-linux-ld: ERROR: /home/peng/toolchain/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/libgcc.a(_clz.oS) uses hardware FP, whereas u-boot uses software FP
/home/peng/toolchain/3.4.1/bin/arm-linux-ld: failed to merge target specific data of file /home/peng/toolchain/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/libgcc.a(_clz.oS)
听说编译U-Boot用低版本的3.3.2以下的交叉编译器,在3.3.2下还是出现FP问题:
/home/peng/toolchain/3.3.2/bin/arm-linux-ld: 错误:/home/peng/toolchain/3.3.2/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_udivdi3.oS) 使用硬件 FP,而 u-boot 使用软件 FP
文件格式错误: failed to merge target specific data of file /home/peng/toolchain/3.3.2/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_udivdi3.oS)
/home/peng/toolchain/3.3.2/bin/arm-linux-ld: 错误:/home/peng/toolchain/3.3.2/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_clz.oS) 使用硬件 FP,而 u-boot 使用软件 FP
文件格式错误: failed to merge target specific data of file /home/peng/toolchain/3.3.2/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_clz.oS)
make: *** [u-boot] 错误 1
查了好多资料,发现用arm-softfloat-linux-gnu和arm-linux-gcc-3.4.5-glibc-2.3.6编译能解决上述的“软浮点”问题。
问题二:错误CRC问题
把编译好的U-Boot映像文件通过H-Jtag烧写进NOR Flash之后,给开发板上电之后总是出现这样的错误提示:Warning - bad CRC, using default environment
起先以为是因为:开发板使用的NOR Flash是29lv160DB,而模板使用的是29lv800BB和29lv400BB,是我的移植问题。在反复阅读分析对应的flash.c文件和对应的board头文件之后,发现移植没问题。之后在网上查了,发现是因为没有在首次运行U-Boot的时候手动设置新的环境参数,但是我在移植过程中已经在源文件里设置好了环境参数。不管是否在移植过程中设置了环境参数,第一次运行时需要设置一次参数,否则U-Boot都会使用移植过程中设置的参数(这参数就是默认参数,即default
environment)并提示Warning - bad CRC, using default environment。
问题三:装载内核到内存时**Read Error和Bad Magic Number问题
把内核烧写到Nand Flash之后,启动开发板,老是出现等提示信息:
Loading from NAND 64MiB 3,3V 8-bit, offset 0x0
** Read error
## Booting image at 31000000 ...
Bad Magic Number
用交叉编译器make uImage生成的uImage和使用U-Boot下的mkimage工具把zImage做成的uImage都出现这问题。我还以为是U-Boot移植过程中的NAND Flash驱动以及相关的读函数的问题,后来发现修改源文件中的默认参数“nboot 0x31000000 0 0;bootm 0x31000000”为“NAND read.jffs2 0x31000000 0x0 0x1E0000;bootm 0x31000000”之后就能启动内核,不再出现**Read
Error和Bad Magic Number等提示信息,但是多了很多读入信息。我还是想通过“nboot 0x31000000 0 0;bootm 0x31000000”来启动装载和启动内核,为这问题折腾了两天,还是没结果。后面在网上把我的问题发给《嵌入式Linux应用开发完全手册》这本书的作者,得知是因为NAND Flash的内核存储区有坏块, nboot不能跳过坏块,而read.jffs2可以跳过NAND Flash的坏块。看来我的瞎蒙也能解决上述**Read Error和Bad Magic Number问题。嘿嘿~
上述三个问题消耗了我超过一个星期的时间,代价太大了。
作者:梁福鹏
本文出处:http://blog.sina.com.cn/s/blog_548d39f90100ar06.html
移植U-Boot过程中遇到的问题
原创,转载请注明本文作者和出处
由于暑假期间没按计划弄我的ARM嵌入式系统编程,最近趁毕业论文还没开题,赶紧把U-Boot和Linux移植到我的开发板QQ2440V3,总是遇到各种问题,在这公布出来给后来者一些有价值的参考吧。
问题一:“软浮点”问题
用arm-linux-gcc-3.4.1编译U-Boot出现:
/home/peng/toolchain/3.4.1/bin/arm-linux-ld: ERROR: /home/peng/toolchain/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/libgcc.a(_udivdi3.oS) uses hardware FP, whereas u-boot uses software FP
/home/peng/toolchain/3.4.1/bin/arm-linux-ld: failed to merge target specific data of file /home/peng/toolchain/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/libgcc.a(_udivdi3.oS)
/home/peng/toolchain/3.4.1/bin/arm-linux-ld: ERROR: /home/peng/toolchain/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/libgcc.a(_clz.oS) uses hardware FP, whereas u-boot uses software FP
/home/peng/toolchain/3.4.1/bin/arm-linux-ld: failed to merge target specific data of file /home/peng/toolchain/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/libgcc.a(_clz.oS)
听说编译U-Boot用低版本的3.3.2以下的交叉编译器,在3.3.2下还是出现FP问题:
/home/peng/toolchain/3.3.2/bin/arm-linux-ld: 错误:/home/peng/toolchain/3.3.2/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_udivdi3.oS) 使用硬件 FP,而 u-boot 使用软件 FP
文件格式错误: failed to merge target specific data of file /home/peng/toolchain/3.3.2/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_udivdi3.oS)
/home/peng/toolchain/3.3.2/bin/arm-linux-ld: 错误:/home/peng/toolchain/3.3.2/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_clz.oS) 使用硬件 FP,而 u-boot 使用软件 FP
文件格式错误: failed to merge target specific data of file /home/peng/toolchain/3.3.2/bin/../lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_clz.oS)
make: *** [u-boot] 错误 1
查了好多资料,发现用arm-softfloat-linux-gnu和arm-linux-gcc-3.4.5-glibc-2.3.6编译能解决上述的“软浮点”问题。
问题二:错误CRC问题
把编译好的U-Boot映像文件通过H-Jtag烧写进NOR Flash之后,给开发板上电之后总是出现这样的错误提示:Warning - bad CRC, using default environment
起先以为是因为:开发板使用的NOR Flash是29lv160DB,而模板使用的是29lv800BB和29lv400BB,是我的移植问题。在反复阅读分析对应的flash.c文件和对应的board头文件之后,发现移植没问题。之后在网上查了,发现是因为没有在首次运行U-Boot的时候手动设置新的环境参数,但是我在移植过程中已经在源文件里设置好了环境参数。不管是否在移植过程中设置了环境参数,第一次运行时需要设置一次参数,否则U-Boot都会使用移植过程中设置的参数(这参数就是默认参数,即default
environment)并提示Warning - bad CRC, using default environment。
问题三:装载内核到内存时**Read Error和Bad Magic Number问题
把内核烧写到Nand Flash之后,启动开发板,老是出现等提示信息:
Loading from NAND 64MiB 3,3V 8-bit, offset 0x0
** Read error
## Booting image at 31000000 ...
Bad Magic Number
用交叉编译器make uImage生成的uImage和使用U-Boot下的mkimage工具把zImage做成的uImage都出现这问题。我还以为是U-Boot移植过程中的NAND Flash驱动以及相关的读函数的问题,后来发现修改源文件中的默认参数“nboot 0x31000000 0 0;bootm 0x31000000”为“NAND read.jffs2 0x31000000 0x0 0x1E0000;bootm 0x31000000”之后就能启动内核,不再出现**Read
Error和Bad Magic Number等提示信息,但是多了很多读入信息。我还是想通过“nboot 0x31000000 0 0;bootm 0x31000000”来启动装载和启动内核,为这问题折腾了两天,还是没结果。后面在网上把我的问题发给《嵌入式Linux应用开发完全手册》这本书的作者,得知是因为NAND Flash的内核存储区有坏块, nboot不能跳过坏块,而read.jffs2可以跳过NAND Flash的坏块。看来我的瞎蒙也能解决上述**Read Error和Bad Magic Number问题。嘿嘿~
上述三个问题消耗了我超过一个星期的时间,代价太大了。
作者:梁福鹏
本文出处:http://blog.sina.com.cn/s/blog_548d39f90100ar06.html
相关文章推荐
- 移植U-Boot过程中遇到的问题
- 移植u-boot支持ubi遇到的问题总结
- wifi无线网卡(zd1211b芯片)移植到mini2440全过程(二)遇到的问题总结&&解决方案
- 将实朴主流程移植到九安的过程中遇到的问题及解决方法
- spring boot + maven + mybatis 学习过程遇到问题总结(1)
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题2---CMAKE配置问题
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】
- 移植u-boot支持ubi遇到的问题总结
- 移植3g模块(中兴和simcom)过程中遇到的问题总结
- ubuntu12.04 在编译u-boot过程中遇到的问题及解决方法
- 重新为FS2410移植内核过程中遇到的初始化console节点失败问题
- 移植rt73 usb无线网卡到linux2.6.28的过程中所遇到问题集锦
- 移植u-boot支持ubi遇到的问题总结
- linux代码移植到cygwin过程中遇到的问题
- 移植u-boot支持ubi遇到的问题总结
- ubifs文件系统的制作过程&&遇到的问题及解决方案总结---之一“uboot中添加对UBIFS文件系统的支持”
- 在连续两个平台的uboot和Linux系统移植过程中,在千兆网口调试这块都遇到了很大的麻烦。由于寄存器数量庞大,千兆网口MAC和PHY内部结构复杂,MAC和PHY接口种类多,千兆以太网驱动的调试成
- arm qt移植过程中遇到的问题总结
- OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题