有谁知道如何启用ARM FIQ?

时间:2009-07-13 13:31:15

标签: arm

有谁知道如何启用ARM FIQ?

2 个答案:

答案 0 :(得分: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.

对于普通的IRQ可以做类似的事情,但使用#0x80代替#0x40。

答案 1 :(得分:1)

芯片制造商可以使用trustzone扩展来关闭FIQ。

Trustzone创造了一个安全世界和一个普通世界。安全世界拥有自己的主管,用户和内存空间。这个想法是为了安全操作被路由,所以它们永远不会离开芯片,即使你扫描总线上的引脚也无法跟踪。我认为在OMAP中它用于一些加密操作。

开启重置核心以安全模式启动。它设置了安全监视器(安全和非安全世界之间的网关),此时FIQ可以设置为路由到监视器。我认为可以设置SCR.FIQ位,然后所有FIQ都忽略CPSR.F的值并进入监控模式。查看ARM ARM,但如果我没记错,如果发生这种情况,则无法从不安全的操作系统代码中获知。然后,监视器将复位Normal世界寄存器,并在PC设置为复位异常向量的情况下进行异常返回。

核心将采取中断监控模式,做其事并返回。

抱歉,我无法在评论中回答你,我没有足够的声誉,你可以随时解决这个问题;),但我希望你能看到这个