调试 Cortex M3 (ARM) 嵌入式 - 如何判断 xPSR.ISR 正在运行哪个 ISR?
我正在arm系列CPU(Cortex M3)上调试一个固件。
调试器显示 CPU 寄存器,其中包括一个名为“xPSR”的寄存器,其中包含一个名为“ISR”的子字段。 CPU 寄存器中的模式是“Mode=Handler”,这意味着 m3 cpu 处于中断处理程序而不是“线程”模式。我知道的就这么多。
我在那里看到字段 xPSR.ISR = 15 的值。我认为这一定是十六进制的 15(12 月 21 日)。通过查看 ISR 向量表注释,我猜测这是“系统定时器 Tick 0B”中断。实际上,我现在猜测它是十进制的 15。我正在查看 SysTick 定时器中断处理程序。(请注意,因为代码是汇编程序单行默认处理程序情况,其中大约 100 个不同的 asm 标签位于一个位置,所以很难从代码中判断谁调用了 ISR。 )
但是,我对 Cortex M3 芯片还很陌生,而且我对 ARM7TDMI 的了解因不使用它而变得模糊,以至于我无法在任何地方的文档中找到它,
谁能告诉我如何计算 。这出?
I am debugging a piece of firmware on an arm-family cpu (Cortex M3).
The debugger shows the CPU registers, including one called 'xPSR' which includes a sub-field called 'ISR'. The mode in the CPU registers is 'Mode=Handler", which means that the m3 cpu is in interrupt handler instead of 'thread' mode. This much I know.
I see the value for the field xPSR.ISR = 15 in there. I think that must be hexadecimal 15 (dec 21). And I am guessing that this is the "System Timer Tick 0B" interrupt from looking at the ISR vector table comments. Actually, I'm now guessing it's 15 decimal, and it's the SysTick timer interrupt handler I'm looking at.(Note that because the code is assembler one-liner default-handler case, where about 100 different asm labels land at one place, it's hard to tell from the code, who invoked the ISR.)
However, I am pretty new to Cortex M3 chips, and my knowledge of ARM7TDMI is so faded from not using it that I can't remember. And I can't find this in my docs anywhere.
Can anyone tell me how to figure this out?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
异常编号 15 十进制是 Cortex M3 上的 SYSTICK 中断。
ARM Cortex M3 技术参考手册表格(表 5-1 - 异常类型)列出了 M3 使用的各种中断号。
Exception number 15 decimal is the SYSTICK interrupt on the Cortex M3.
The ARM Cortex M3 Technical Reference Manual has a table (Table 5-1 - Exception types) that lists the various interrupt numbers used by the M3.