打印
[ZLG-ARM]

关于中断嵌套的问题咨询ZLG

[复制链接]
2194|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chphei|  楼主 | 2008-11-20 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问ZLG:
   1. 《深入浅出ARM7-LPC213x_214x(上)》的第335页关于中断优先级有下面说明:"ARM中断体系结构对中断优先级的处理,在一般情况下,高优先级并不能中断低优先级中断,程序所设定的优先级的意义在于当多个中断同时发生的时候,只处理高优先级中断而忽略低优先级中断."  
    该说明中最不能理解的就是"忽略"一词.如果是"忽略",那不是执行完高优先级中断后就不执行低优先级了么,正确的说法应该是"挂起"吧.只要高优先级中断执行开始直到完成的过程中,低优先级的中断标志没有被硬件或者软件清零,在高优先级中断返回瞬间就会立刻进入低优先级中断. 
   请问"忽略"一词是否有错?

   2.关于中断嵌套的方法,在该书338页有介绍.我想咨询的是,IRQ和FIQ同时设定后,FIQ能否自动中断IRQ么,是否也需要按照这种中断嵌套的方法进行类似设定.同理,向量IRQ能否自动中断非向量IRQ.即这样的情况能否自动中断嵌套?

   3.顺便请问,执行一条机器指令的时间是多少?(晶振选用11.0592M,模板用的2131).
   
    

相关帖子

沙发
chphei|  楼主 | 2008-11-20 14:05 | 只看该作者

回复

刚才在网上搜了下,看到一个比较贴近的说明可以解决第二个问题

对IRQ、FIQ和SWI的理解[gliethttp] 
1.同时在AXD中arm7tdmi内核模拟中断也出现同样的现象,当模拟发生IRQ的当即, pc指针指向0x18的同时"I"被自动置1,禁止IRQ 
  当在IRQ执行的过程中,如果"I"被清0,那么IRQ会立即嵌套发生
2.同时在AXD中arm7tdmi内核模拟中断也出现同样的现象,当模拟发生FIQ的当即,  pc指针指向0x1C的同时"F"和"I"都被自动置1,禁止FIQ和IRQ] 
3.当发生IRQ的时候,"I"被自动置1,禁止IRQ中断嵌套,IRQ处理程序执行了一会之后,突然FIQ到达, 那么arm内核会立即跳转到FIQ执行,"F"和"I"都被自动置1,禁止FIQ和IRQ,FIQ的spsr其值为IRQ中执行处理程序时的CPSR,当FIQ代码执行完毕之后,恢复到IRQ中继续执行IRQ处理程序. 
4.swi可以嵌套,不论什么时候,什么地点,只要执行swi,arm内核就会跳转到0x08地址处开始执行swi程序 
5.swi等同于IRQ,也就是说,当触发swi软中断的同时"I"也会被自动置1,禁止IRQ

对比其说明,IRQ可以自动嵌套FIQ.IRQ之间,无论向量还是非向量,都不能自动嵌套. 又多了个软件中断的说明,看来似乎是IRQ也可以自动嵌套SWI.不知这样的理解是否正确.

使用特权

评论回复
板凳
zlgarm| | 2008-11-21 14:00 | 只看该作者

RE:chphei

赞....

您好!
"忽略"一词确实有些不妥,按您所说的“挂起”就对了,谢谢您指出了我们的错误。执行一条指令的时间与ARM内核运行的频率有关,而关于一条指令需要几个时钟没有确切的说明,ARM7内核的Dhrystone测试结果是0.95 DMIPS/MHz。
您2楼的理解都是正确的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

25

帖子

0

粉丝