在开发设备驱动,想要调试中断服务程序。已知在一行代码之后会产生中断,那么应该如何调试才能看到系统如何进入了中断服务程序呢?
目标机是一个PC,使用网线连接。我是在会产生中断的那一行代码处设置了断点,在ISR开始也设置了断点。然后当在产生中断的代码处停止后,我attach了sytem任务和我驱动发送数据的任务。可是再执行一行代码,系统还是没有能进入我写的ISR,
恳请各位不吝指导!谢谢啦
共3条
1/1 1 跳转至页
请教:Tornado如何使用系统模式调试?

ISR的时效性很强,而且没有任务上下文,我觉得用调试模式来调,可能会存在一些问题。如果有以太网的话,调试起来应该比较方便,可以考虑开一个telnet终端,用logMsg()进行打印调试。虽然很原始,但也比较有效。
调ISR首先要看ISR是否在合适的情况下被触发。再看执行的情况是否正确。
关于调试ISR是否被触发,可以在ISR的入口就加LogMsg进行打印跟踪。---注意:如果你的ISR与其它ISR共享了一个中断源,要判断到底是哪个中断源产生的中断。最好有一个独占的中断请求线用于调试。另外,有些芯片支持软件置中断,,如果有这个条件,调试起来就更加方便了。
ISR可以被触发之后,就可以用logMsg进行ISR的功能性调试了。
ISR中最需要注意的有:共享中断中的中断源有效判断,边沿触发的中断的中断标识清除,不调用任何导致阻塞的函数和执行导致阻塞的操作,ISR尽量小。
ISR与任务通信的方式比较多,但出于效率考虑,在VxWorks中,最好不要使用复杂的系统功能如管道。可以考虑使用的天然互斥但不阻塞的数据结构有:环型缓冲,链表。。效率较高的系统调用是消息队列和信号量释放(semGive)。
共3条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
分享一种检测按键状态的方法被打赏20分 | |
周末总结一下,STM32C0系列的开发经验被打赏50分 | |
【Cortex-M】Systick Timer使用被打赏10分 | |
分享汽车防盗系统的组成与分类(一)被打赏5分 | |
VOFA+波形显示+JYD-31蓝牙发送和解析不定长数据被打赏10分 | |
【换取手持数字示波器】-STM32F4PWM控制LED灯管亮度被打赏22分 | |
【换取手持数字示波器】STM32F4驱动RPR-0521RS照度、接近一体型传感器被打赏23分 | |
宏定义和const关键字定义被打赏5分 | |
【分享开发笔记,赚取电动螺丝刀】几个单片机I2S外设的BLCK时钟对比被打赏20分 | |
【功率监测与控制系统DIY活动成果贴】DIY功率计与LabVIEW数据采集被打赏100分 |