Hi ALL!
最近在定位一個關(guān)于中斷的問題,以前看待這些問題是割裂的,要不是軟件怎么設(shè)計中斷,要不是硬件怎么設(shè)計中斷。
正好乘著這次機會,站在軟硬件交互的角度將中斷的知識來梳理一下。
對了,今天天氣不錯,周末快樂!
中斷是什么?
中斷是指計算機在執(zhí)行期間,系統(tǒng)內(nèi)發(fā)生任何非尋常的或非預(yù)期的急需處理事件,使得CPU暫時中斷當(dāng)前正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序(Interrupt Service Routine, ISR)。這個事件可以是由硬件設(shè)備觸發(fā)(如硬盤讀寫錯誤、打印機沒有紙等),也可以是由軟件觸發(fā)(如用戶按下Ctrl+C)。
當(dāng)發(fā)生中斷時,CPU會暫停當(dāng)前正在執(zhí)行的程序,并跳轉(zhuǎn)到相應(yīng)的中斷處理程序(Interrupt Service Routine, ISR)去處理這個事件。中斷處理程序通常會保存當(dāng)前任務(wù)的上下文信息(如CPU寄存器的狀態(tài)、內(nèi)存中的數(shù)據(jù)等),然后執(zhí)行相應(yīng)的中斷處理操作(如讀取數(shù)據(jù)、發(fā)送響應(yīng)等)。在中斷處理完畢后,CPU會恢復(fù)之前保存的上下文信息,并回到被中斷的任務(wù)繼續(xù)執(zhí)行。
中斷是一種異步的事件處理機制,可以提高系統(tǒng)的并發(fā)處理能力。在現(xiàn)代計算機系統(tǒng)中,中斷被廣泛應(yīng)用于處理各種硬件設(shè)備事件和軟件異常情況。
我們知道中斷的發(fā)生與處理是一個需要軟硬件交互的操作。
?關(guān)中斷:進入不可響應(yīng)中斷請求的中斷,由硬件自動完成?保存斷點:把當(dāng)前的程序計數(shù)器PC中的內(nèi)容保存起來,用于中斷處理結(jié)束后能繼續(xù)執(zhí)行主程序?識別中斷源:有多個中斷源同時請求時,只能響應(yīng)最高優(yōu)先級的,因此需進一步判斷中斷源?保存現(xiàn)場和屏蔽字:進入中斷服務(wù)程序后,要先保存現(xiàn)場?設(shè)置新的屏蔽字:用于改變中斷優(yōu)先級和控制中斷的產(chǎn)生?開中斷:執(zhí)行中斷程序時,打開中斷可實現(xiàn)更高優(yōu)先級的中斷響應(yīng),實現(xiàn)中斷嵌套?執(zhí)行中斷服務(wù)程序:執(zhí)行中斷服務(wù)程序中的內(nèi)容?再次關(guān)中斷:使得恢復(fù)現(xiàn)場和屏蔽字時不會被中斷打斷?恢復(fù)現(xiàn)場和屏蔽字:使現(xiàn)場和屏蔽字恢復(fù)到中斷之前的狀態(tài)?再次開中斷:中斷執(zhí)行完,現(xiàn)場恢復(fù)完后,可以打開中斷?中斷返回:返回原程序繼續(xù)執(zhí)行
處理過程,會經(jīng)歷兩次的開/關(guān)中斷,也可用下圖描述
在之前我們在做嵌入式的時候,大多是關(guān)注了軟件層面,如何注冊中斷,如何設(shè)計中斷的參數(shù),如何編寫中斷服務(wù)函數(shù),如何將中斷服務(wù)綁定到中斷號。做linux中斷的話,這些都是定義好的,你可以去調(diào)用接口,當(dāng)然也支持自定義添加新的中斷。
后面這部分可以好好展開學(xué)習(xí)一下,當(dāng)然是在我的內(nèi)存系列結(jié)束后。
但是既然是一個軟硬件交互的過程,那么這里就拉著硬件和軟件兩位伙伴來看看一個完整的中斷過程。
前置知識
在開始描述一個中斷的軟硬件流程之前,我們需要提前預(yù)備幾個前置知識點。
單重中斷與多重中斷
?單重中斷在CPU執(zhí)行中斷服務(wù)程序的過程中不能被打斷。當(dāng)有新的更高優(yōu)先級的中斷發(fā)生時,正在執(zhí)行的中斷服務(wù)程序會被暫停,轉(zhuǎn)而執(zhí)行新的中斷服務(wù)程序。?多重中斷在執(zhí)行某個中斷服務(wù)程序的過程中,CPU可以去響應(yīng)更高的中斷請求。這被稱為中斷嵌套。比如,當(dāng)一個中斷服務(wù)程序正在執(zhí)行時,發(fā)生了另一個更高優(yōu)先級的中斷,CPU會暫停當(dāng)前的中斷服務(wù)程序,轉(zhuǎn)而執(zhí)行新的中斷服務(wù)程序。一旦新的中斷服務(wù)程序執(zhí)行完畢,CPU會返回到原來被暫停的中斷服務(wù)程序,繼續(xù)執(zhí)行。
注意:單重中斷和多重中斷的區(qū)別在于“開中斷”的設(shè)置時間不同。對于單重中斷,開中斷指令設(shè)置在最后“中斷返回”之前,意味著在整個中斷服務(wù)處理過程中,不能再響應(yīng)其他中斷源的請求。而對于多重中斷,開中斷指令提前至“保護現(xiàn)場”之后,意味著在保護現(xiàn)場之后,若有更高級別的中斷源提出請求,CPU也可以響應(yīng),從而實現(xiàn)中斷嵌套,這是二者的主要區(qū)別。
多重中斷與中斷屏蔽技術(shù)
上面我們知道了單重中斷和多重中斷的區(qū)別:
中斷的嵌套不能一直嵌套下去,為了保證正在執(zhí)行的中斷服務(wù)程序的完整性和提高系統(tǒng)的效率和響應(yīng)速度,有時候我們在執(zhí)行種的時候不想新的中斷請求干擾正在執(zhí)行的中斷服務(wù)程序來提高系統(tǒng)的效率和響應(yīng)速度和保證正在執(zhí)行的中斷服務(wù)程序的完整性。
那么這個時候就出現(xiàn)了中斷屏蔽技術(shù)。
1、中斷屏蔽技術(shù):主要用于多重中斷
多重中斷:(中斷嵌套)當(dāng)CPU正在執(zhí)行某個中斷服務(wù)程序時,另一個中斷源又提出了新的中斷請求,而CPU又響應(yīng)了這個新的請求,暫時停止正在運行的服務(wù)程序,轉(zhuǎn)去執(zhí)行新的中斷服務(wù)程序,這稱為多重中斷,又稱中斷嵌套。
如果CPU對新的請求不予響應(yīng),待執(zhí)行完當(dāng)前的服務(wù)程序后再響應(yīng),即為單重中斷。
中斷系統(tǒng)若要具有處理多重中斷的功能,必須具備各項條件。
?1)提前設(shè)置“開中斷”指令:一般情況下,CPU進入中斷周期后,由中斷隱指令自動將EINT置“0”,即關(guān)中斷。
中斷隱指令指CPU響應(yīng)中斷之后,經(jīng)過某些操作,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序的一種操作。
這就意味著CPU在執(zhí)行中斷服務(wù)程序中禁止響應(yīng)新的中斷請求。CPU若想再次響應(yīng)中斷請求,必須開中斷,
這一任務(wù)通常由中斷服務(wù)程序中的開中斷指令實現(xiàn)。
多重中斷示意圖如下:
?2)、優(yōu)先級別高的中斷源有權(quán)中斷優(yōu)先級別低的中斷源。
在滿足1的前提下,只有優(yōu)先級別更高的中斷源請求才可以中斷比其級別低的中斷服務(wù)程序,反之則不然。
為了保證級別低的中斷源不干擾比其級別高的中斷源的中斷處理過程,可采用屏蔽技術(shù)。
例如,有A、B、C、D 4個中斷源,其優(yōu)先級按A->B->C->D由高向低次序排列。在CPU執(zhí)行主程序期間,同時出現(xiàn)了B和C的中斷請求,由于B級別高于C,故首先執(zhí)行B的服務(wù)程序。
當(dāng)B的服務(wù)程序執(zhí)行完返回主程序后,由于C請求未撤銷,故CPU又再去執(zhí)行C的中斷服務(wù)程序。若此時又出現(xiàn)了D的請求,因為D級別低于C,故CPU不響應(yīng)。當(dāng)C的服務(wù)程序執(zhí)行完返回主程序后再去執(zhí)行D的服務(wù)程序。
若此時又出現(xiàn)了A請求,因A級別高于D,故CPU暫停對D級中斷服務(wù)程序的執(zhí)行,轉(zhuǎn)去執(zhí)行A級中斷服務(wù)程序,等A級服務(wù)程序執(zhí)行完后,再去執(zhí)行D級中斷服務(wù)程序。上述中斷處理示意圖如下:
2、屏蔽技術(shù)
?1)屏蔽觸發(fā)器和屏蔽字:程序中斷接口電路中,完成觸發(fā)器D,中斷請求觸發(fā)器INTR和屏蔽觸發(fā)器MASK。
在程序中斷接口電路中,有三個重要的組成部分:完成觸發(fā)器D,中斷請求觸發(fā)器INTR和屏蔽觸發(fā)器MASK。這些組件都扮演著各自的角色,以實現(xiàn)程序中斷處理的功能。
完成觸發(fā)器D:當(dāng)設(shè)備工作完成時,會將D置為1,這表示中斷源已經(jīng)準(zhǔn)備好向CPU發(fā)送中斷請求。
中斷請求觸發(fā)器INTR:當(dāng)設(shè)備發(fā)出中斷請求時,INTR會被置為1。這個觸發(fā)器是用來向CPU發(fā)送中斷請求的。
屏蔽觸發(fā)器MASK:每個中斷源都有一個與之對應(yīng)的屏蔽觸發(fā)器,如果該中斷源被屏蔽(即MASK=1),那么即使INTR被置為1,CPU也不會響應(yīng)這個中斷請求。換句話說,屏蔽觸發(fā)器可以阻止特定的中斷源向CPU發(fā)送中斷請求。
所有的屏蔽觸發(fā)器組合在一起,構(gòu)成了屏蔽寄存器。
?當(dāng)中斷源被屏蔽時(MASK=1),此時即使D=1,中斷查詢信號到來時刻只能將INTR置“0”,CPU接收不到該中斷源的中斷請求,即它被屏蔽。?若該中斷源未被屏蔽(MASK=0),當(dāng)設(shè)備工作已完成時(D=1),中斷查詢信號則將INTR置“1”,表示該中斷源向CPU發(fā)出中斷請求,?該信號送至排隊器進行優(yōu)先級判斷。顯然,對于每個中斷請求觸發(fā)器就有一個屏蔽觸發(fā)器,將所有屏蔽觸發(fā)器組合在一起,便構(gòu)成了一個屏蔽寄存器。屏蔽寄存器的內(nèi)容稱為屏蔽字。屏蔽字與中斷源的優(yōu)先級是一一對應(yīng)的。
?2)屏蔽技術(shù)可改變優(yōu)先等級:嚴(yán)格地說,優(yōu)先級包含響應(yīng)優(yōu)先級和處理優(yōu)先級。響應(yīng)優(yōu)先級是指CPU響應(yīng)各中斷源請求的優(yōu)先次序,這種次序往往是硬件線路已設(shè)置好的,不便于改動。處理優(yōu)先級是指CPU實際對各中斷源請求的處理優(yōu)先次序。如果不采用屏蔽技術(shù),響應(yīng)的優(yōu)先次序就是處理的優(yōu)先次序。采用了屏蔽技術(shù)后,可以改變CPU處理各中斷源的優(yōu)先等級,從而改變CPU執(zhí)行程序的軌跡。
例如,A、B、C、D 這4個中斷源的優(yōu)先級別按A->B->C->D降序排列,根據(jù)這一次序,CPU執(zhí)行程序的軌跡如下圖所示。當(dāng)4個中斷源同時提出
在不改變CPU響應(yīng)中斷的次序下,通過改變屏蔽字可以改變CPU處理中斷的次序。例如,更改上述4個中斷源的屏蔽字將其處理次序更改為:
CPU在運行程序的過程中,若A、B、C、D 4個中斷源同時提出請求,按照中斷級別的高低,CPU首先響應(yīng)并處理A中斷源的請求,由于A的屏蔽字是1111,屏蔽了所有的中斷源,故A程序可以全部執(zhí)行完,然后回到主程序。
由于B、C、D的中斷請求還未響應(yīng),而B的響應(yīng)優(yōu)先級高于其他,所以CPU響應(yīng)B的請求,進入B的中斷服務(wù)程序。
在B的服務(wù)程序中,由于設(shè)置了新的屏蔽字0100,即A、C、D可打斷B,而A程序已執(zhí)行完,C的響應(yīng)優(yōu)先級高于D,于是CPU響應(yīng)C,進入C的服務(wù)程序。
在C的服務(wù)程序中,由于設(shè)置了的屏蔽字0110,即A、D可打斷C,A已執(zhí)行于是CPU響應(yīng)D,執(zhí)行D的中斷服務(wù)程序。
D一直做完后回到C程序,C程序執(zhí)行完后,回到B程序。
B程序做完后,回到主程序。
在中斷處理過程中,CPU首先會檢查INTR,如果INTR為1,那么CPU會進一步檢查對應(yīng)的屏蔽觸發(fā)器(MASK),如果MASK也為1,那么該中斷源的中斷請求會被屏蔽,CPU不會響應(yīng);如果MASK為0,那么CPU會響應(yīng)這個中斷請求,轉(zhuǎn)去執(zhí)行對應(yīng)的中斷服務(wù)程序。
這個過程是自動進行的,不需要程序員明確地編寫相關(guān)的指令。在硬件設(shè)計中,程序員需要根據(jù)實際需求來設(shè)置INTR、D和MASK的值,以實現(xiàn)正確的中斷處理。
你是軟件程序員還是硬件程序員呢?
3、屏蔽技術(shù)的意義
屏蔽技術(shù)還能給程序控制帶來更大的靈活性。例如,在浮點運算中,當(dāng)程序員估計到執(zhí)行某段程序時可能出現(xiàn)“階上溢”,但又不希望因“階上溢”而使機器停機,為此可設(shè)一屏蔽字,使對應(yīng)“階上溢”的屏蔽位為“1”,這樣,即使出現(xiàn)“階上溢”,機器也不停機。
在某些情況下,程序員可能希望在執(zhí)行某些操作之前禁止其他中斷,以防止這些中斷干擾正在進行的操作。通過將對應(yīng)的中斷屏蔽觸發(fā)器設(shè)置為1(即屏蔽該中斷),程序員可以確保在執(zhí)行這些操作期間,不會受到來自該中斷源的中斷請求干擾。
此外,屏蔽技術(shù)還可以用于實現(xiàn)優(yōu)先級控制。例如,如果系統(tǒng)中有多個中斷源,并且程序員希望在某些操作完成之前不響應(yīng)其他低優(yōu)先級的中斷,那么可以通過調(diào)整屏蔽字的設(shè)置,改變CPU對不同中斷源的處理優(yōu)先級。這樣,程序員可以更好地控制程序的執(zhí)行流程和中斷處理順序,從而優(yōu)化系統(tǒng)的性能和響應(yīng)速度。
另外,屏蔽技術(shù)還可以用于調(diào)試程序。當(dāng)程序中存在某些不可預(yù)見的錯誤時,程序員可以通過設(shè)置相應(yīng)的屏蔽字,禁止某些中斷請求,以避免這些錯誤對程序執(zhí)行造成干擾。同時,通過查看被屏蔽的中斷服務(wù)程序表,程序員可以及時發(fā)現(xiàn)錯誤并采取相應(yīng)的措施進行修復(fù)。
屏蔽技術(shù)為程序員提供了一種強大的工具,可以更加靈活地控制程序的執(zhí)行和中斷處理過程。通過合理使用屏蔽技術(shù),可以提高系統(tǒng)的穩(wěn)定性和性能,滿足各種復(fù)雜的應(yīng)用需求。
一個中斷的一生
現(xiàn)在有了上述的基識,如何從軟件與硬件的角度去看一個中斷,一個中斷的完整流程應(yīng)該是什么樣子?
?創(chuàng)建對應(yīng)的中斷服務(wù)函數(shù)(軟件):在編寫操作系統(tǒng)或應(yīng)用程序時,需要為每個中斷源創(chuàng)建一個對應(yīng)的中斷服務(wù)函數(shù)(Interrupt Service Routine, ISR)。這個函數(shù)是用于處理特定中斷的程序,當(dāng)發(fā)生中斷時,處理器會跳轉(zhuǎn)到這個函數(shù)執(zhí)行相應(yīng)的操作。?將中斷服務(wù)函數(shù)綁定到特定的中斷號,也叫中斷注冊(軟件):在操作系統(tǒng)或硬件系統(tǒng)中,需要將每個中斷源與相應(yīng)的中斷號進行綁定。這個過程通常在初始化時完成,以確保當(dāng)發(fā)生中斷時能夠正確地調(diào)用相應(yīng)的中斷服務(wù)函數(shù)。這個綁定可以通過編程實現(xiàn),例如在Linux系統(tǒng)中可以使用register_interrupt函數(shù)將中斷服務(wù)函數(shù)注冊到特定的中斷號。?模塊產(chǎn)生原始中斷(邏輯):當(dāng)某個硬件設(shè)備需要中斷處理器服務(wù)時,它會向中斷控制器發(fā)送一個中斷請求。這個請求可能由硬件信號線或特定協(xié)議(如PCI Express)發(fā)送。例如,當(dāng)硬盤讀寫錯誤時,硬盤控制器會向中斷控制器發(fā)送一個中斷請求。
原始中斷是指當(dāng)某個設(shè)備或部件需要CPU的注意時,它會通過向CPU發(fā)送一個中斷信號來請求CPU的注意。這個中斷信號是由硬件電路產(chǎn)生的,是電信號,可以被CPU感知到。原始中斷通常是由硬件設(shè)備或系統(tǒng)自發(fā)產(chǎn)生的,例如鍵盤按鍵、定時器、打印機等。
?經(jīng)過int_mask判斷后未被屏蔽從而中斷狀態(tài)拉高(邏輯):中斷控制器接收到中斷請求后,會根據(jù)int_mask判斷該中斷是否被屏蔽。如果未被屏蔽,則將中斷狀態(tài)拉高,以便處理器能夠感知到這個中斷請求。這個過程中斷控制器會根據(jù)int_mask中的位圖判斷當(dāng)前的中斷是否被屏蔽,如果未被屏蔽則將對應(yīng)的中斷狀態(tài)位拉高。
中斷的int_mask是中斷掩碼。它是一個只讀寄存器,用于顯示哪些位當(dāng)前被屏蔽,哪些位未被屏蔽/啟用。通過設(shè)置int_mask,可以屏蔽或開啟某些中斷。
?模塊頂層信號 xxx_int拉高后,送給特定中斷號對應(yīng)處理器(CPU&MCU等)的對應(yīng)bit(邏輯):當(dāng)中斷狀態(tài)被拉高后,模塊頂層信號 xxx_int 會被拉高,并將這個信號送給特定中斷號對應(yīng)處理器的對應(yīng)bit。這個過程是由硬件邏輯實現(xiàn)的,通常與處理器的架構(gòu)和中斷控制器的設(shè)計有關(guān)。例如,在x86架構(gòu)的計算機中,當(dāng)某個中斷狀態(tài)被拉高后,對應(yīng)的處理器會通過APIC總線將對應(yīng)的中斷信號發(fā)送給處理器。?中斷信號拉高后,進入對應(yīng)bit的中斷服務(wù)函數(shù)(邏輯):當(dāng)處理器的對應(yīng)bit接收到中斷信號后,處理器會跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)函數(shù)去處理這個中斷。這個過程是由硬件自動完成的,通常與處理器的架構(gòu)和操作系統(tǒng)的設(shè)計有關(guān)。例如,在x86架構(gòu)的計算機中,當(dāng)處理器接收到一個中斷信號后,它會通過CSIP和IVT寄存器跳轉(zhuǎn)到對應(yīng)的中斷服務(wù)函數(shù)執(zhí)行相應(yīng)的操作。
硬件層面,中斷系統(tǒng)需要硬件設(shè)備(如中斷控制器)來捕捉中斷信號,并將信號傳遞給CPU。在接收到中斷信號后,CPU會根據(jù)中斷號在中斷向量表中查找對應(yīng)的入口地址,然后跳轉(zhuǎn)到這個地址執(zhí)行對應(yīng)的中斷服務(wù)程序。這個過程是由硬件自動執(zhí)行的,不需要軟件的參與。
?執(zhí)行中斷服務(wù)函數(shù)的內(nèi)容(軟件):在中斷服務(wù)函數(shù)中,會根據(jù)設(shè)備的需求進行相應(yīng)的操作,例如讀取數(shù)據(jù)、發(fā)送響應(yīng)等。這個過程是由軟件實現(xiàn)的,通常與設(shè)備的驅(qū)動程序和操作系統(tǒng)的設(shè)計有關(guān)。例如,在Linux系統(tǒng)中,當(dāng)執(zhí)行完一個中斷服務(wù)函數(shù)后,它通常會通過調(diào)用handle_irq_event函數(shù)來處理設(shè)備的事件。
MORE
中斷向量表
在ARM處理器中,當(dāng)一個中斷信號被觸發(fā)時,中斷控制器會發(fā)出一個中斷請求,并將該請求傳遞給CPU。 CPU接收到中斷請求后,會根據(jù)中斷號在中斷向量表中查找對應(yīng)的中斷服務(wù)程序入口地址。 中斷向量表是一個預(yù)定義的表,其中每個條目都包含一個指向特定中斷服務(wù)程序的入口地址。 當(dāng)CPU接收到中斷請求時,它會根據(jù)中斷號在表中查找對應(yīng)的條目,獲取對應(yīng)的入口地址,并跳轉(zhuǎn)到該地址執(zhí)行相應(yīng)的中斷服務(wù)程序。 在這個過程中,程序員可以通過設(shè)置中斷向量表中的條目來定義不同中斷源的中斷服務(wù)程序入口地址。 這樣可以實現(xiàn)自定義的中斷處理邏輯,根據(jù)不同的中斷事件執(zhí)行相應(yīng)的操作。 需要注意的是,在ARM處理器中,不同的工作模式(例如User、FIQ、IRQ、SVC等)使用不同的寄存器集和特權(quán)級別。 當(dāng)中斷發(fā)生時,CPU會根據(jù)當(dāng)前的工作模式和中斷向量表中的條目,確定要跳轉(zhuǎn)到的中斷服務(wù)程序的入口地址。 然后它會將CPU的狀態(tài)保存到相應(yīng)的棧中,并跳轉(zhuǎn)到該地址執(zhí)行中斷服務(wù)程序。 在ARM處理器中,中斷向量表是一個預(yù)定義的表,它通常在系統(tǒng)啟動時由引導(dǎo)加載器(Bootloader)或操作系統(tǒng)進行定義和初始化。 引導(dǎo)加載器在系統(tǒng)啟動時負(fù)責(zé)加載和啟動操作系統(tǒng)的內(nèi)核。在這個過程中,它會讀取存儲器中的中斷向量表數(shù)據(jù),并將其復(fù)制到指定的內(nèi)存地址。 這個地址通常是在系統(tǒng)配置時確定的,以確保中斷向量表可以在正確的位置被CPU訪問。 操作系統(tǒng)在啟動后也會接管中斷向量表的管理和配置。它會根據(jù)系統(tǒng)中斷控制器和其他硬件設(shè)備的配置,將中斷向量表中的條目映射到相應(yīng)的中斷服務(wù)程序入口地址。 這樣,當(dāng)中斷發(fā)生時,CPU可以根據(jù)中斷號在中斷向量表中查找對應(yīng)的條目,并跳轉(zhuǎn)到對應(yīng)的地址執(zhí)行相應(yīng)的中斷服務(wù)程序。 需要注意的是,中斷向量表的定義方式和具體實現(xiàn)可能會因不同的ARM處理器架構(gòu)和系統(tǒng)設(shè)計而有所不同。 因此,具體的定義位置和方式可能會因硬件平臺和操作系統(tǒng)而有所差異。 這部分又涉及到編譯與內(nèi)存分布了,這里就不展開講了,有機會的一起看看。
Raw Interrupt和Masked Interrupt
Raw Interrupt和Masked Interrupt是兩種中斷類型,它們在ARM處理器中被用來處理中斷。
Raw Interrupt(原始中斷)是指外部中斷源的狀態(tài),無論ARM芯片是否屏蔽該中斷源,這個中斷源的中斷狀態(tài)都會被寄存器存儲,從而可以通過相應(yīng)的函數(shù)讀取。
Masked Interrupt(屏蔽中斷)是指是否屏蔽的狀態(tài)。在ARM處理器中,每個中斷源都有一個與之對應(yīng)的屏蔽觸發(fā)器,如果該中斷源被屏蔽(即MASK=1),那么即使INTR被置為1,CPU也不會響應(yīng)這個中斷請求。換句話說,屏蔽觸發(fā)器可以阻止特定的中斷源向CPU發(fā)送中斷請求。所有的屏蔽觸發(fā)器組合在一起,構(gòu)成了屏蔽寄存器。
-
ARM
+關(guān)注
關(guān)注
134文章
9351瀏覽量
377435 -
寄存器
+關(guān)注
關(guān)注
31文章
5434瀏覽量
124443 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2039瀏覽量
62139
原文標(biāo)題:參考資料
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
嵌入式系統(tǒng)軟硬件基礎(chǔ)知識大全
支持過程級動態(tài)軟硬件劃分的RSoC設(shè)計與實現(xiàn)
計算機軟硬件知識
什么是移動機器人軟硬件系統(tǒng)問題
基于EDA 的嵌入式系統(tǒng)軟硬件劃分方法
基于FPGA的軟硬件協(xié)同測試設(shè)計影響因素分析與設(shè)計實現(xiàn)
軟硬件協(xié)同設(shè)計機遇與挑戰(zhàn)分析
軟硬件協(xié)同設(shè)計是系統(tǒng)芯片的基礎(chǔ)設(shè)計方法學(xué)
為什么要從“軟硬件協(xié)同”走向“軟硬件融合”?
軟硬件融合的概念和內(nèi)涵

評論