先說結(jié)論
1、當(dāng)一個(gè)irq/fiq正在執(zhí)行時(shí) ,是否可能會(huì)其它的irq/fiq打斷呢?
(1)如果開啟了中斷優(yōu)先級(jí),則在irq/fiq進(jìn)入的時(shí)候,也會(huì)再次enalbe irq/fiq,即也就是支持了中斷嵌套。所以此時(shí)一個(gè)irq或fiq正在執(zhí)行的時(shí)候,它是有可能被另外一個(gè)高優(yōu)先級(jí)的irq/fiq num的中斷搶占的。
(2) 但是很遺憾 ,在我們的Linux Kernel系統(tǒng)中,至今都沒有默認(rèn)開啟中斷優(yōu)先級(jí),在一進(jìn)入irq/fiq的時(shí)候,也沒有再次enable irq/fiq. 所以這種情況下,一個(gè)正在執(zhí)行的irq/fiq是不可能被另外的irq/fiq打斷的。
2、當(dāng)一個(gè)irq/fiq正在執(zhí)行時(shí) ,是否可能會(huì)其它異常打斷呢?
當(dāng)然可以,您仔細(xì)閱讀代碼就會(huì)發(fā)現(xiàn),在一進(jìn)入irq/fiq handler的時(shí)候,
PSTATE.D、PSTATE.A都是被enabled,所以irq/fiq正在執(zhí)行的時(shí)候,是可能被Watchpoint、Breakpoint、SoftwareStepexceptions、Serror打斷的3、當(dāng)一個(gè)irq/fiq正在執(zhí)行時(shí) ,還會(huì)被別的程序打斷嗎?
當(dāng)然可以,同步異常嘛!
代碼/文檔導(dǎo)讀
(1) 如下代碼展示了,在一進(jìn)入irq/fiq的時(shí)候,就調(diào)用 enable_da將 PSTATE.D、 PSTATE.A unmasked了。所以irq/fiq中斷,是可以被 Watchpoint、 Breakpoint、 SoftwareStepexceptions、 Serror打斷的

(2) irq和fiq屬于異步異常,具有同樣的優(yōu)先級(jí)。而同步異常的優(yōu)先級(jí)又高于異步異常的優(yōu)先級(jí),同意異常的優(yōu)先級(jí) 如下所示 (也就意味著以下同步異常都可以打斷正在執(zhí)行的irq/fiq):




(3)如果開啟了中斷優(yōu)先級(jí),則在irq/fiq進(jìn)入的時(shí)候,也會(huì)再次enalbe irq/fiq

-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
614瀏覽量
29994 -
串口中斷
+關(guān)注
關(guān)注
0文章
67瀏覽量
14641 -
中斷優(yōu)先級(jí)
+關(guān)注
關(guān)注
0文章
22瀏覽量
9749
發(fā)布評(píng)論請(qǐng)先 登錄
Linux 2.6 中斷處理原理簡介
WindowsCE異常和中斷服務(wù)程序
linux驅(qū)動(dòng)之中斷處理過程C程序部分
了解Linux中斷處理原理
單片機(jī)的中斷程序如何運(yùn)行
ARM異常中斷的原因及處理措施
為什么中斷處理函數(shù)不能直接調(diào)用不可重入函數(shù)
處理器中異常和中斷解決
STM32中斷系統(tǒng)(NVIC和EXTI)
Linux是如何利用陷阱門處理中斷異常的
中斷和異常?傻傻分不清楚
ARM中的異常中斷是如何實(shí)現(xiàn)進(jìn)入中斷程序的?如何進(jìn)入呢?
什么是LInux 操作系統(tǒng)中斷
Linux Kernel的中斷處理函數(shù)中是否會(huì)被其它程序(中斷/異常)打斷?
評(píng)論