项目场景:
之前学习uboot移植时,遇到的一个问题,编译完uboot后,到开发板上测试时,开发板会一直自动重启,提示 Resetting CPU 字样
问题描述
原因分析:
这种是编译器版本问题导致的,我这块板子用的编译器版本是 4.9.4 版本的,如果使用其它 版本的交叉编译器,例如是用 7 版本的交叉编译器来编译 uboot 或者内核,就会报上面的错。
可以先使用 arm-linux-gnueabihf -v 查看一下编译器版本
解决方案:
解决方案一:
在网上查找资料,只要关闭内存地址对齐错误的检查功能(仅armv7以上内核支持)就行。修改 uboot的目录下/arch/arm/cpu/armv7# /start.S文件 ,在start.S文件中找到以下代码
解决方案二:
输入 arm-linux-gnueabihf-gcc -v 查看交叉编译器版本,如果版本不是教程 4.9.4 的版本(根据自己需要的编译器版本来),是其它 高版本的编译器,可以将高版本的交叉编译命令删除,再安装驱动教程里版本的编译器。要删 除原来高版本的交叉编译命令,先找到可执行文件。例如 7 版本的交叉编译命令,这个编译器 名字是 arm-linux-gnueabihf-gcc-7,则执行指令查询它在哪个路径下:
which arm-linux-gnueabihf-gcc-7
执行指令后根据出来的路径,进入那个目录下,执行以下指令将可执行文件删除:
rm -rf arm-linux-gnueabihf-gcc*
删除之后,再去安装自己板子所需要的编译器版本