【问题标题】:Enable Interrupt in user mode for ARMV7A processors在用户模式下为 ARMV7A 处理器启用中断
【发布时间】:2017-09-21 08:41:09
【问题描述】:

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

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

【问题讨论】:

  • 您需要处于特权模式才能更改处理器的 I-bit。

标签: c gcc arm armv7


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-08-19
    • 2015-11-27
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多