有谁知道如何启用ARM FIQ?

5 arm

有谁知道如何启用ARM FIQ?

pax*_*blo 8

除了在管理员模式下启用或禁用IRQ/FIQ之外,除非系统(运行ARM芯片)已在硬件中禁用它,否则您无需在ARM上使用它进行特殊设置(根据您的评论,情况并非如此,因为您看到FIQ输入引脚正确驱动).

对于那些不知道首字母缩略词的人来说,FIQ只是列表中的最后一个中断向量,这意味着它不限于其他中断的分支指令.这意味着它可以比其他IRQ处理程序执行得更快.

正常的IRQ仅限于分支指令,因为它们必须确保它们的代码适合单个字.FIQ,因为它不会覆盖任何其他IRQ向量,所以可以直接运行代码而无需分支指令(因此"快速").

FIQ输入线只是外部元件将ARM芯片置于FIQ模式并开始执行正确异常的一种方式.除了CPSR之外,ARM本身没有任何东西可以防止这种情况发生.

要在管理员模式下启用FIQ:

MRS r1, cpsr         ; get the cpsr.
BIC r1, r1, #0x40    ; enable FIQ (ORR to disable).
MSR cpsr_c, r1       ; copy it back, control field bit update.
Run Code Online (Sandbox Code Playgroud)

对于普通IRQ也可以做类似的事情,但使用#0x80而不是#0x40.

  • 你忘了提到由于更多的寄存器寄存器,FIQ更快.IRQ和FIQ有自己的模式,因此使用管理模式毫无意义.IRQ只有sp/r13和lr/r14存储.FIQ有r8-r12,lr和sp.此外,中断通常由CPSR I和F位切换,*以及*作为硬件寄存器.这取决于芯片/ SoC设计.一个微不足道的例子是Gameboy Advance. (3认同)