对于嵌入式系统来说,应用细节较多,所有一条语句都可能引入问题,因此应用问题定位的技术尤其的重要。前面讲了怎么样定位嵌入式系统的硬件问题,本次我聊一下,使用什么技术来定位遇到的应用问题。
应用问题,有着一定繁琐性,表现也千奇百怪,超难一概而论有哪些详细的分类。因此,我以调试手法,来切入研究怎么解决应用问题。
硬件仿真调试工具
对于嵌入式平台,最好的调试手法,是在线仿真器。“在线”即连接到目标板,“仿真器”是最先的仿真硬件的延续叫法,现在多是调试器,不仅应该配MCU来完成运行、终止、断点、烧写,还阔以完成变量读写、寄存器访问等功能。因为调试工具的厉害功能,所以我们往往一般强力建议使用调试工具,这样应该高效率地排查问题。最重要的是,24钟头参加,效率较高。
ARM芯片常用的调试器
串口打印消息
如果没有仿真器,那该怎么样定位问题呢。可供后备选择的是串口,即UART。通过串口,我们应该将有兴趣的资料,从串口打印出去,之后在PC机上使用应用接收资料,来分析是否正确。例如,程序进了哪个函数、哪个分支、参数是什么值等,都应该从串口发送出去。这样就应该间接替代仿真器,实现内部关键消息的学会。需要小心的是,打印的资料最好和代码模块及地点应该一一对应,方便准确提供定位问题的消息。
使用串口打印变量和分支消息
屏幕、按键、LED等
对于极简的单片机系统,怎么样调试应用呢?那我们就只能就地取材,系统有什么资源,那么用什么。例如,我们应该先调通硬件的屏幕或LED展现。之后,应该在屏幕上展现有兴趣的消息,或者用LED的闪烁与配合,来表示不一样的含义。使用按键来模拟断点,触发终止或运行。这种方法,是不得已而为之,效率较低,是没有很多的手法的末尾选择。
总结
尽管应用问题各种不一样,但一大半的错误,都发*在逻辑判断、数值计算这两个方面。我们应该使用有效的资源,尽量学会程序实际执行到的分支,来推断逻辑和计算是否有问题。各种手法基础都是围绕这种目的来开展问题定位。