快速连接
👉👉👉【精选】ARMv8/ARMv9架构入门到精通-目录 👈👈👈
先说结论
- 1、当一个irq/fiq正在执行时 ,是否可能会其它的irq/fiq打断呢?
- 如果开启了中断优先级,则在irq/fiq进入的时候,也会再次enalbe irq/fiq,即也就是支持了中断嵌套。
所以此时一个irq或fiq正在执行的时候,它是有可能被另外一个高优先级的irq/fiq num的中断抢占的。
但是很遗憾,在我们的Linux Kernel系统中,至今都没有默认开启中断优先级,在一进入irq/fiq的时候,也没有再次enable irq/fiq. 所以这种情况下,一个正在执行的irq/fiq是不可能被另外的irq/fiq打断的。- 2、当一个irq/fiq正在执行时 ,是否可能会其它异常打断呢?
当然可以,您仔细阅读代码就会发现,在一进入irq/fiq handler的时候,PSTATE.D
、PSTATE.A
都是被enabled,所以irq/fiq正在执行的时候,是可能被Watchpoint
、Breakpoint
、Software Step exceptions
、Serror
打断的- 3、当一个irq/fiq正在执行时 ,还会被别的程序打断吗?
当然可以,同步异常嘛!
代码/文档导读
(1) 如下代码展示了,在一进入irq/fiq的时候,就调用enable_da
将PSTATE.D
、PSTATE.A
unmasked了。
所以irq/fiq中断,是可以被Watchpoint
、Breakpoint
、 Software Step exceptions
、Serror
打断的
(2) irq和fiq属于异步异常,具有同样的优先级。而同步异常的优先级又高于异步异常的优先级,同意异常的优先级如下所示(也就意味着以下同步异常都可以打断正在执行的irq/fiq):
(3)如果开启了中断优先级,则在irq/fiq进入的时候,也会再次enalbe irq/fiq
《ARMv8/ARMv9架构学习系列课程》全系列,共计51节课,超15h的视频课程
关注"Arm精选"公众号,备注进ARM交流讨论区。