李向東,趙根學(xué),杜杏虎
(1.中國航空計(jì)算技術(shù)研究所,陜西 西安710119;2.北京理工大學(xué) 計(jì)算機(jī)學(xué)院,北京100081)
文章以實(shí)踐的方式分析中斷控制器的基本工作原理及配置方式,并且簡要介紹全局時(shí)鐘產(chǎn)生中斷的原理,進(jìn)而提供一套簡便、可靠的以全局時(shí)鐘中斷檢測中斷控制器是否正常響應(yīng)中斷的方法。
MPC8641處理器集成一個(gè)PowerPC系列e600內(nèi)核,一個(gè)可編程中斷控制器 (programmable interrupt controller,PIC)及一組全局時(shí)鐘 (global timers,GT)[1-3]。在基于 PowerPC架構(gòu)的處理器平臺(tái)中,中斷控制器對系統(tǒng)平臺(tái)的實(shí)時(shí)性、安全性有至關(guān)重要的作用。尤其在機(jī)載、軍用嵌入式計(jì)算平臺(tái)上,高度集成的體系結(jié)構(gòu)在性能得到很大提升的同時(shí),其復(fù)雜性必然提高很多。因此,縱觀嵌入式系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì),能否實(shí)時(shí)響應(yīng)中斷是衡量系統(tǒng)好壞判斷任務(wù)成敗的關(guān)鍵[4]。
目前,針對硬件的自檢測技術(shù)依賴操作系統(tǒng)平臺(tái),需要在系統(tǒng)啟動(dòng)后進(jìn)行各類測試,此類測試方式無法保證系統(tǒng)啟動(dòng)安全[5,6]。文章所述算法不依賴操作系統(tǒng),在操作系統(tǒng)啟動(dòng)前完成各類檢測,具有實(shí)時(shí)性的特點(diǎn)。
系統(tǒng)級(jí)軟件啟動(dòng)流程如圖1所示。圖1中標(biāo)示為虛線的進(jìn)程框 “啟動(dòng)自檢測”為本文章所討論技術(shù)點(diǎn)。目前,大部分的自檢測技術(shù)將對系統(tǒng)硬件的檢測放置于應(yīng)用程序之中,這依賴于操作系統(tǒng)及應(yīng)用程序,增加諸多不確定性[7]。而圖中所示的 “啟動(dòng)自檢測”是在啟動(dòng)操作系統(tǒng)之前完成對中斷控制器的自檢測。具有檢測效率高、發(fā)現(xiàn)問題及時(shí)的優(yōu)點(diǎn)。
圖1 系統(tǒng)級(jí)軟件啟動(dòng)流程
MPC8641處理器內(nèi)部集成PIC。PIC是處理器與外設(shè)之間的中斷處理橋梁,由外設(shè)發(fā)出的中斷請求由PIC進(jìn)行處理并通知內(nèi)核執(zhí)行異常服務(wù)程序[8,9]。MPC8641內(nèi)部中斷源及其傳遞方式如圖2所示。其中,虛線所示為本文章所分析全局時(shí)鐘中斷。
圖2 中斷源方塊
MPC8641處理器繼承PowerPC系列處理器體系結(jié)構(gòu),當(dāng)中斷到達(dá)內(nèi)核,內(nèi)核確認(rèn)產(chǎn)生異常后,首先執(zhí)行異常服務(wù)程序,然后執(zhí)行中斷服務(wù)程序。部分異常定義見表1。對于異常的具體描述,請參考MPC8641手冊[8]。
表1 異常定義
表中所述的 “向量偏移”即發(fā)生異常后,CPU指令指針將要跳轉(zhuǎn)到的物理地址。全局時(shí)鐘所產(chǎn)生的異常為500號(hào)異常,相對于e600內(nèi)核而言,屬外部異常[10,11]。因此,對異常服務(wù)程序的初始化也就是對CPU地址域0x00000500處的初始化,即將特定的異常服務(wù)程序?qū)懭?x00000500處。異常服務(wù)程序?qū)⒆x取當(dāng)前中斷的中斷向量值,并根據(jù)此值調(diào)用之前掛接的中斷服務(wù)程序。
MPC8641處理器內(nèi)部包含一系列與中斷相關(guān)的寄存器,正確地配置這些寄存器,使中斷的產(chǎn)生、響應(yīng)、處理及清除按照一定的時(shí)序關(guān)系進(jìn)行。此類寄存器主要包含“全局配置寄存器” (global configuration register,GCR)、“處理器核心中斷響應(yīng)寄存器”(processor core interrupt acknowledge register,IACK)及 “機(jī)器狀態(tài)寄存器” (machine state register,MSR)。
上述寄存器的功能原理如下:
GCR
GCR[M]為中斷控制模式位,GCR [M]=1時(shí),中斷經(jīng)由PIC傳遞給內(nèi)核,GCR [M]=0時(shí),IRQ [0]將直接傳遞給內(nèi)核而不經(jīng)過PIC,并且全局時(shí)鐘禁止產(chǎn)生中斷。GCR [RST]為PIC復(fù)位標(biāo)識(shí),GCR [RST]=1時(shí),PIC將被復(fù)位,復(fù)位操作結(jié)束后,此位將清零。
IACK
IACK[VECTOR]存儲(chǔ)當(dāng)前所有未處理的中斷中優(yōu)先級(jí)最高的中斷向量號(hào)。如果沒有未處理中斷,此值為0xffff。
MSR
MSR[EE]=0時(shí),內(nèi)核將不處理500號(hào)異常;MSR[EE]=1時(shí),內(nèi)核將對500號(hào)異常進(jìn)行處理。
MPC8641處理器內(nèi)部集成兩組獨(dú)立的全局時(shí)鐘組,稱為A組和B組,如圖2所示。每組包含4個(gè)獨(dú)立的時(shí)鐘,每個(gè)時(shí)鐘具有4個(gè)獨(dú)立的可配置寄存器,分別為 “全局時(shí)鐘當(dāng)前計(jì)數(shù) 寄 存 器”(global timer current count register,GTCCR)、 “全局時(shí)鐘基值計(jì)數(shù)寄存器”(global timer base count register,GTBCR)、 “全局時(shí)鐘中斷向量/優(yōu)先級(jí)寄存器”(global timer vector/priority register,GTVPR)及 “全局時(shí)鐘中斷接收寄存器”(global timer destination register,GTDR)。
上述寄存器功能描述如下:
GTCCR
GTCCR[COUNT]包含時(shí)鐘當(dāng)前計(jì)數(shù)值,計(jì)數(shù)方式為遞減;CTCCR[TOG]為計(jì)時(shí)翻轉(zhuǎn)位,當(dāng) GTCCR[COUNT]遞減到0后,CTCCR [TOG]發(fā)生翻轉(zhuǎn)。
GTBCR
GTBCR[CI]=0時(shí),計(jì)數(shù)使能,否則,計(jì)數(shù)將被禁止;當(dāng)此位由1變?yōu)?時(shí),CTCCR [TOG]位清0。
GTBCR[BASE_CNT]包含計(jì)數(shù)基值,當(dāng)GTCCR[COUNT]計(jì)數(shù)遞減至0后,系統(tǒng)自動(dòng)將GTBCR中的計(jì)數(shù)基值重載到GTCCR中,并且開始遞減計(jì)數(shù);
GTVPR
GTVPR[MSK]=0時(shí),全局時(shí)鐘中斷使能,否則中斷禁止;
GTVPR[PRIORITY]定義全局時(shí)鐘中斷優(yōu)先級(jí);
GTVPR[VECTOR]包含全局時(shí)鐘中斷向量號(hào)。本文章中,示例程序只使用時(shí)鐘中斷,在時(shí)鐘中斷發(fā)生后,此值將被賦給IACK [VECTOR]。
GTDR
GTDR寄存器控制中斷目的地,即中斷發(fā)生后,處理器將根據(jù)此寄存器選擇處理器進(jìn)行處理,為雙核處理器所用,本文討論MPC8641單核處理器,GTDR[P0]=1。
完整的檢測流程如圖3所示。
初始化500號(hào)異常外其它異常
初始化500號(hào)異常服務(wù)程序
示例代碼如下:
異常服務(wù)程序示例如下:
當(dāng)GTBCR [CI]=0時(shí),CTCCR [TOG]清零,并開始計(jì)時(shí)。當(dāng)計(jì)時(shí)到0后,CTCCR [TOG]位發(fā)生翻轉(zhuǎn),即CTCCR [TOG]=1。
最終的計(jì)時(shí)測試判斷代碼如下示例:
本文詳述 “中斷控制器中斷響應(yīng)”的測試方法,讀者在工程實(shí)踐及開發(fā)過程中可參考本文對中斷控制器及全局時(shí)鐘各類寄存器介紹,對 “中斷控制器中斷優(yōu)先級(jí)判斷”、“中斷控制器中斷屏蔽”等功能進(jìn)行測試。
“中斷控制器中斷優(yōu)先級(jí)判斷”檢測當(dāng)不同優(yōu)先級(jí)的中斷同時(shí)發(fā)生時(shí),PIC是否能夠優(yōu)先處理優(yōu)先級(jí)較高的中斷??蓞⒖急疚乃鰴z測方式及設(shè)置兩個(gè)定時(shí)器不同的GTVPR[PRIORITY]值實(shí)現(xiàn)。
“中斷控制器中斷屏蔽”檢測在中斷被屏蔽的狀態(tài)下,PIC是否能屏蔽中斷。可參考本文所述檢測方式及設(shè)置MSR[EE]位禁止的方式實(shí)現(xiàn),示例如下:
在操作系統(tǒng)及應(yīng)用啟動(dòng)后,文章所介紹的測試方式仍可被應(yīng)用,需注意對硬件資源及寄存器的更改是否影響系統(tǒng)正常運(yùn)行。
自檢測技術(shù)是軍工類產(chǎn)品提高維修性、縮短平均維修時(shí)間的一種有效手段,能夠有效、及時(shí)地檢測嵌入式平臺(tái)錯(cuò)誤。
可編程中斷控制器與時(shí)鐘屬于嵌入式平臺(tái)基本資源,在系統(tǒng)運(yùn)行過程中發(fā)揮著重要的作用,其精確度及有效性對系統(tǒng)性能至關(guān)重要。
本文通過對MPC8641處理器中中斷控制器及全局時(shí)鐘的功能描述,并以工程實(shí)例為依據(jù)提出一種方法,介紹了在操作系統(tǒng)啟動(dòng)前對各類相關(guān)寄存器的初始化方式,從而判斷中斷控制器是否能正常響應(yīng)中斷請求。
[1]CAO Guiping.Detailed explanation of device driver development [M].Beijing:Publishing House of Electronics Industry,2011(in Chinese). [曹桂平.VxWorks設(shè)備驅(qū)動(dòng)開發(fā)詳解[M].北京:電子工業(yè)出版社,2011.]
[2]ZHANG Binfeng,CAO Xinggang,WANG Bin.Design of general processor module based on MPC8245 [J].Aeronautical Computing Technique,2011,41 (5):102-105 (in Chinese).[張斌峰,曹興岡,王斌.基于MPC8245的通用處理器模塊的設(shè)計(jì) [J].航空計(jì)算技術(shù),2011,41 (5):102-105.]
[3]WANG Pinggang,LV Zunming,WAN Liujin.Design and realization of VxWorks BSP [J].Computer System & Applications,2011,20 (12):91-94 (in Chinese).[王平剛,呂遵明,萬留進(jìn).VxWorks系統(tǒng)的BSP設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20 (12):91-94.]
[4]YANG Fang,QI Xuan,DONG Li,et al.Research of interrupt system resource conflict detection technology for embedded software [J].Computer Engineering & Design,2010,31(23):5036-5038 (in Chinese). [楊芳,齊璇,董麗,等.嵌入式軟件中斷系統(tǒng)資源沖突檢測技術(shù)研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31 (23):5036-5038.]
[5]WANG Changqing,CEN Fan,CAI Yuzhi.The hardware design of embedded system for multi-core processor based on PowerPC architecture [J].Control and Automation Publication Group,2010,27 (17):6-7 (in Chinese). [王長清,岑凡,蔡禹智.基于PowerPC架構(gòu)多核處理器嵌入式系統(tǒng)硬件設(shè)計(jì)[J].微計(jì)算機(jī)信息,2010,27 (17):6-7.]
[6]SUO Wenping,AN Jianfeng,F(xiàn)AN Xiaoya.Reliability of interrupt mechanism in SoC [J].China Integrated Circuit,2007,16 (7):63-66 (in Chinese). [索文平,安建峰,樊曉椏.片上系統(tǒng)中斷機(jī)制的可靠性設(shè)計(jì) [J].中國集成電路,2007,16 (7):63-66.]
[7]DING Yi,HU Fenglin,LI Guokuan.Research on advanced programmable interrupt controller systems [J].Computer Engineering & Science,2005,27 (12):97-100 (in Chinese).[丁一,胡封林,李國寬.高級(jí)可編程中斷控制器系統(tǒng)的研究[J].計(jì)算機(jī)工程與科學(xué),2005,27 (12):97-100.]
[8]Freescale Semiconductor,Inc.MPC8641Dintegrated host processor family reference manual [R].USA:Freescale Semiconductor,Inc.Rev.0,2006.
[9]WANG Fan,HU Xiaoji,WANG Youwei,et al.BIT design of motherboard based on CPCI and LPC bus [J].Computer Engineering & Design,2011,32 (8):2905-2908 (in Chinese).[王凡,胡曉吉,王有為,等.基于CPCI與LPC總線的主板BIT設(shè)計(jì) [J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32 (8):2905-2908.]
[10]ZHENG Wenrong,YAN Dong,LI Wenlei.Study on the application of BIT to ship borne gun weaponry system [J].Foreign E-lectronic Measurement Technology,2011,30 (11):33-35 (in Chinese).[鄭文榮,嚴(yán)東,李文雷.BIT在艦炮武器系統(tǒng)的應(yīng)用淺析 [J].國外電子測量技術(shù),2011,30 (11):33-35.]
[11]Lv Xuezhi,Yu Yongli,Zhang Liu,et al. Modeling and simu-lation for complex repairable system with build-in test equipment [J].Journal of China Ordnance,2011,7 (2):119-120.