溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

深入淺出處理器(中)_中斷

發(fā)布時間:2020-08-21 15:45:56 來源:網(wǎng)絡(luò) 閱讀:3448 作者:三九感冒靈 欄目:系統(tǒng)運維

專題1—深入淺出處理器

2.處理器(中)_中斷

2.1中斷的概念和意義:

中斷時一種處理器與外設(shè)進行通信的機制,用于通知處理器外部有“重要事件”發(fā)生,一般情況下中斷需要被處理器響應(yīng)。

2.2中斷服務(wù)程序(ISR)

1.從外設(shè)中讀取中斷寄存器的值,以便了解中斷的類型
2.根據(jù)中斷類型具體設(shè)計處理邏輯
3.清除外設(shè)狀態(tài)寄存器中的中斷標志位
4.清理處理器中的中斷標識位
整個處理器過程如下所示:
深入淺出處理器(中)_中斷
軟件工程師眼中的中斷服務(wù)程序:
— 不能有返回值,不能有參數(shù)傳遞
— 必須短小而高效,避免浮點運算
錯誤示例:
__interrupt double compute_area(double radius)
{
double area = PI radius radius;
printf (“\n area = %f”, area);
return area;
}

2.3中斷的意義:

—中斷的意義在于應(yīng)用程序不必關(guān)心中斷的發(fā)生與處理
—中斷服務(wù)程序不必關(guān)系應(yīng)用程序的執(zhí)行狀態(tài)
—中斷是“上層應(yīng)用”與“底層代碼”的分割邊界。

深入淺出處理器(中)_中斷

2.4中斷的類型

—硬中斷:通過處理器中斷信號線產(chǎn)生的中斷
CPU和外部設(shè)備是分別獨立的硬件執(zhí)行單元,CPU對全部設(shè)備進行管理和資源調(diào)度處理,CPU要想知道外部設(shè)備的運行狀態(tài),要么CPU定時的去查看外部設(shè)備特定寄存器,要么讓外部設(shè)備在出現(xiàn)需要CPU干涉處理時“打斷”CPU,讓它來處理外部設(shè)備的請求,毫無疑問第二種方式更合理,可以讓CPU“專心”去工作,這里的“打斷”操作就叫做中斷請求,根據(jù)請求的緊急情況,中斷請求分一般中斷和快速中斷,快速中斷具有最高中斷優(yōu)先級和最小的中斷延遲,通常用于處理高速數(shù)據(jù)傳輸及通道的中數(shù)據(jù)恢復處理,如DMA等,絕大部分外設(shè)使用一般中斷請求。
—軟中斷:通過非法指令或者特殊指令出發(fā)的中斷(或者稱為異常)
異常是應(yīng)用程序自己調(diào)用時產(chǎn)生的,用于用戶程序申請訪問硬件資源時,例如:printf()打 印函數(shù),要將用戶數(shù)據(jù)打印到顯示器上,用戶程序要想實現(xiàn)打印必須申請使用顯示器,而用戶程序又沒有外設(shè)硬件的使用權(quán),只能通過使用軟件中斷指令切換到內(nèi)核態(tài),通過操作系統(tǒng)內(nèi)核代碼來訪問外設(shè)硬件,內(nèi)核態(tài)是工作在特權(quán)模式下,操作系統(tǒng)在特權(quán)模式下完成將用戶數(shù)據(jù)打印到顯示器上。這樣做的目的無非是為了保護操 作系統(tǒng)的安全和硬件資源的合理使用,該異常在管理模式下處理。

2.5中斷優(yōu)先級

多個中斷同時出現(xiàn)時,處理器會優(yōu)先響應(yīng)高優(yōu)先級的中斷,低優(yōu)先級的中斷ISR執(zhí)行時可以被高優(yōu)先級的中斷打斷。
思考:CPU如何保證fiq比irq快?有2個原因:
第一,fiq模式有專用的r8~r12,因此在fiq的isr中可以直接使用r8-r12而不用保存,這就能節(jié)省時間;
第二,異常向量表中fiq是最后一個異常向量入口。因此fiq的isr不需要跳轉(zhuǎn),可以直接寫在原地,這樣就比其他異常少跳轉(zhuǎn)一次,省了些時間。

2.6中斷的應(yīng)用_程序斷點

A.斷點指的是調(diào)試工具用于暫停代碼執(zhí)行的指令位置、
B.斷點的實現(xiàn)為處理器的中斷支持
軟件斷點:利用非法指令異常產(chǎn)生中斷實現(xiàn)(軟中斷)
硬件中斷:利用中斷寄存器的特定產(chǎn)生中斷實現(xiàn)
斷點程序的原理:
1.獲取源程序制定行對應(yīng)的代碼地址
2.把代碼地址中的指令替換為中斷觸發(fā)指令
3.在中斷服務(wù)程序中將控制權(quán)交給調(diào)試程序
4.調(diào)試程序讀取源程序上下文信息
5.調(diào)試程序?qū)⒋a中的指令還原
6.源程序從斷點處繼續(xù)向下執(zhí)行
上述過程和中斷的處理過程完全一致,圖解如下:
深入淺出處理器(中)_中斷

2.7中斷調(diào)試的工程應(yīng)用

背景:嵌入式產(chǎn)品的實時性要求很高,各個task 有嚴格的時間要求,斷點調(diào)試不可用,只能依賴于打印調(diào)試(日志調(diào)試發(fā)),但是打印調(diào)試,打印的數(shù)據(jù)分布于產(chǎn)品各個角落,難以分析和定位,同時打印操作設(shè)計到IO操作,會影響產(chǎn)品效率
解決思路:結(jié)合日志調(diào)試發(fā)和斷點調(diào)試法的優(yōu)點,使得實時系統(tǒng)調(diào)試時,能夠任意查看制定代碼行上下文信息;并且不增加打印語句,不暫停執(zhí)行。
最終方案:
1.獲取原程序制定行對應(yīng)的代碼地址
2.把代碼地址中的指令替換為中斷觸發(fā)指令
3.在中斷服務(wù)程序中抓取全局信息和棧信息
4.抓取的信息發(fā)送會調(diào)試程序解析并輸出
深入淺出處理器(中)_中斷
本文參考自狄泰課程,特此致謝。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI