我们有一个没有任何视频或串口的小型嵌入式系统(即我们无法通过printf输出文本).
我们希望通过初始化序列跟踪代码的进度.
我们可以做些简单的事情来帮助解决这个问题.
它没有运行任何操作系统,硬件平台可以自定义.
最简单,最具扩展性的解决方案是状态LED.如果您可以缩小焦点,则可以基于操作切换LED,可以采用二进制形式,也可以在发生某些操作时切换.
最强大的将是硬件JTAG设备.您甚至不需要设置断点 - 只需能够停止应用程序并检查内存状态就足够了.请注意,某些硬件平台不支持"花哨"选项,如内存监视或硬件断点.前者通常用于不断停止处理器和读取存储器(将10MHz系统转换为1kHz系统),而后者有时使用代码替换执行(用不同的跳转替换目标指令),这有时会掩盖其他问题.请注意这些问题以及它们适用的嵌入式处理器.
您可以使用一些策略来帮助调试:
如果您有可用的输出引脚,则可以将它们连接到LED(或示波器)并将输出引脚切换为高/低,以指示代码中已达到某些点.
例如,1个闪烁可能是程序加载,2个闪烁是foozbar初始化,3个闪烁接受输入...
如果您有多个输出线可用,则可以使用7段LED来传达更多信息(数字/字母而不是闪烁).
如果你有能力读取内存并有一些可用的RAM,你可以使用sprint函数进行类似printf的调试,但不是进入屏幕/串行端口,而是写入内存.