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