鄭志偉
中國電子科技集團公司第三十四研究所 廣西 桂林 541004
當產品在具體的使用中,需要提高中斷事件的響應性能,但是,操作系統無法兼容和支持中斷嵌套,此時,如果所采用的設計方案過于復雜,那么將會降低產品的復雜性,甚至還會引發產品成本高、產品質量下降等問題。而中斷嵌套機制允許優先級中斷的快速執行,確保關鍵中斷事件響應速度慢問題得以有效解決,以滿足產品實時響應需求。因此,在SylixOS系統的應用背景下,如何科學研究和實現中斷嵌套機制是相關人員必須思考和解決的問題。
為了從根本上解決CPU循環等待問題,現采用程序查詢方式,將中斷系統引入到計算機系統中。同時,外設隨機事件要想享用CPU提供的服務[1],需要向CPU發出相應的中斷請求,此時,CPU會暫停所執行的所有程序,然后,響應外設隨機事件發出的請求,從而完成對中斷服務子程序的執行,當該子程序執行完畢后,CPU會繼續執行原程序。由此可見,CPU響應請求,執行程序不需要等待,因此,極大地提高了CPU工作效率和效果。c6x處理器內部含有的可屏蔽中斷有12個,各個中斷的優先級會隨著中斷號的降低而升高。中斷響應流程如圖1所示。為了保證中斷處理效率和效果,需要采用非嵌套處理方式,借助CPU,對中斷服務程序進行檢測,并嚴格按照中斷向量表相關標準和要求[2],從、找出與中斷向量表對應的服務程序,并對這些程序進行執行。中斷服務程序執行過程除了會被NMI打斷外,不會被其他情況所打斷,這樣一來,為最大限度地提高中斷服務程序的執行效率和效果打下堅實的基礎。

圖1 中斷響應流程
中斷嵌套作為一種常用的控制機制,主要是指CPU在實際的運行中,一旦遇到級別較高的中斷請求,會立即暫停當前正在執行的中斷服務程序,而優先執行級別較高的中斷服務程序,只有當該程序執行完畢后,才繼續執行原來的中斷服務程序。通常情況下,CPU僅僅支持NMI所對應的中斷嵌套,不支持其他類型的中斷嵌套。當SylixOS系統在執行中斷服務程序的過程中,會自動屏蔽其他中斷請求的響應,只有執行完當前的中斷服務程序,才會響應其他中斷請求,但這種處理模式顯然不符合實際需求,因此,相關人員要采用配置參數方式,對SylixOS系統相關參數進行配置,使得中斷嵌套機制應用于SylixOS系統中,確保SylixOS系統在執行當前中斷服務程序期間也能對其他中斷請求給予一定的響應的處理。首先,當SylixOS系統開始執行中斷服務程序時,需要對以下參數進行科學配置:①將NRP寄存器內容保存到SylixOS系統中;②將PGIE內容保存于SylixOS系統中;③將ITSR寄存器內容保存于SylixOS系統中;④將CIE設置為1。其次,當SylixOS系統執行完中斷服務程序后,系統代碼需要在第一時間內快速完成對寄存器相關內容的安全保存。同時,做好以下參數的配置。①將GIE位置設置為0;②將PGIE位所對應的內容進行恢復處理;③將ITSR寄存器所對應的內容進行恢復處理;④將NRP所對應的內容進行恢復處理。當中斷嵌套機制真正地發揮效應時,SylixOS系統在執行中斷服務程序的過程中,一旦檢測到級別更高的中斷請求時,會暫停當前所執行的中斷服務程序,而執行級別較高的中斷服務程序,當該程序執行完畢后,才能繼續執行原來的中斷服務程序。同時,為了提高SylixOS系統的運行性能,確保該系統能夠快速切換不同級別中斷服務程序執行操作,當SylixOS系統剛剛執行中斷服務程序期間,需要對當前系統所對應的運行環境進行及時備份,當級別較高的中斷服務程序執行完畢后,再將系統運行環境恢復到初始狀態,便于SylixOS系統繼續執行原來的中斷服務程序,只有這樣,才能充分發揮和利用中斷嵌套的應用優勢,使得SylixOS系統優先執行級別較高的中斷服務程序。
中斷向量表明確指出出各個中斷服務程序入口與中斷之間的一一對應關系。所有中斷向量均有一個中斷服務程序入口與之相對應,當CPU在具體的運行中,一旦檢測到中斷,那么就會自動跳轉到相對應的中斷服務程序入口,實現對這些程序的快速執行。
在SylixOS系統中,中斷服務程序接口主要負責對總中斷服務程序的調用,同時,還要借助中斷向量號,將中斷服務程序相關參數傳入并保存到SylixOS系統中,便于其他人員的查看和調用。為了確保SylixOS系統能夠可靠、穩定、安全地運行,需要采用全局終端使能方式,針對中斷服務程序處理需求,將終端嵌套機制應用于中斷處理領域中,以達到提高中斷處理效率和效果的目的,這樣一來,有利于不斷修改、優化和完善SylixOS系統內終端處理框架,確保該系統能夠很好地兼容不同硬件平臺,從而提高SylixOS系統的利用率。
為了更好地驗證中斷嵌套的可行性和有效性,相關人員
要重視對嵌入式系統中斷嵌套的全面測試。通常情況下,在保證中斷服務程序正常運行的基礎上,級別較高的中斷服務程序會被CPU優先執行。嵌入式系統中斷嵌套測試步驟如下:①采用配置GPIO7的方式,將中斷向量設置為3;采用配置GPIO8的方式,將中斷向量設置為5。②對于中斷向量3所對應的中斷服務程序而言,一旦進入到執行階段,系統會自動輸出“vector3enter”,在退出程序執行階段中,系統會自動輸出“vector3exit”。③對于中斷向量5所對應的中斷服務程序而言,一旦進入到執行階段,系統會自動輸出“vector5enter”,在退出程序執行階段中,系統會自動輸出“vector5exit”。④在觸發執行GPIO7后,方可觸發執行GPIO8,并對最終的顯示效果進行觀察和記錄。

圖4 實驗結果
實驗結果如圖4所示,從圖中可以看出,在測試SylixOS系統的過程中,中斷向量5所對應的中斷服務程序在執行的過程中,遇到中斷向量3所對應的中斷服務程序,由于中斷向量3級別較高,會優先執行中斷向量3程序,當該程序執行完畢后,才自動返回到中斷向量5,并繼續執行該向量所對應的中斷服務程序,這種實驗結果符合預期目標。
綜上所述,在SylixOS系統的應用背景下,為了有效地解決關鍵中斷事件響應慢問題,相關人員要重視對中斷嵌套機制的制定和完善,確保中斷嵌套機制的系統性、健全性和完整性,只有這樣,才能最大限度地提高關鍵中斷事件響應速度,避免因中斷事件響應效率而嚴重影響產品質量,甚至增大產品生產成本,為提高相關企業的社會效益和經濟效益,促進相關企業的健康、可持續發展提供有力的保障。