仿真器调试程序
请问大家,如何调试啊,用STC的习惯了,直接串口,最近用别的芯片,带JTAG,可以在线调试,但是不知道咋用,只用到下载功能了,如何调试中断、外部器件等功能啊,希望提供帮助...
请问大家,如何调试啊,用STC的习惯了,直接串口,最近用别的芯片,带JTAG,可以在线调试,但是不知道咋用,只用到下载功能了,如何调试中断、外部器件等功能啊,希望提供帮助,+++++
展开
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条。
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条。
追问
比如STM32为例,怎么调试中断啊,如何进中断,还有比如外部接个ADC,如何在线调试,接收信号;此外在线调试时候,如果修改一条语句后,时候需要重新编译
追答
你在中断里面下断点就可以进入中断了。
不建议使用这类手段来调试非软件中断和外设。因为它们往往有时序要求,调试的时候会影响时序而造成结果的错误。对这类问题,推荐用semihosting方式,打印数据来调试,或者使用你熟悉的,传统的串口输出调试信息。
贝思科尔
2024-11-24 广告
2024-11-24 广告
咨询电话:13500040761(微信同号)。贝思科尔提供专业正版热仿真软件:Flotherm、FloEFD等,获取产品价格、技术交流、委托测试联系我们。贝思科尔拥有强大的技术服务能力和丰富的项目经验,获得业内一致好评,利用Flotherm...
点击进入详情页
本回答由贝思科尔提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询