鄭志偉
中國(guó)電子科技集團(tuán)公司第三十四研究所 廣西 桂林 541004
當(dāng)產(chǎn)品在具體的使用中,需要提高中斷事件的響應(yīng)性能,但是,操作系統(tǒng)無法兼容和支持中斷嵌套,此時(shí),如果所采用的設(shè)計(jì)方案過于復(fù)雜,那么將會(huì)降低產(chǎn)品的復(fù)雜性,甚至還會(huì)引發(fā)產(chǎn)品成本高、產(chǎn)品質(zhì)量下降等問題。而中斷嵌套機(jī)制允許優(yōu)先級(jí)中斷的快速執(zhí)行,確保關(guān)鍵中斷事件響應(yīng)速度慢問題得以有效解決,以滿足產(chǎn)品實(shí)時(shí)響應(yīng)需求。因此,在SylixOS系統(tǒng)的應(yīng)用背景下,如何科學(xué)研究和實(shí)現(xiàn)中斷嵌套機(jī)制是相關(guān)人員必須思考和解決的問題。
為了從根本上解決CPU循環(huán)等待問題,現(xiàn)采用程序查詢方式,將中斷系統(tǒng)引入到計(jì)算機(jī)系統(tǒng)中。同時(shí),外設(shè)隨機(jī)事件要想享用CPU提供的服務(wù)[1],需要向CPU發(fā)出相應(yīng)的中斷請(qǐng)求,此時(shí),CPU會(huì)暫停所執(zhí)行的所有程序,然后,響應(yīng)外設(shè)隨機(jī)事件發(fā)出的請(qǐng)求,從而完成對(duì)中斷服務(wù)子程序的執(zhí)行,當(dāng)該子程序執(zhí)行完畢后,CPU會(huì)繼續(xù)執(zhí)行原程序。由此可見,CPU響應(yīng)請(qǐng)求,執(zhí)行程序不需要等待,因此,極大地提高了CPU工作效率和效果。c6x處理器內(nèi)部含有的可屏蔽中斷有12個(gè),各個(gè)中斷的優(yōu)先級(jí)會(huì)隨著中斷號(hào)的降低而升高。中斷響應(yīng)流程如圖1所示。為了保證中斷處理效率和效果,需要采用非嵌套處理方式,借助CPU,對(duì)中斷服務(wù)程序進(jìn)行檢測(cè),并嚴(yán)格按照中斷向量表相關(guān)標(biāo)準(zhǔn)和要求[2],從、找出與中斷向量表對(duì)應(yīng)的服務(wù)程序,并對(duì)這些程序進(jìn)行執(zhí)行。中斷服務(wù)程序執(zhí)行過程除了會(huì)被NMI打斷外,不會(huì)被其他情況所打斷,這樣一來,為最大限度地提高中斷服務(wù)程序的執(zhí)行效率和效果打下堅(jiān)實(shí)的基礎(chǔ)。
圖1 中斷響應(yīng)流程
中斷嵌套作為一種常用的控制機(jī)制,主要是指CPU在實(shí)際的運(yùn)行中,一旦遇到級(jí)別較高的中斷請(qǐng)求,會(huì)立即暫停當(dāng)前正在執(zhí)行的中斷服務(wù)程序,而優(yōu)先執(zhí)行級(jí)別較高的中斷服務(wù)程序,只有當(dāng)該程序執(zhí)行完畢后,才繼續(xù)執(zhí)行原來的中斷服務(wù)程序。通常情況下,CPU僅僅支持NMI所對(duì)應(yīng)的中斷嵌套,不支持其他類型的中斷嵌套。當(dāng)SylixOS系統(tǒng)在執(zhí)行中斷服務(wù)程序的過程中,會(huì)自動(dòng)屏蔽其他中斷請(qǐng)求的響應(yīng),只有執(zhí)行完當(dāng)前的中斷服務(wù)程序,才會(huì)響應(yīng)其他中斷請(qǐng)求,但這種處理模式顯然不符合實(shí)際需求,因此,相關(guān)人員要采用配置參數(shù)方式,對(duì)SylixOS系統(tǒng)相關(guān)參數(shù)進(jìn)行配置,使得中斷嵌套機(jī)制應(yīng)用于SylixOS系統(tǒng)中,確保SylixOS系統(tǒng)在執(zhí)行當(dāng)前中斷服務(wù)程序期間也能對(duì)其他中斷請(qǐng)求給予一定的響應(yīng)的處理。首先,當(dāng)SylixOS系統(tǒng)開始執(zhí)行中斷服務(wù)程序時(shí),需要對(duì)以下參數(shù)進(jìn)行科學(xué)配置:①將NRP寄存器內(nèi)容保存到SylixOS系統(tǒng)中;②將PGIE內(nèi)容保存于SylixOS系統(tǒng)中;③將ITSR寄存器內(nèi)容保存于SylixOS系統(tǒng)中;④將CIE設(shè)置為1。其次,當(dāng)SylixOS系統(tǒng)執(zhí)行完中斷服務(wù)程序后,系統(tǒng)代碼需要在第一時(shí)間內(nèi)快速完成對(duì)寄存器相關(guān)內(nèi)容的安全保存。同時(shí),做好以下參數(shù)的配置。①將GIE位置設(shè)置為0;②將PGIE位所對(duì)應(yīng)的內(nèi)容進(jìn)行恢復(fù)處理;③將ITSR寄存器所對(duì)應(yīng)的內(nèi)容進(jìn)行恢復(fù)處理;④將NRP所對(duì)應(yīng)的內(nèi)容進(jìn)行恢復(fù)處理。當(dāng)中斷嵌套機(jī)制真正地發(fā)揮效應(yīng)時(shí),SylixOS系統(tǒng)在執(zhí)行中斷服務(wù)程序的過程中,一旦檢測(cè)到級(jí)別更高的中斷請(qǐng)求時(shí),會(huì)暫停當(dāng)前所執(zhí)行的中斷服務(wù)程序,而執(zhí)行級(jí)別較高的中斷服務(wù)程序,當(dāng)該程序執(zhí)行完畢后,才能繼續(xù)執(zhí)行原來的中斷服務(wù)程序。同時(shí),為了提高SylixOS系統(tǒng)的運(yùn)行性能,確保該系統(tǒng)能夠快速切換不同級(jí)別中斷服務(wù)程序執(zhí)行操作,當(dāng)SylixOS系統(tǒng)剛剛執(zhí)行中斷服務(wù)程序期間,需要對(duì)當(dāng)前系統(tǒng)所對(duì)應(yīng)的運(yùn)行環(huán)境進(jìn)行及時(shí)備份,當(dāng)級(jí)別較高的中斷服務(wù)程序執(zhí)行完畢后,再將系統(tǒng)運(yùn)行環(huán)境恢復(fù)到初始狀態(tài),便于SylixOS系統(tǒng)繼續(xù)執(zhí)行原來的中斷服務(wù)程序,只有這樣,才能充分發(fā)揮和利用中斷嵌套的應(yīng)用優(yōu)勢(shì),使得SylixOS系統(tǒng)優(yōu)先執(zhí)行級(jí)別較高的中斷服務(wù)程序。
中斷向量表明確指出出各個(gè)中斷服務(wù)程序入口與中斷之間的一一對(duì)應(yīng)關(guān)系。所有中斷向量均有一個(gè)中斷服務(wù)程序入口與之相對(duì)應(yīng),當(dāng)CPU在具體的運(yùn)行中,一旦檢測(cè)到中斷,那么就會(huì)自動(dòng)跳轉(zhuǎn)到相對(duì)應(yīng)的中斷服務(wù)程序入口,實(shí)現(xiàn)對(duì)這些程序的快速執(zhí)行。
在SylixOS系統(tǒng)中,中斷服務(wù)程序接口主要負(fù)責(zé)對(duì)總中斷服務(wù)程序的調(diào)用,同時(shí),還要借助中斷向量號(hào),將中斷服務(wù)程序相關(guān)參數(shù)傳入并保存到SylixOS系統(tǒng)中,便于其他人員的查看和調(diào)用。為了確保SylixOS系統(tǒng)能夠可靠、穩(wěn)定、安全地運(yùn)行,需要采用全局終端使能方式,針對(duì)中斷服務(wù)程序處理需求,將終端嵌套機(jī)制應(yīng)用于中斷處理領(lǐng)域中,以達(dá)到提高中斷處理效率和效果的目的,這樣一來,有利于不斷修改、優(yōu)化和完善SylixOS系統(tǒng)內(nèi)終端處理框架,確保該系統(tǒng)能夠很好地兼容不同硬件平臺(tái),從而提高SylixOS系統(tǒng)的利用率。
為了更好地驗(yàn)證中斷嵌套的可行性和有效性,相關(guān)人員
要重視對(duì)嵌入式系統(tǒng)中斷嵌套的全面測(cè)試。通常情況下,在保證中斷服務(wù)程序正常運(yùn)行的基礎(chǔ)上,級(jí)別較高的中斷服務(wù)程序會(huì)被CPU優(yōu)先執(zhí)行。嵌入式系統(tǒng)中斷嵌套測(cè)試步驟如下:①采用配置GPIO7的方式,將中斷向量設(shè)置為3;采用配置GPIO8的方式,將中斷向量設(shè)置為5。②對(duì)于中斷向量3所對(duì)應(yīng)的中斷服務(wù)程序而言,一旦進(jìn)入到執(zhí)行階段,系統(tǒng)會(huì)自動(dòng)輸出“vector3enter”,在退出程序執(zhí)行階段中,系統(tǒng)會(huì)自動(dòng)輸出“vector3exit”。③對(duì)于中斷向量5所對(duì)應(yīng)的中斷服務(wù)程序而言,一旦進(jìn)入到執(zhí)行階段,系統(tǒng)會(huì)自動(dòng)輸出“vector5enter”,在退出程序執(zhí)行階段中,系統(tǒng)會(huì)自動(dòng)輸出“vector5exit”。④在觸發(fā)執(zhí)行GPIO7后,方可觸發(fā)執(zhí)行GPIO8,并對(duì)最終的顯示效果進(jìn)行觀察和記錄。
圖4 實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果如圖4所示,從圖中可以看出,在測(cè)試SylixOS系統(tǒng)的過程中,中斷向量5所對(duì)應(yīng)的中斷服務(wù)程序在執(zhí)行的過程中,遇到中斷向量3所對(duì)應(yīng)的中斷服務(wù)程序,由于中斷向量3級(jí)別較高,會(huì)優(yōu)先執(zhí)行中斷向量3程序,當(dāng)該程序執(zhí)行完畢后,才自動(dòng)返回到中斷向量5,并繼續(xù)執(zhí)行該向量所對(duì)應(yīng)的中斷服務(wù)程序,這種實(shí)驗(yàn)結(jié)果符合預(yù)期目標(biāo)。
綜上所述,在SylixOS系統(tǒng)的應(yīng)用背景下,為了有效地解決關(guān)鍵中斷事件響應(yīng)慢問題,相關(guān)人員要重視對(duì)中斷嵌套機(jī)制的制定和完善,確保中斷嵌套機(jī)制的系統(tǒng)性、健全性和完整性,只有這樣,才能最大限度地提高關(guān)鍵中斷事件響應(yīng)速度,避免因中斷事件響應(yīng)效率而嚴(yán)重影響產(chǎn)品質(zhì)量,甚至增大產(chǎn)品生產(chǎn)成本,為提高相關(guān)企業(yè)的社會(huì)效益和經(jīng)濟(jì)效益,促進(jìn)相關(guān)企業(yè)的健康、可持續(xù)發(fā)展提供有力的保障。