学习嵌入式开发时会遇到什么问题?
1、 问题重复出现
只有通过稳定的复发,才能正确定位、解决和验证问题。一般来说,问题越容易解决。
1.1模拟重现条件
某些问题在特定条件下存在,只有通过模拟问题发生的条件才能重复这些问题。对于依赖于外部输入的条件,如果条件复杂且难以模拟,可以考虑通过程序中的预设直接进入相应的状态。
1.2增加相关任务的执行频率
例如,如果任务长时间运行后发生异常,则可以增加任务的执行频率。
1.3增加试样尺寸
程序运行时间长,问题很难再出现。您可以为多组设备同时构建测试环境。
2、 问题所在地
缩小故障排除范围,确认导致问题的任务、功能和陈述。
2.1打印日志
根据问题的现象,将LOG输出添加到有问题的代码中,以跟踪程序执行过程和关键变量的值,并观察其是否与预期一致。
2.2在线调试
在线调试可以起到与打印日志类似的作用。此外,该方法特别适用于解决程序崩溃的错误。当程序陷入异常中断(HardFault、看门狗中断等)时,您可以直接STOP查看调用堆栈和内核寄存器的值,并快速找到问题点。
2.3版本回退
使用版本管理工具时,您可以通过不断回滚版本并测试和验证它来找到首次引入问题的版本,然后可以对该版本添加和修改的代码进行故障排除。
2.4两部分注释
二分注释是以类似于二分的方式对部分代码进行注释,从而判断问题是否是由代码的注释部分引起的。
具体方法是注释与问题无关的一半代码,看看问题是否得到解决。如果问题没有解决,请评论另一半。如果问题得到解决,继续将评论范围减少一半,以此类推。
3、 回归测试
问题解决后,需要进行回归测试,以确认问题是否不会再次出现,另一方面,确认修改不会引入其他问题。
4、 经验总结
总结这一问题的原因和解决方法,思考未来如何预防类似问题,以及同一平台上的产品是否值得借鉴,从而从失败中吸取教训。