前言
最近在学习u-boot命令在开发板的烧写,在进行该实验的过程中,出现了很多问题和错误,在这里我根据自己的开发历程,将我出现的几大问题进行了汇总,并附有相关解决办法,这些解决方案都经过我亲自验证有效,希望能让大家在开发过程中有所启发
问题描述:
在开启mobaXterm后反复重启
原因分析:
个人猜测可能是使用了错误的编译器版本,正点原子开发板支持的gcc编译器版本4.9.4
如果下载了更高版本的编译器,则只能在虚拟机内进行成功的编译,而一旦需要连接开发板,就会因为版本不兼容而失败,我猜测在使用mobaX时,开机进入循环的原因正是因为版本的问题。
解决方案:
因为编译器版本不兼容,所以我们需要重新在虚拟机内下载一个4.9.4版本的gcc编译器。
注意:在卸载原有gcc编译器之后,我们将正确版本的gcc编译器压缩包放到arm目录下,但此时我们在ls之后会发现有两个文件,其中一个显示为目录状态,这是不正确的,而且经过我的测试,我们无法直接sudo删除这个目录,我采用的方法是删除整个arm文件夹,之后sudo mkdir新建一个文件夹,再将安装包放进去,此时我们再ls只会就是正确的;如果在上述情况下不删除目录文件进行解压,则会显示解压失败。
在安装完成编译器以及其他依赖库之后,可以输入该条命令,检测一下自己编译器的版本
如果编译器版本显示为4.9.4,则代表编译器成功安装
在成功安装正确的编译器版本之后,我们需要重新对U-Boot进行编译
在u-boot初次编译的时候,我们需要解压安装包文件,注意此时解压的目录一定要与一开始创建的目录匹配,建议大家直接进入文件后,选择终端打开。
在此目录下对安装包进行解压,解压完成后,我们需要配置shell脚本文件。
此时也可能会出现一个问题:
问题描述:
在我们对.sh文件进行编译时,很有可能
出现问题导致无法成功编译
原因分析:
我认为是文件编写时,拼写或格式产生错误。
解决方案:
在这里给大家提供一种解决方案,我们不进入vim界面,直接在主界面按行输入命令,然后继续在该界面进行编译,这样可以逐条查找错误,而且一目了然,不会受到vim界面因字体或空格不清晰造成错误的问题困扰。再找到问题后,要回到vim界面进行改错。
配置完成之后,我们编译该.sh文件,此时我们再ls,就会发现出现了我们需要的u-boot.bin文件
此时我们只需要插入SD卡,将.bin文件烧写到SD卡中。
此时也可能出现一个问题:
问题描述:
在生成u-boot.bin文件之后,向SD卡烧写过程中速率过快
原因分析:
可能是虚拟机USB版本不兼容
解决方案:
在虚拟机设置->USB控制器->USB兼容性改为3.1,重启虚拟机。
如果上述方法之后速率还是不正常,则建议检查一下自己的文件编写是否有误,根据我的经验,在某些地方的错误很可能不会有提示,但是当需要用到该文件时,还是会导致编译失败的情况。
在成功烧写完.bin文件进入SD卡之后,我们连接开发板,注意此时开发板一定要和虚拟机在同一个局域网内,开发板要插入网线。
通过mobaXterm进行连接,开机之后,有可能会产生一条提示:
问题描述:
原因分析:
出现这个问题可能是环境产生错误,虽然是warning,但经过我的测试,如果忽略此条提示,后面的编译不会成功,所以我们消除此警告
解决方案:
在命令行输入以下命令:
=> env default -a
=> saveenv
重启,警告就会消失。
在我们解决完警告之后,我们继续进行编译,此时很有可能会产生一条错误提示:
问题描述:
原因分析:
我们没有设置FEC1的地址
解决方案:
这里的解决方案很简单,我们直接使用setenv,saveenv命令设置ip地址即可,在设置完之后重启,再打开就不会出现这条错误。
我们将所有的IP地址设置完成后,可以用ping命令检测一下,但是在此时,很有可能显示IP地址not alive,这里就产生了下一个问题。
我尝试过很多方法解决此问题,包括手动设置IP地址,在这里仅提供一种思路,我没有通过这种方式解决我的问题,我重新设置了我的serverip之后发现是我个人拼写IP地址时出现了错误,但还是把我用过的方法写在这里,为大家提供一种思路:
问题描述:
ping xx.xxx.xxx.xxx not alive
解决方案:
手动设置IP地址,在VM里添加一个vpn
在完成这些操作后,我们再ping一下,显示ip alive。说明我们已经连接成功
此时我们输入相关命令,即可在开发板中看到相关现象
但是在输入nfs和tftp命令时,我们还是可能遇到一些问题:
这里我在tftp时遇到了一些问题:
问题描述:
1.在虚拟机内编写tftp相关文件时,发现无法编译通过
2.在mobaXterm界面出现提示
原因分析:
vim中的编写有错误
mabaXterm命令编写错误
解决方案:
我们首先检查一遍vim中的编写是否有错误,如果能够在虚拟机内重启成功,则转到mobaXterm中寻找错误,我们检查一下我们的命令拼写是否有误,大概率是因为我们的命令拼写有错误,这里建议大家可以一行一行的编写,敲完一行就执行以下,这样分步执行简单直观。
总结
经过一系列的调试,我们到这里应该已经解决了大部分的问题,本文主要根据笔者自己在开发过程中遇到的问题及解决方案,难免会遗漏很多在开发过程中可能出现的其他问题,在这里欢迎大家补充,同时也换欢迎大家对我文章中的方法出现的错误进行批评指正。