[英]ARM Cortex M4: test from unpriviledged mode if inside interrupt
我正在使用以下CPU:Stellaris LM4F120H5QR微控制器。 这个CPU包含一个MPU,我想完成这个事情。 但是在处于非特权模式下时,许多寄存器不再可访问,而且我似乎找不到找到一个寄存器,该寄存器指示系统处于中断内部并且可以从非特权模式读取。
我需要这样做,因为从中断调用时,有些代码可能会采用不同的路由。 如果我在非特权模式下执行了错误的检查,则系统将立即跳至访问故障。
那么,如何检查从中断中调用函数的方式是否从非特权模式中调用时不会产生故障?
根据ARM的文档 , CONTROL
和ISR
寄存器可能正是您所需要的。
因此,使用CMSIS原型,代码可能类似于:
if (__get_IPSR() || !(__get_CONTROL() & 0x1))
{
/* Privilged code */
}
else
{
/* Unprivileged code */
}
据我所知,甚至应该允许用户线程读取这些内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.