ARM中的軟件中斷
1. 首先介紹ARM內核的中斷控制器的幾種工作模式:
1.
快中斷是為支持數(shù)據(jù)傳輸或快速數(shù)據(jù)通道而設計的,為快速處理快中斷。①快中斷被設為最高中斷優(yōu)先級;②在快中斷模式增設了7個私有工作寄存器,從而避免了由于主工作寄存器數(shù)據(jù)的保存和恢復而帶來了額外開銷;③快中斷處理程序處于異常向量表的最后位置,因此可緊接異常向量表書寫快中斷處理程序,而不必進行程序跳轉操作,避免了刷新指令流水線和高速緩存。
軟件中斷是一種由用戶設置的同步中斷,由程序指令產(chǎn)生,不像硬件中斷那樣由外部事件觸發(fā)。軟件中斷允許運行在用戶模式的程序進入監(jiān)督模式,并運行監(jiān)督態(tài)下的函數(shù)。在 ARM7TDMI的硬件調試系統(tǒng)中,應用程序可利用軟件中斷來申請半自主式操作,例如,打開主機中的一個文件、向調試通道發(fā)送一個字符等等(這些操作必須依賴主機中C程序庫才能運行,因此被稱為半自主式的)。利用軟件中斷機制,可以直觀和高效地仿真調試應用程序。另外,軟件中斷也可用于一般性的程序控制。
2 .響應中斷和中斷返回
(1)中斷響應過程
1) 保存CPSR到將要執(zhí)行的異常中斷的SPSR;
2)設置CPSR的值:設置CPSR相應位的值使處理器進入特定的處理器模式,按要求屏蔽中斷;
3)設置LR寄存器:將中斷相應模式的LR寄存器的值設置為異常中斷的返回地址;
4)處理程序計數(shù)器PC:將PC值設為相應的中斷向量的地址。
(2)中斷返回過程
1)恢復CPSR:將保存在中斷模式中的SPSR值賦給當前的CPSR;
2)將返回地址復制到PC:這樣程序將返回到異常中斷產(chǎn)生的下一條指令或出現(xiàn)問題的指令處執(zhí)行。
*中斷的響應-返回流程圖
系統(tǒng)通常使用一個中斷控制器把設備的中斷集合在一起,然后再把信號傳送到CPU的一個單一的中斷管腳。這樣可以節(jié)省CPU的中斷管腳,也給系統(tǒng)設計帶來了靈活性。中斷控制器有掩碼和狀態(tài)寄存器,用于控制這些中斷。設置掩碼寄存器中相應的位,可以打開和禁止一個中斷,讀取狀態(tài)寄存器可以返回系統(tǒng)中當前活動的中斷。
一些系統(tǒng)中的中斷可能是硬連接的,例如實時時鐘的間隔計時器可能永久地連接到中斷控制器的第3管腳。但是,另一些管腳連接什么可能取決于在特定的ISA或者PCI插槽上插入的是什么控制卡。例如,中斷控制器的第4管腳可能和第0號PCI插槽相連,某一天該槽上可能插的是一塊以太網(wǎng)卡,另一天該槽上可能插的是一塊SCSI控制卡。每一個系統(tǒng)都有它自己的中斷中轉機制,操作系統(tǒng)必須足夠靈活才能處理它們。
大多數(shù)現(xiàn)代的通用目的微處理器都用相同的方式處理中斷。當發(fā)生硬件中斷時,CPU停止它正在運行的指令,跳到內存中一個位置運行,這里或者就是中斷處理代碼,或者是一條指令,通過它可以跳到中斷處理代碼。這種代碼通常在CPU的特殊模式(中斷模式)下工作,通常,在這種模式下其它中斷不能再產(chǎn)生。當然也有例外:一些CPU將中斷劃分級別,更高級別的中斷可以中斷低級的中斷。這意味著必須非常小心地寫第一級的中斷處理程序。一般的中斷處理程序通常都有自己的堆棧,當它被再次中斷而進入另一個中斷處理程序之前,用它來存放CPU的執(zhí)行狀態(tài)(CPU所有的通用寄存器和上下文)。一些CPU有一組只在中斷模式下存在的寄存器,中斷處理代碼可以使用這些寄存器來存儲它需要保存的大部分上下文信息。
評論