「FreeRTOS原始碼解析(五)」中斷管理
##熱愛記錄、鍾愛分享、酷愛生活
一、前言
甜妻來襲:總裁乖乖就範
期許
現代言情
免費閱讀
本期文章講解FreeRTOS實時作業系統原始碼,主要是原始碼分析,實操很少。上節講了FreeRTOS中臨界段的保護功能,臨界段雖然保護了關鍵程式碼的執行不被打斷,但也影響了系統的實時性。本節講解FreeRTOS的中斷管理。
二、一問一答
極品小醫神
重心開始
都市
免費閱讀
什麼是異常?
異常是導致處理器脫離正常執行轉向執行特殊程式碼的任何事件,如果不及時進行處理,輕則系統出錯,重則會導致系統毀滅性癱瘓。異常通常可以分成兩類:同步異常和非同步異常。
由內部事件引起的異常稱為同步異常,由於外部異常源(由外部硬體裝置產生的事件)產生的異常稱為非同步異常。同步異常觸發後,系統必須立刻進行處理而不能夠依然執行原有的程式指令步驟;而非同步異常則可以延緩處理甚至是忽略。
什麼是中斷?
中斷屬於非同步異常。中斷是指中央處理器 CPU 正在處理某件事的時候,外部發生了某一事件,請求 CPU 迅速處理,CPU暫時中斷當前的工作,轉入處理所發生的事件,處理完後,再回到原來被中斷的地方,繼續原來的工作。
中斷處理過程?
中斷的處理過程是:外界硬體發生了中斷後,CPU 到中斷處理器讀取中斷向量,並且查詢中斷向量表,找到對應的中斷服務子程式(ISR)的首地址,然後跳轉到對應的 ISR去做相應處理。
使用中斷的好處?
透過中斷機制,在外設不需要 CPU 介入時,CPU 可以執行其他任務,而當外設需要CPU 時透過產生中斷訊號使 CPU 立即停止當前任務轉而來響應中斷請求。這樣可以使CPU 避免把大量時間耗費在等待、查詢外設狀態的操作上,因此將大大提高系統實時性以及執行效率。
FreeRTOS中斷怎麼使用?
峽谷正能量
Iced子夜
遊戲
免費閱讀
中斷一般用於處理比較緊急的事件,只做簡單處理,例如標記該事件,在使用 FreeRTOS 系統時,一般使用訊號量、訊息或事件標誌組等標誌中斷的發生,將這些核心物件釋出給處理任務,處理任務再做具體處理。
FreeRTOS的中斷和臨界段關係?
臨界段保護關鍵程式碼的執行不被打斷,但也會影響系統的實時。作業系統的中斷在某些時候會有適當的中斷延遲,因此呼叫中斷遮蔽函式進入臨界段的時候,也需快進快出。FreeRTOS 允許一些高優先順序的中斷不被遮蔽掉,能夠及時做出響應,這些中斷不受系統管理,也不允許呼叫 FreeRTOS 中與中斷相關的任何 API 函式介面。
FreeRTOS的中斷是否支援巢狀?
新的高優先順序中斷打斷當前中斷處理過程,而去直接響應這個更高優先順序的新中斷源,稱之為中斷巢狀。
三、與中斷相關的概念
異世邪君
風凌天下
科幻
免費閱讀
中斷號:中斷請求訊號特定的標誌,cpu能夠判斷是哪個裝置提出的中斷請求,這個標誌就是中斷號。
中斷請求:“緊急事件”需向 CPU 提出申請,要求 CPU 暫停當前執行的任務,轉而處理該“緊急事件”,這一申請過程稱為中斷請求。
中斷優先順序:為使系統能夠及時響應並處理所有中斷,系統根據中斷時間的重要性和緊迫程度,將中斷源分為若干個級別,稱作中斷優先順序。
中斷處理程式:當外設產生中斷請求後,CPU 暫停當前的任務,轉而響應中斷申請,即執行中斷處理程式。
中斷觸發:中斷源發出並送給 CPU 控制訊號,表明該中斷源產生了中斷,要求 CPU 去響應該中斷,CPU 暫停當前任務,執行相應的中斷處理程式。
中斷觸發型別:外部中斷申請透過一個物理訊號傳送到 NVIC,可以是電平觸發或邊沿觸發。
中斷向量:中斷服務程式的入口地址。
中斷向量表:儲存中斷向量的儲存區,中斷向量與中斷號對應,中斷向量在中斷向量表中按照中斷號順序儲存。
臨界段:程式碼的臨界段也稱為臨界區,一旦這部分程式碼開始執行,則不允許任何中斷打斷。為確保臨界段程式碼的執行不被中斷,在進入臨界段之前須關中斷,而臨界段程式碼執行完畢後,要立即開中斷。
STM32F103的在啟動彙編程式碼中,部分中斷向量表如下。
四、中斷延遲
神秘總裁夜夜寵
魚不語
現代言情
免費閱讀
中斷延遲是指從硬體中斷髮生到開始執行中斷處理程式第一條指令之間的這段時間。
想了解更多精彩內容,快來關注嵌入式的那點事兒
「FreeRTOS原始碼解析(一)」連結串列
「FreeRTOS原始碼解析(二)」任務
「FreeRTOS原始碼解析(三)」就緒列表和排程
「FreeRTOS原始碼解析(四)」臨界段的保護
#