c - 为 ARMV7A 处理器在用户模式下启用中断

标签 c gcc arm armv7

我试图为 ARMv7A mcu (Cortex-A8) 启用中断,我注意到无论我尝试什么,我都无法在用户模式下更改 CPSR 寄存器中的 I 位。我仔细阅读了一下,这似乎是因为我处于 USR 模式。

调用 SWI 并更改 SWI 处理程序中的 SPSR 是唯一的解决方案吗?

最佳答案

事实上,您不能在用户模式下禁用或启用中断。您只能在特权模式下执行此操作。

在禁用中断的情况下切换到用户模式是不常见的。通常情况下,您只会在禁用中断的情况下运行非常少量的代码,因为这会延迟下一个中断的处理。如果您在用户模式下运行部分中断处理程序,请在重新启用中断之前首先执行任何必须完成的操作,然后切换到用户模式。

关于c - 为 ARMV7A 处理器在用户模式下启用中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46339239/

相关文章:

c++ - 没有ALU的ARM需要多少运算量

c++ - 如何让我的应用程序使用 Windows 主题?

c套接字发送和接收int而不是char缓冲区

c++ - 为什么我可以在没有前向声明的情况下调用函数模板?

c - ARM Cortex 工具链速度优化

arm - PLD在arm cortex a9中的应用

c - pthread_join() 如何确定被调用/等待线程已终止

c - 无法理解如何打印这个星形的逻辑

c - 使用 OpenMp 和 SSE 的段错误

c - GCC 内联 SSE 代码