在开发设备驱动,想要调试中断服务程序。已知在一行代码之后会产生中断,那么应该如何调试才能看到系统如何进入了中断服务程序呢?
目标机是一个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 跳转至页
回复
有奖活动 | |
---|---|
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? | |
抽奖了,抽奖了,金升阳医疗电源 |
打赏帖 | |
---|---|
【换取手持数字示波器】+与同事对定时器输出相位可调PWM移相全桥控制分享被打赏50分 | |
【换取手持数字示波器】+LP-MSPM0L1306开发板试用体验+串口被打赏40分 | |
CC-RL编译器相关问题求助被打赏10分 | |
【换取手持数字示波器】+与同事对ESP-12开发调试经验分享被打赏50分 | |
【换取手持数字示波器】+同事tek示波器调试spi解析被打赏50分 | |
【换取手持数字示波器】+2.6寸墨水屏调试经验被打赏50分 | |
换取手持数字示波器+个人开关电源的设计经验被打赏50分 | |
【换取手持数字示波器】+【APT32F173测评】+URAT被打赏20分 | |
【换取手持数字示波器】CH32X035的定时器以及外部中断体验被打赏50分 | |
【换取手持数字示波器】CH32X035搭建开发环境(RISC-V)被打赏50分 |