您尚未登录。

楼主 # 2024-01-22 23:52:52

XIVN1987
会员
注册时间: 2019-08-30
已发帖子: 247
积分: 308.5

触发 Debug Monitor 异常为何要求其中断优先级必须高于当前优先级?

如下图所示,当 MON_EN = 1 时,发生 debug event 时(如观察点检测到指定地址被写入)并不能保证一定执行 DebugMon_Hander(),而是只有当 DebugMonitor 中断优先级高于当前执行优先级时才会执行 DebugMon_Hander(),否则 debug event 将会被忽略。

为什么会有这种限制?不能像其他中断那样先挂起 DebugMonitor 中断,,等不执行其他中断的时候再执行吗??

DebugMon_ignore.jpg

离线

楼主 #1 2024-01-23 09:21:50

XIVN1987
会员
注册时间: 2019-08-30
已发帖子: 247
积分: 308.5

Re: 触发 Debug Monitor 异常为何要求其中断优先级必须高于当前优先级?

补充一下文字说明:

debug_event_behavior.jpg

离线

#2 2024-01-23 11:47:03

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 635
积分: 768
个人网站

Re: 触发 Debug Monitor 异常为何要求其中断优先级必须高于当前优先级?

大概是因为这个中断要就地执行才有意义吧,如 BKPT触发的时候、到达watchpoint的时候,过了这个村就没这个店了。

你把DebugMonitor中断的优先级设置成最高不就行了。

最近编辑记录 海石生风 (2024-01-23 11:58:04)

离线

楼主 #3 2024-01-23 12:47:57

XIVN1987
会员
注册时间: 2019-08-30
已发帖子: 247
积分: 308.5

Re: 触发 Debug Monitor 异常为何要求其中断优先级必须高于当前优先级?

海石生风 说:

大概是因为这个中断要就地执行才有意义吧,如 BKPT触发的时候、到达watchpoint的时候,过了这个村就没这个店了。

你把DebugMonitor中断的优先级设置成最高不就行了。

默认优先级全是0,,全都是最高的

要想让DebugMonitor优先级高,,只能把其他所有用到的中断优先级都改低,,这操作就麻烦了。。

离线

#4 2024-01-23 14:47:43

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 635
积分: 768
个人网站

Re: 触发 Debug Monitor 异常为何要求其中断优先级必须高于当前优先级?

DebugMonitor出现中断优先级问题是因为你的BKPT或watchpoint在优先级很高的中断处理函数里,想办法把你关注的变量或BKPT移到中断处理函数之外即可。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn