除了在管理员模式下启用或禁用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.
| 归档时间: |
|
| 查看次数: |
4544 次 |
| 最近记录: |