在开发设备驱动,想要调试中断服务程序。已知在一行代码之后会产生中断,那么应该如何调试才能看到系统如何进入了中断服务程序呢?
目标机是一个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
跳转至
页
回复
有奖活动 | |
---|---|
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? | |
抽奖了,抽奖了,金升阳医疗电源 |
打赏帖 | |
---|---|
【换取手持数字示波器】HMI开发板首秀RTduino被打赏30分 | |
电解电容引发的问题被打赏50分 | |
【换取手持数字示波器】+AT-START-F405之串口通讯被打赏30分 | |
【换取手持数字示波器】BeetleESP32C6+OLED被打赏40分 | |
【换取手持数字示波器】+ESP32C6与PWM(脉冲宽度调制)被打赏30分 | |
【换取手持数字示波器】+BeetleESP32C6初步探入,点灯被打赏30分 | |
【换取手持数字示波器】+pico驱动点阵屏被打赏40分 | |
玩转“DFRobot盖革计数器模块”+【安信可BW16-Kit】MQTTBasic被打赏40分 | |
玩转“DFRobot盖革计数器模块”+remotecontrol分享被打赏30分 | |
【换取手持数字示波器】+pico驱动WS2812灯环被打赏40分 |