赞
踩
在ARM的异常向量表(如下图所示),为什么FIQ处于 异常向量表的最顶端? —————————————————————————————————— 中断向量地址 | 异常中断类型 | 异常中断模式 | 优先级(6最低) | ———————|——————— -|————————|—————————-| 0x00 | 复位 | 特权模式 | 1 | 0x04 | 未定义的指令 | UND终止模式 | 6 | 0x08 | 软件中断 | 特权模式 | 6 | 0x0C | 指令预取终止 | 终止模式 | 5 | 0x10 | 数据访问终止 | 终止模式 | 2 | 0x14 | 保留 | 未使用 | 未使用 | 0x18 | 外部中断请求 | IRQ模式 | 4 | 0x1C | 快速中断请求 | FIQ模式 | 3 | ——————————————————————————————————— 在阅读了ARM的大量资料后得到的结论是: FIQ异常向量放在所有向量最后,目的是可以将FIQ异常处理程序直接放在向量的地址上. 这样在执行FIQ处理时,就可以不用进行跳转,快速响应中断.FIQ向量放在最后,允许FIQ异常处理程序直接放在地址0x0000001C或0xFFFF001C开始 的位置,而不需要由向量的分支指令。也就是说直接从0x0000 0001C开始执行,这样省去了一个跳转指令,如果FIQ不是在顶端,那么当然需要一次跳转.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。