5

有谁知道如何启用 ARM FIQ?

4

2 回答 2

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。

于 2009-07-13T13:56:52.407 回答
1

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

Trustzone 创建了一个安全的世界和一个正常的世界。安全世界有自己的主管、用户和内存空间。这个想法是为了路由安全操作,因此即使您扫描总线上的引脚,它们也不会离开芯片并且无法追踪。我认为在 OMAP 中它用于一些加密操作。

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

内核将中断监视模式,执行其操作并返回。

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

于 2013-04-14T00:17:04.397 回答