[英]How debugging works in MCU systems programmed in C
据我了解,在Linux系统上,调试是通过ptrace sys-call完成的。
我想知道如何为微控制器(无OS)编写调试器。
为了简单起见,让我们假设使用诸如Arduino Due (基于ARM)之类的板的软件调试器。
我计划将调试器实现为命令行Linux实用程序。
包括Arduino Due上的ARM在内的大多数现代处理器均具有通过JTAG接口进行的片上调试支持。 Cortex-M3片上调试支持8个硬件断点和一些其他功能-由于代码在闪存中运行,因此您无法设置软件断点。
JTAG接口本身非常简单,但是您将需要特殊的硬件才能从PC支持它。 根据性能和功能的不同,JTAG调试器的成本可能从非常低到昂贵的价格差异很大。 需要将JTAG连接到调试器软件的软件。 OpenOCD是一个开放源代码工具,用于将JTAG /片上调试与GDB接口,允许将GDB-ARM托管在PC上以调试远程ARM目标。
从理论上讲,您可以编写自己的软件来通过JTAG访问OCD。 尽管我已经在ARM9,SrongARM和x86上使用了VxWorks,并且它对目标托管调试的支持有限,但我从未考虑过在微控制器上实现目标托管调试器。 目标托管调试的实用程序受到缺少源代码和符号表信息的限制,这些信息和符号表信息可用于托管调试器以支持源级调试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.