




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心嵌入式系統(tǒng)及應(yīng)用嵌入式系統(tǒng)及應(yīng)用電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心第七章第七章中斷管理中斷管理電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心主要內(nèi)容主要內(nèi)容 中斷的分類中斷的分類 中斷處理的過程中斷處理的過程 實時內(nèi)核的中斷管理實時內(nèi)核的中斷管理 用戶中斷服務(wù)程序用戶中斷服務(wù)程序 中斷時序中斷時序* *電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心 從發(fā)展過程來看:從發(fā)展過程來看: 中斷(interrupt)最初被用來替換I/O操作的輪詢處理方式,以提高I/O處理的效率。 隨后,中
2、斷又包含了自陷(trap,也稱為內(nèi)部中斷或是軟件中斷)的功能。 后來,中斷的概念得到進一步擴大,被定義為導(dǎo)致程序正常執(zhí)行流程發(fā)生改變的事件(不包括程序的分支情況)??砂迅拍畋粩U大的中斷稱為廣義中斷。概述概述 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心 在實際應(yīng)用中,廣義的中斷通常被分為中斷、在實際應(yīng)用中,廣義的中斷通常被分為中斷、自陷和異常(自陷和異常(exceptionexception)等類別。)等類別。 中斷是由于CPU外部的原因而改變程序執(zhí)行流程的過程,屬于異步事件,又稱為硬件中斷。自陷和異常則為同步事件; 自陷表示通過處理器所擁有的軟件指令、可預(yù)期地使處理器正在執(zhí)行
3、的程序的執(zhí)行流程發(fā)生變化,以執(zhí)行特定的程序。自陷是顯式的事件,需要無條件地執(zhí)行; Motorola 68000系列中的Trap指令 ARM中的SWI指令 Intel 80 x86中的INT指令 概述概述 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心異常為CPU自動產(chǎn)生的自陷,以處理異常事件。 如被0除、執(zhí)行非法指令和內(nèi)存保護故障等。 異常沒有對應(yīng)的處理器指令,當(dāng)異常事件發(fā)生時,處理器也需要無條件地掛起當(dāng)前運行的程序,執(zhí)行特定的處理程序。 概述概述 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷的分類中斷的分類 分類方式分類方式 硬件中斷是否可以被屏蔽: 可屏蔽
4、中斷和不可屏蔽中斷 中斷源: 硬件中斷和軟件中斷 中斷信號的產(chǎn)生: 邊緣觸發(fā)中斷和電平觸發(fā)中斷 中斷服務(wù)程序的調(diào)用方式: 向量中斷、直接中斷和間接中斷 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心可屏蔽中斷和不可屏蔽中斷可屏蔽中斷和不可屏蔽中斷 由于中斷的發(fā)生是異步的,程序的正常執(zhí)行流程隨時由于中斷的發(fā)生是異步的,程序的正常執(zhí)行流程隨時有可能被中斷服務(wù)程序打斷。如果程序正在進行某些有可能被中斷服務(wù)程序打斷。如果程序正在進行某些重要運算,中斷服務(wù)程序的插入將有可能改變某些寄重要運算,中斷服務(wù)程序的插入將有可能改變某些寄存器的數(shù)據(jù),造成程序的運行發(fā)生錯誤。存器的數(shù)據(jù),造成程序的運行
5、發(fā)生錯誤。 可屏蔽中斷可屏蔽中斷:能夠被屏蔽掉的中斷。:能夠被屏蔽掉的中斷。 外部設(shè)備的中斷請求信號一般需要先通過CPU外部的中斷控制器,再與CPU相應(yīng)的引腳相連。 可編程中斷控制器可以通過軟件進行控制,以禁止或是允許中斷。 不可屏蔽中斷不可屏蔽中斷:在任何時候都不可屏蔽的。:在任何時候都不可屏蔽的。 一個比較典型的例子是掉電中斷,當(dāng)發(fā)生掉電時,無論程序正在進行什么樣的運算,它都肯定無法正常運行下去。這種情況下,急需進行的是一些掉電保護的操作。對這類中斷,應(yīng)隨時進行響應(yīng)。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心硬件中斷和軟件中斷硬件中斷和軟件中斷 硬件中斷:由于硬件中斷:
6、由于CPUCPU外部的設(shè)備所產(chǎn)生的中斷。外部的設(shè)備所產(chǎn)生的中斷。 異步事件:可能在程序執(zhí)行的任何位置發(fā)生,發(fā)生中斷的時間通常是不確定的。 軟件中斷:同步中斷或是自陷,通過處理器的軟件中斷:同步中斷或是自陷,通過處理器的軟件指令來實現(xiàn)。軟件指令來實現(xiàn)。 產(chǎn)生中斷的時機是預(yù)知的,可根據(jù)需要在程序中進行設(shè)定。 軟件中斷的處理程序以同步的方式進行執(zhí)行。 其處理方式同硬件中斷處理程序類似。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心硬件中斷和軟件中斷硬件中斷和軟件中斷 軟件中斷是一種非常重要的機制:軟件中斷是一種非常重要的機制: 系統(tǒng)可通過該機制在用戶模式執(zhí)行特權(quán)模式下的操作。 是軟件
7、調(diào)試的一個重要手段,如Intel 80 x86中的INT 3,使指令進行單步執(zhí)行,調(diào)試器可以用它來形成觀察點,并查看隨程序執(zhí)行而動態(tài)變化的事件情況。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心邊緣觸發(fā)中斷和電平觸發(fā)中斷邊緣觸發(fā)中斷和電平觸發(fā)中斷 邊緣觸發(fā)中斷:中斷線邊緣觸發(fā)中斷:中斷線從低變到高從低變到高或是或是從高變到從高變到低低時,中斷信號就被發(fā)送出去,并只有在下一次時,中斷信號就被發(fā)送出去,并只有在下一次的從低變到高或是從高變到低時才會再度觸發(fā)中的從低變到高或是從高變到低時才會再度觸發(fā)中斷。斷。 事件發(fā)生的時間非常短,有可能出現(xiàn)中斷控制器丟失中斷的情況。 如果多個設(shè)備連
8、接到同一個中斷線,即使只有一個設(shè)備產(chǎn)生了中斷信號,也必須調(diào)用中斷線對應(yīng)的所有中斷服務(wù)程序來進行匹配,否則會出現(xiàn)中斷的軟件丟失情況。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心邊緣觸發(fā)中斷和電平觸發(fā)中斷邊緣觸發(fā)中斷和電平觸發(fā)中斷 電平觸發(fā)中斷:在硬件中斷線的電平觸發(fā)中斷:在硬件中斷線的電平發(fā)生變化電平發(fā)生變化時產(chǎn)生中斷信號,并且中斷信號的有效性將持時產(chǎn)生中斷信號,并且中斷信號的有效性將持續(xù)保持下去,直到中斷信號被清除。續(xù)保持下去,直到中斷信號被清除。 能夠降低中斷信號傳送丟失的情況 能通過更有效的方式來服務(wù)中斷,每個為該中斷服務(wù)后的ISR都要向外圍設(shè)備進行確認(rèn),然后取消該設(shè)備對
9、中斷線的操作。 當(dāng)中斷線的最后一個設(shè)備得到中斷服務(wù)后,中斷線的電平就會發(fā)生變化,不用對連接到同一個硬件中斷線的所有中斷服務(wù)程序進行嘗試。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心向量中斷、直接中斷和間接中斷向量中斷、直接中斷和間接中斷 向量中斷:通過向量中斷:通過中斷向量中斷向量來調(diào)用中斷服務(wù)來調(diào)用中斷服務(wù)程序。程序。 直接中斷:中斷對應(yīng)的中斷服務(wù)程序的直接中斷:中斷對應(yīng)的中斷服務(wù)程序的入入口地址口地址是一個固定值,當(dāng)中斷發(fā)生的時候,是一個固定值,當(dāng)中斷發(fā)生的時候,程序執(zhí)行流程將直接跳轉(zhuǎn)到中斷服務(wù)程序程序執(zhí)行流程將直接跳轉(zhuǎn)到中斷服務(wù)程序的入口地址,執(zhí)行中斷服務(wù)程序。的入口地
10、址,執(zhí)行中斷服務(wù)程序。 間接中斷:中斷服務(wù)程序的入口地址由間接中斷:中斷服務(wù)程序的入口地址由寄寄存器存器提供。提供。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心向量中斷向量中斷 中斷硬件設(shè)備的硬件中斷線(也稱為中中斷硬件設(shè)備的硬件中斷線(也稱為中斷請求斷請求IRQIRQ)被中斷控制器匯集成)被中斷控制器匯集成中斷向中斷向量量(interrupt vectorinterrupt vector);); 每個中斷向量對應(yīng)一個中斷服務(wù)程序每個中斷向量對應(yīng)一個中斷服務(wù)程序(interrupt service routineinterrupt service routine,ISRISR
11、),),用來存放用來存放中斷服務(wù)程序的入口地址中斷服務(wù)程序的入口地址或是或是中斷服務(wù)程序的第一條指令中斷服務(wù)程序的第一條指令。 系統(tǒng)中通常包含多個中斷向量,存放這系統(tǒng)中通常包含多個中斷向量,存放這些中斷向量對應(yīng)中斷服務(wù)程序入口地址些中斷向量對應(yīng)中斷服務(wù)程序入口地址的內(nèi)存區(qū)域被稱為的內(nèi)存區(qū)域被稱為中斷向量表中斷向量表。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心向量中斷向量中斷 在在Intel 80 x86Intel 80 x86處理器中,中斷向量表包含處理器中,中斷向量表包含256256個入口,每個中斷向量需要四個字節(jié)個入口,每個中斷向量需要四個字節(jié)(存放中斷服務(wù)程序的首址)
12、。(存放中斷服務(wù)程序的首址)。 ARMARM的中斷向量表開始于內(nèi)存地址的中斷向量表開始于內(nèi)存地址0 x000000000 x00000000或是或是0 xFFFF00000 xFFFF0000處。處。電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷控制器中斷控制器 對多個可屏蔽中斷源進行管理對多個可屏蔽中斷源進行管理,使,使CPUCPU核心核心能和更多的中斷資源相聯(lián)系。能和更多的中斷資源相聯(lián)系。 能夠?qū)χ袛噙M行排隊能夠?qū)χ袛噙M行排隊: 避免中斷信號的丟失 對不同的中斷進行優(yōu)先級配置,使高優(yōu)先級中斷能夠中斷低優(yōu)先級中斷,滿足系統(tǒng)中具有更高時間約束特性功能的需要電子科技大學(xué)嵌入式軟
13、件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷控制器中斷控制器IR3 IR4 從從8259IR0 實時鐘實時鐘IR1 IR2 保留保留IR5 協(xié)處理器協(xié)處理器IR6 硬盤硬盤IR7 保留保留80X86INTRINT /INTA/INTA主主8259IR0 定時器定時器IR1 鍵盤鍵盤IR2 INTIR3 COM2IR4 COM1IR5 并口并口2IR6 軟盤軟盤IR7 并口并口1+5VNMI在基于在基于x86的架構(gòu)中,的架構(gòu)中,8259是一個非常通用的中斷控制器芯片(稱為是一個非常通用的中斷控制器芯片(稱為PIC,programmable interrupt controller)。)。每個每個
14、PIC只能夠處理只能夠處理8個中斷,為支持更多數(shù)量的中斷,需要組織成菊花鏈個中斷,為支持更多數(shù)量的中斷,需要組織成菊花鏈(daisy chain)的方式,把一個)的方式,把一個PIC的輸出連接到另一個的輸出連接到另一個PIC的輸入上。的輸入上。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷處理的過程中斷處理的過程 中斷處理的過程分為:中斷處理的過程分為: 中斷檢測 中斷響應(yīng) 中斷處理 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷檢測中斷檢測 中斷檢測在中斷檢測在每條指令結(jié)束時每條指令結(jié)束時進行,檢測是進行,檢測是否有中斷請求或是否滿足異常條件。否有中斷請
15、求或是否滿足異常條件。 為滿足中斷處理的需要,在指令周期中使用了中斷周期。 在中斷周期中,處理器檢查是否有中斷發(fā)生,即是否出現(xiàn)中斷信號。 沒有中斷信號:處理器繼續(xù)運行,并通過取指周期取當(dāng)前程序的下一條指令; 有中斷信號:將進入中斷響應(yīng),對中斷進行處理。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心取指令取指令執(zhí)行指令執(zhí)行指令檢查中斷檢查中斷處理中斷處理中斷開始開始停止停止取周期取周期執(zhí)行周期執(zhí)行周期中斷周期中斷周期不允許不允許中斷中斷允許中斷允許中斷中斷和指令周期中斷和指令周期 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷響應(yīng)中斷響應(yīng) 中斷響應(yīng)是由中斷響應(yīng)是
16、由處理器內(nèi)部硬件處理器內(nèi)部硬件完成的中斷序列,完成的中斷序列,而不是由程序執(zhí)行的。而不是由程序執(zhí)行的。 在在Intel 80 x86Intel 80 x86中,中斷響應(yīng)過程的操作如下:中,中斷響應(yīng)過程的操作如下: 對可屏蔽中斷,從8259中斷控制器芯片讀取中斷向量號; 將標(biāo)志寄存器EFLAG、CS和IP壓棧; 對于硬件中斷,復(fù)位標(biāo)志寄存器中的IF和TF位,禁止可屏蔽外部中斷和單步異常; 根據(jù)中斷向量號,查找中斷向量表,根據(jù)中斷服務(wù)程序的首址轉(zhuǎn)移到中斷服務(wù)程序執(zhí)行。電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷處理中斷處理 中斷處理:執(zhí)行中斷服務(wù)程序。中斷處理:執(zhí)行中斷服務(wù)程序
17、。 中斷服務(wù)程序用來處理自陷、異?;蚴侵袛?。 盡管導(dǎo)致自陷、異常和中斷的事件不同,但大都具有相同的中斷服務(wù)程序結(jié)構(gòu)。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷處理中斷處理 中斷服務(wù)程序的主要內(nèi)容:中斷服務(wù)程序的主要內(nèi)容: 保存上下文:保存中斷服務(wù)程序?qū)⒁褂玫乃屑拇嫫鞯膬?nèi)容,以便于在退出中斷服務(wù)程序之前進行恢復(fù); 如果中斷向量被多個設(shè)備所共享,為了確定產(chǎn)生該中斷信號的設(shè)備,需要輪詢這些設(shè)備的中斷狀態(tài)寄存器; 獲取中斷相關(guān)的其他信息; 對中斷進行具體的處理; 恢復(fù)保存的上下文; 執(zhí)行中斷返回指令,使CPU的控制返回到被中斷的程序繼續(xù)執(zhí)行。電子科技大學(xué)嵌入式軟件工程中心電
18、子科技大學(xué)嵌入式軟件工程中心中斷處理中斷處理 如果對一個中斷的處理還沒有完成,又發(fā)生了另如果對一個中斷的處理還沒有完成,又發(fā)生了另外一個中斷,則稱系統(tǒng)中發(fā)生了多個中斷。外一個中斷,則稱系統(tǒng)中發(fā)生了多個中斷。 非嵌套的中斷處理方式:在處理一個中斷的時候,禁止再發(fā)生中斷。 嵌套的中斷處理方式:定義中斷優(yōu)先級,允許高優(yōu)先級的中斷打斷低優(yōu)先級中斷的處理過程。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心非嵌套的中斷處理方式非嵌套的中斷處理方式 處理中斷的時候,將處理中斷的時候,將屏蔽屏蔽所有其他的中斷請求。所有其他的中斷請求。 新的中斷將被掛起,當(dāng)處理器再次允許中斷時,再由處理器進行檢
19、查。 如果程序執(zhí)行過程中發(fā)生了中斷,在執(zhí)行中斷服務(wù)程序的時候?qū)⒔怪袛啵?中斷服務(wù)程序執(zhí)行完成后,恢復(fù)正常執(zhí)行流程被中斷的程序之前再使能中斷,并由處理器檢查是否還有中斷。 非嵌套中斷處理方式使中斷能夠按非嵌套中斷處理方式使中斷能夠按發(fā)生順序發(fā)生順序進進行處理。行處理。 沒有考慮優(yōu)先級,使沒有考慮優(yōu)先級,使高優(yōu)先級中斷高優(yōu)先級中斷不能得到及不能得到及時的處理,甚至導(dǎo)致時的處理,甚至導(dǎo)致中斷丟失中斷丟失。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心程序程序中斷服務(wù)程序中斷服務(wù)程序A A中斷服務(wù)程序中斷服務(wù)程序B B中斷的非嵌套順序處理中斷的非嵌套順序處理電子科技大學(xué)嵌入式軟件工程
20、中心電子科技大學(xué)嵌入式軟件工程中心嵌套的中斷處理方式嵌套的中斷處理方式 中斷被劃分為多個優(yōu)先級,中斷服務(wù)程序只中斷被劃分為多個優(yōu)先級,中斷服務(wù)程序只屏蔽屏蔽那些比當(dāng)前中斷優(yōu)先級低或是與當(dāng)前中斷優(yōu)先級那些比當(dāng)前中斷優(yōu)先級低或是與當(dāng)前中斷優(yōu)先級相同的中斷,在完成必要的上下文保存后即使能相同的中斷,在完成必要的上下文保存后即使能中斷。中斷。 高優(yōu)先級中斷高優(yōu)先級中斷請求到達(dá)的時候,需要對當(dāng)前中斷請求到達(dá)的時候,需要對當(dāng)前中斷服務(wù)程序的狀態(tài)進行保存,然后調(diào)用高優(yōu)先級中服務(wù)程序的狀態(tài)進行保存,然后調(diào)用高優(yōu)先級中斷的服務(wù)程序。斷的服務(wù)程序。 當(dāng)高優(yōu)先級中斷的服務(wù)程序執(zhí)行完成后,再當(dāng)高優(yōu)先級中斷的服務(wù)程序執(zhí)
21、行完成后,再恢復(fù)恢復(fù)先前的中斷服務(wù)程序繼續(xù)執(zhí)行。先前的中斷服務(wù)程序繼續(xù)執(zhí)行。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心程序程序中斷服務(wù)程序中斷服務(wù)程序A A高優(yōu)先級中斷服高優(yōu)先級中斷服務(wù)程序務(wù)程序B B中斷的嵌套處理中斷的嵌套處理電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心實時內(nèi)核的中斷管理實時內(nèi)核的中斷管理 中斷服務(wù)程序通常包括三個方面的內(nèi)容:中斷服務(wù)程序通常包括三個方面的內(nèi)容: 中斷前導(dǎo): 保存中斷現(xiàn)場,進入中斷處理。 用戶中斷服務(wù)程序: 完成對中斷的具體處理。 中斷后續(xù): 恢復(fù)中斷現(xiàn)場,退出中斷處理。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟
22、件工程中心實時內(nèi)核的中斷管理實時內(nèi)核的中斷管理 中斷前導(dǎo)和中斷后續(xù)通常由內(nèi)核的中斷前導(dǎo)和中斷后續(xù)通常由內(nèi)核的中斷接管程序中斷接管程序來實現(xiàn)。來實現(xiàn)。 硬件中斷發(fā)生后,中斷接管程序獲得控制權(quán),先由中斷接管程序進行處理,然后才將控制權(quán)交給相應(yīng)的用戶中斷服務(wù)程序。 用戶中斷服務(wù)程序執(zhí)行完成后,又回到中斷接管程序。 中斷向量號中斷向量號0 0物理中斷向量表物理中斷向量表中斷向量號中斷向量號1 1中斷向量號中斷向量號2 2中斷向量號中斷向量號3 3中斷向量號中斷向量號n n中斷接中斷接管程序管程序中斷向量號中斷向量號0 0虛擬中斷向量表虛擬中斷向量表中斷向量號中斷向量號1 1中斷向量號中斷向量號2 2中
23、斷向量號中斷向量號3 3中斷向量號中斷向量號m m用戶中斷服務(wù)程序用戶中斷服務(wù)程序0 0用戶中斷服務(wù)程序用戶中斷服務(wù)程序1 1用戶中斷服務(wù)程序用戶中斷服務(wù)程序2 2用戶中斷服務(wù)程序用戶中斷服務(wù)程序3 3用戶中斷服務(wù)程序用戶中斷服務(wù)程序m m用戶中斷服務(wù)程序用戶中斷服務(wù)程序電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心實時內(nèi)核的中斷管理實時內(nèi)核的中斷管理 中斷接管程序負(fù)責(zé)中斷處理的前導(dǎo)和后續(xù)部分中斷接管程序負(fù)責(zé)中斷處理的前導(dǎo)和后續(xù)部分的內(nèi)容。的內(nèi)容。 中斷處理前導(dǎo):保存必要的寄存器,并根據(jù)情況在中斷棧或是任務(wù)棧中設(shè)置堆棧的起始位置,然后調(diào)用用戶中斷服務(wù)程序。 中斷處理后續(xù):實現(xiàn)中斷
24、返回前需要處理的工作,主要包括恢復(fù)寄存器和堆棧,并從中斷服務(wù)程序返回到被中斷的程序。 用戶中斷服務(wù)程序被組織為一個表,稱為用戶中斷服務(wù)程序被組織為一個表,稱為虛擬虛擬中斷向量表中斷向量表。 如果需要在用戶中斷服務(wù)程序中使用關(guān)于如果需要在用戶中斷服務(wù)程序中使用關(guān)于浮點浮點運算運算的操作,中斷前導(dǎo)和中斷后續(xù)中還需要分的操作,中斷前導(dǎo)和中斷后續(xù)中還需要分別對浮點上下文進行保存和恢復(fù)。別對浮點上下文進行保存和恢復(fù)。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心實時內(nèi)核的中斷管理實時內(nèi)核的中斷管理 如果中斷處理導(dǎo)致系統(tǒng)中出現(xiàn)比被中斷任如果中斷處理導(dǎo)致系統(tǒng)中出現(xiàn)比被中斷任務(wù)具有更高優(yōu)先級的
25、就緒任務(wù)出現(xiàn):務(wù)具有更高優(yōu)先級的就緒任務(wù)出現(xiàn): 需要把高優(yōu)先級任務(wù)放入就緒隊列; 把被中斷的任務(wù)從執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài); 完成用戶中斷服務(wù)程序后,在中斷接管程序的中斷后續(xù)處理中激活重調(diào)度程序,使高優(yōu)先級任務(wù)能在中斷處理工作完成后得到調(diào)度執(zhí)行。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心實時內(nèi)核的中斷管理實時內(nèi)核的中斷管理 在允許中斷嵌套的情況下,在執(zhí)行中斷服務(wù)程在允許中斷嵌套的情況下,在執(zhí)行中斷服務(wù)程序的過程中,如果出現(xiàn)高優(yōu)先級的中斷:序的過程中,如果出現(xiàn)高優(yōu)先級的中斷: 當(dāng)前中斷服務(wù)程序的執(zhí)行將被打斷,以執(zhí)行高優(yōu)先級中斷的中斷服務(wù)程序; 當(dāng)高優(yōu)先級中斷的處理完成后,被打斷
26、的中斷服務(wù)程序才又得到繼續(xù)執(zhí)行; 發(fā)生中斷嵌套時,如果需要進行任務(wù)調(diào)度,任務(wù)的調(diào)度將延遲到最外層中斷處理結(jié)束時才能發(fā)生。電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心實時內(nèi)核的中斷管理實時內(nèi)核的中斷管理 中斷服務(wù)程序使用被中斷任務(wù)的任務(wù)??臻g。中斷服務(wù)程序使用被中斷任務(wù)的任務(wù)??臻g。 在允許中斷嵌套處理的情況下,如果中斷嵌套層次過多,中斷服務(wù)程序所占用的任務(wù)的??臻g可能比較大,將導(dǎo)致任務(wù)棧溢出。 使用專門的中斷棧來滿足中斷服務(wù)程序的需要,使用專門的中斷棧來滿足中斷服務(wù)程序的需要,降低任務(wù)??臻g使用的不確定性。降低任務(wù)??臻g使用的不確定性。 在系統(tǒng)中開辟一個單獨的中斷棧,為所有中斷
27、服務(wù)程序所共享。 中斷棧必須擁有足夠的空間,即使在最壞中斷嵌套的情況下,中斷棧也不能溢出。 如果實時內(nèi)核沒有提供單獨的如果實時內(nèi)核沒有提供單獨的中斷棧中斷棧,就需要為,就需要為任務(wù)棧留出足夠的空間,不但要考慮通常的任務(wù)棧留出足夠的空間,不但要考慮通常的函數(shù)函數(shù)嵌套調(diào)用嵌套調(diào)用,還需要滿足,還需要滿足中斷嵌套中斷嵌套的需要。的需要。 使用單獨的中斷棧還能有效降低整個系統(tǒng)對??臻g的需求,否則需要為每個任務(wù)棧都預(yù)留處理中斷的??臻g。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心用戶棧用戶棧堆堆靜態(tài)數(shù)據(jù)靜態(tài)數(shù)據(jù)代碼代碼中斷棧中斷棧中斷向量表中斷向量表中斷向量表中斷向量表用戶棧用戶棧堆堆
28、靜態(tài)數(shù)據(jù)靜態(tài)數(shù)據(jù)代碼代碼中斷棧中斷棧(A)(A)(B)(B)內(nèi)存高端內(nèi)存高端內(nèi)存低端內(nèi)存低端 中斷棧在內(nèi)存中的布局情況中斷棧在內(nèi)存中的布局情況電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心YourISR: Save all CPU registers; (1) Call OSIntEnter() or, increment OSIntNesting directly; (2) if (OSIntNesting = 1) (3) OSTCBCur-OSTCBStkPtr = SP; (4) Clear interrupting device; (5) Re-enable inter
29、rupts (optional) (6) Execute user code to service ISR; (7) Call OSIntExit(); (8) Restore all CPU registers; (9) Execute a return from interrupt instruction; (10)Interrupts Under uC/OS-IIvoid OSIntEnter (void)OS_ENTER_CRITICAL();OSIntNesting+;OS_EXIT_CRITICAL();電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心void OSIn
30、tExit (void)OS_ENTER_CRITICAL(); (1)if (-OSIntNesting | OSLockNesting) = 0) (2)OSIntExitY = OSUnMapTblOSRdyGrp; (3)OSPrioHighRdy = (INT8U)(OSIntExitY 3) +OSUnMapTblOSRdyTblOSIntExitY);if (OSPrioHighRdy != OSPrioCur) OSTCBHighRdy = OSTCBPrioTblOSPrioHighRdy;OSCtxSwCtr+;OSIntCtxSw(); (4)OS_EXIT_CRITIC
31、AL();Interrupts Under uC/OS-II電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心實時內(nèi)核的中斷管理實時內(nèi)核的中斷管理 實時內(nèi)核通常提供如下中斷管理功能:實時內(nèi)核通常提供如下中斷管理功能: 掛接中斷服務(wù)程序。把一個函數(shù)(用戶中斷服務(wù)程序)同一個虛擬中斷向量表中的中斷向量聯(lián)系在一起。當(dāng)中斷向量對應(yīng)中斷發(fā)生的時候,被掛接的用戶中斷服務(wù)程序就會被調(diào)用執(zhí)行; 獲得中斷服務(wù)程序入口地址。根據(jù)中斷向量,獲得掛接在該中斷向量上的中斷服務(wù)程序的入口地址; 獲取中斷嵌套層次。在允許中斷嵌套的處理中,獲取當(dāng)前的中斷嵌套層次信息; 開中斷; 關(guān)中斷。 電子科技大學(xué)嵌入式軟件工程
32、中心電子科技大學(xué)嵌入式軟件工程中心用戶中斷服務(wù)程序用戶中斷服務(wù)程序 當(dāng)中斷線上發(fā)生中斷的時候,對應(yīng)中斷向量中當(dāng)中斷線上發(fā)生中斷的時候,對應(yīng)中斷向量中注冊的中斷服務(wù)程序就會被調(diào)用執(zhí)行。注冊的中斷服務(wù)程序就會被調(diào)用執(zhí)行。 中斷服務(wù)程序的注冊中斷號為索引,把處理中斷的函數(shù)的地址放置到中斷向量的地址表中。 中斷服務(wù)程序的啟動完全由CPU來負(fù)責(zé),不需要操作系統(tǒng)的處理。 如果處理器或?qū)崟r內(nèi)核允許中斷嵌套,中斷服如果處理器或?qū)崟r內(nèi)核允許中斷嵌套,中斷服務(wù)程序?qū)⒖赡鼙涣硗獾闹袛喾?wù)程序所搶占。務(wù)程序?qū)⒖赡鼙涣硗獾闹袛喾?wù)程序所搶占。 中斷嵌套將使代碼更加復(fù)雜,要求中斷服務(wù)程序是可重入的。 電子科技大學(xué)嵌入式軟
33、件工程中心電子科技大學(xué)嵌入式軟件工程中心用戶中斷服務(wù)程序用戶中斷服務(wù)程序 由于中斷服務(wù)程序中通常都對中斷進行了屏蔽,由于中斷服務(wù)程序中通常都對中斷進行了屏蔽,要求中斷服務(wù)程序應(yīng)該盡可能比較短,保證其要求中斷服務(wù)程序應(yīng)該盡可能比較短,保證其他中斷和系統(tǒng)中的任務(wù)能夠得到及時處理。他中斷和系統(tǒng)中的任務(wù)能夠得到及時處理。 中斷服務(wù)程序通常都只處理一些必要的操作,其他操作則通過任務(wù)的方式來進行。 中斷服務(wù)程序只是進行與外圍設(shè)備相關(guān)的數(shù)據(jù)的讀寫操作,并在需要的情況下向外圍設(shè)備發(fā)送確認(rèn)信息,然后喚醒另外的任務(wù)進行進一步的處理。 用來配合中斷服務(wù)程序的另外的任務(wù)通常被稱用來配合中斷服務(wù)程序的另外的任務(wù)通常被稱
34、為為DSRDSR(deferred service routinedeferred service routine)。)。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心/*Uses to handle data from dataReceiveISR*/dsrTask() while(1) wait_for_signal_from_isr(); process_data_of_ISR(); /*Uses to receive data by interrupt*/dataReceiveISR() get_data_from _device(); send_signal_to_w
35、akeup_dsrTask(); ISR與與DSR相結(jié)合的中斷處理方式相結(jié)合的中斷處理方式電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心用戶中斷服務(wù)程序用戶中斷服務(wù)程序 在中斷服務(wù)程序中可以使用實時內(nèi)核提供的應(yīng)用在中斷服務(wù)程序中可以使用實時內(nèi)核提供的應(yīng)用編程接口:編程接口: 但一般只能使用不會導(dǎo)致調(diào)用程序可能出現(xiàn)阻塞情況的編程接口,如可以進行掛起任務(wù)、喚醒任務(wù)、發(fā)送消息等操作; 但不要使用分配內(nèi)存、獲得信號量等可能導(dǎo)致中斷服務(wù)程序的執(zhí)行流程被阻塞的操作。 對中斷的處理不受任務(wù)調(diào)度程序的控制,并優(yōu)先于任務(wù)的處理。 如果中斷出現(xiàn)被阻塞的情況,將導(dǎo)致中斷不能被及時處理,其余工作也就無法
36、按時繼續(xù)進行,將嚴(yán)重影響整個系統(tǒng)的確定性。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心用戶中斷服務(wù)程序用戶中斷服務(wù)程序 中斷服務(wù)程序不能進行內(nèi)存分配和內(nèi)存釋中斷服務(wù)程序不能進行內(nèi)存分配和內(nèi)存釋放:放: 內(nèi)存分配和內(nèi)存釋放過程中通常都要使用信號量,以實現(xiàn)對維護內(nèi)存使用情況的全局?jǐn)?shù)據(jù)結(jié)構(gòu)的保護。 中斷服務(wù)程序也不能使用包含了這些操作中斷服務(wù)程序也不能使用包含了這些操作的編程接口。的編程接口。 意味著中斷服務(wù)程序不能使用關(guān)于對象創(chuàng)建和刪除方面(如任務(wù)創(chuàng)建與任務(wù)刪除)的操作。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心用戶中斷服務(wù)程序用戶中斷服務(wù)程序 中斷服務(wù)程序還
37、需要同系統(tǒng)中的任務(wù)進行通信。中斷服務(wù)程序還需要同系統(tǒng)中的任務(wù)進行通信。從中斷服務(wù)程序到任務(wù)的通信機制主要包括以下從中斷服務(wù)程序到任務(wù)的通信機制主要包括以下內(nèi)容:內(nèi)容: 共享內(nèi)存:中斷服務(wù)程序同任務(wù)共享變量、緩沖區(qū),實現(xiàn)中斷服務(wù)程序與任務(wù)之間的通信; 信號量:中斷服務(wù)程序可以釋放任務(wù)正在等待的信號量; 消息隊列:中斷服務(wù)程序可以把消息發(fā)送給正在等待該消息的任務(wù); 管道:中斷服務(wù)程序可以把消息寫到任務(wù)可以進行消息讀取的管道中; 異步信號:中斷服務(wù)程序可以向任務(wù)發(fā)送異步信號,使任務(wù)對應(yīng)的異步信號處理程序能夠得到執(zhí)行。 電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷時序中斷時序中斷延
38、遲中斷延遲中斷服務(wù)中斷服務(wù)程序程序時間時間中斷請求中斷請求后臺程后臺程序序CPUCPU上下文保存上下文保存CPUCPU上下文恢復(fù)上下文恢復(fù)用戶中斷服務(wù)子程序代碼用戶中斷服務(wù)子程序代碼中斷響應(yīng)中斷響應(yīng)中斷恢復(fù)中斷恢復(fù)電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷時序中斷時序中斷延遲中斷延遲中斷服務(wù)中斷服務(wù)程序程序時間時間中斷請求中斷請求任務(wù)或任務(wù)或內(nèi)核程序內(nèi)核程序CPUCPU上下文保存上下文保存CPUCPU上下文恢復(fù)上下文恢復(fù)用戶中斷服務(wù)子程序代碼用戶中斷服務(wù)子程序代碼中斷響應(yīng)中斷響應(yīng)中斷恢復(fù)中斷恢復(fù)任務(wù)任務(wù)電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷時序中
39、斷時序任務(wù)任務(wù)中斷恢復(fù)中斷恢復(fù)內(nèi)核中斷服務(wù)程內(nèi)核中斷服務(wù)程序出口函數(shù)序出口函數(shù)(7)(7)中斷響應(yīng)中斷響應(yīng)中斷返回中斷返回(12)(12)中斷返回中斷返回(9)(9)內(nèi)核中斷服務(wù)程內(nèi)核中斷服務(wù)程序出口函數(shù)序出口函數(shù)(10)(10)內(nèi)核中斷服務(wù)程內(nèi)核中斷服務(wù)程序入口函數(shù)序入口函數(shù)(5)(5)CPUCPU上下文恢復(fù)上下文恢復(fù)(11)(11)CPUCPU上下文恢復(fù)上下文恢復(fù)(8)(8)中斷延遲中斷延遲中斷服中斷服務(wù)務(wù)程序程序時間時間中斷請求中斷請求(1)(1)任務(wù)或內(nèi)核程序任務(wù)或內(nèi)核程序(2)(2)CPUCPU上下文保存上下文保存(4)(4)任務(wù)任務(wù)用戶中斷服務(wù)子程序代碼用戶中斷服務(wù)子程序代碼(6)(6)A AB B獲取中斷向量獲取中斷向量(3)(3)任務(wù)響應(yīng)任務(wù)響應(yīng)中斷恢復(fù)中斷恢復(fù)電子科技大學(xué)嵌入式軟件工程中心電子科技大學(xué)嵌入式軟件工程中心中斷延遲時間中斷延遲時間 中斷延遲時間中斷延遲時間是指從中斷發(fā)生到系統(tǒng)獲知中斷,是指從中斷發(fā)生到系統(tǒng)獲知中斷,并且開始并且開始執(zhí)行中斷服務(wù)程序執(zhí)行中斷服務(wù)程序所需要的最大滯后時所需要的最大滯后時間。間。 中斷延遲時間受到系統(tǒng)中斷延遲時間受到系統(tǒng)關(guān)中斷關(guān)中斷時間的影響:時間的影響: 實時系統(tǒng)在進入臨界區(qū)代碼段之前要關(guān)中斷,執(zhí)行完臨界代碼之后再開中斷
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度房地產(chǎn)項目稅收籌劃合同范本
- 《小數(shù)除法-解決問題》(教學(xué)設(shè)計)-2024-2025學(xué)年五年級上冊數(shù)學(xué)北京版
- 電動自行車共享項目可行性分析報告
- Unit 1 You and me. SectionB1a-2b讀寫課教學(xué)設(shè)計 2024-2025學(xué)年人教版英語七年級上冊
- 2025年度二手車交易售后服務(wù)跟蹤合同
- 2025年啞光漆項目可行性研究報告
- 2025年鏡下分析巖樣盤行業(yè)深度研究分析報告
- 2025年建筑安裝服務(wù)合作協(xié)議書
- 中國天然香料行業(yè)市場發(fā)展監(jiān)測及投資前景展望報告
- 2025年度物流行業(yè)短信跟蹤服務(wù)合同
- 人力資源外包合同范本
- 成人重癥患者顱內(nèi)壓增高防控護理專家共識2024
- 110KV送出線路工程施工組織設(shè)計方案和對策
- 城市交通系統(tǒng)中的空間正義問題-深度研究
- 2024年03月江蘇2024年中國工商銀行蘇州分行社會招考筆試歷年參考題庫附帶答案詳解
- 2025年北師大新版高二物理上冊階段測試試卷
- 2024年青島職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 北師大版數(shù)學(xué)三下集體備課計劃
- 《餐飲服務(wù)禮貌用語》課件
- 2025年中國融通資產(chǎn)管理集團限公司春季招聘(511人)高頻重點提升(共500題)附帶答案詳解
- 2024年纖維混合絮片項目可行性研究報告
評論
0/150
提交評論