仿真器调试程序

2024-11-22 04:20:38
推荐回答(1个)
回答1:

你改用ARM么,例如STM32?ARM的JTAG调试需要用专用的调试器,例如JLINK(支持全系列ARM),ULINK(只能用于ARM 7, 9, STM32等,11和A8不能用),STLINK(v2版,支持STM8和STM32),你用的哪个?
ARM的(软件)调试,无非就是以下几种手段:
1. 传统的串口方式调试
你应该熟悉,不多说了
2. Semihosting调试
就是printf,scanf这些语句,借助调试器输入/输出信息。你可以直接在程序里面写printf,结果会输出到调试器的semihosting窗口中,也可以在里面输入信息,通过scanf读取,就像是控制台一样。STM32有自己的,类似semihosting的实现,好像叫itm什么的来着。
3. 单步,断点等跟踪调试手段
ARM开发比较强大的就是这些功能了,能够方便地追踪程序的执行流程,观察执行过程中系统的状态。因为ARM功能强大,程序要比51复杂很多,因此对调试也有更高的要求。这些跟踪调试手段能够很方便地追踪程序中逻辑上的错误,比串口输出方式效率要高很多。它的缺点是无法调试对时序要求比较严格的代码,例如USB通讯相关的。如果配合串口输出调试那些操作硬件,时序要求比较严格的代码,就能达到优势互补的效果,极大提高调试效率。
具体的使用方法,得看你用的开发环境。一般来说无非就是以下几步:连接硬件,设置芯片使能JTAG(例如AVR等的熔丝位)和JTAG调试的一些参数(例如JTAG频率等),最后在开发环境中进行设置断点,单步运行等操作。
4. 芯片专用的或其他调试工具
这些一般针对性很强,就不多说了

如果你不是用ARM的,而是AVR,PIC,C8051F等,也是类似,除了没有Semihosting以外,其他的都可以用。重点是第3条。