我正试图暂时屏蔽Cortex-M3的所有中断,只能访问调试端口。我可以自由地读写内存,到目前为止,它已足以访问处理器寄存器。
到目前为止,我最好的选择是将1写入一个核心寄存器(PRIMASK或FAULTMASK),并以此方式禁用所有中断。问题是,我似乎无法访问它们。根据{{3}},我可以使用DCRSR选择内核寄存器,然后通过DCRDR读/写它们。但是,信息中心页面似乎暗示,无法访问中断屏蔽寄存器(PRIMASK,FAULTMASK和BASEPRI)。
我找到了一个不同的来源,即ARM infocenter,在第244页上显示,通过向其写入0b10100,DCRSR确实可用于访问特殊寄存器。我也试过了,之后我从DCRDR读取的值似乎与您对特殊寄存器的期望值一样(保留值随机设置为1或0,FAULTMASK的第一位为1,但中断似乎工作正常)。我仍然尝试将假定的PRIMASK的第一位设置为1,希望禁用中断,但无济于事。似乎信息中心是正确的,DCRSR不能用于访问所有特殊寄存器。
我的问题是,还有什么方法可以从调试端口访问中断屏蔽寄存器?是否存在存储它们的直接存储器地址,或者提供访问它们的一些不同寄存器?
非常感谢任何帮助。
答案 0 :(得分:0)
可能是在应用程序代码中添加一个小助手,它轮询 RAM 单元并根据 RAM 单元的内容为您访问特殊寄存器?