999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VxWorks下基于ML507嵌入式系統(tǒng)的中斷處理

2012-04-23 10:13:04夏偉杰
電子科技 2012年1期
關(guān)鍵詞:系統(tǒng)

單 寅,夏偉杰

(南京航空航天大學(xué)電子信息工程學(xué)院,江蘇南京 210016)

VxWorks作為目前較為主流的嵌入式操作系統(tǒng),被廣泛運(yùn)用于航空與控制等方面,基于某型號飛機(jī)的虛擬儀表的GPU板卡,采用VxWorks作為頂層控制,其中采用中斷機(jī)制與外界通信是一個(gè)重要手段,由于硬件環(huán)境為Virtex5 FXT型號的FPGA,CPU為IBM公司Powerpc440x5處理器,理解其特有的架構(gòu),并編寫相應(yīng)的中斷處理程序,對于操作系統(tǒng)的完整移植以及上層程序的正常運(yùn)行至關(guān)重要。

1 Virtex5的中斷響應(yīng)過程

FPGA內(nèi)嵌的IBM PPC440處理器有兩個(gè)中斷引腳,一個(gè)關(guān)鍵異常引腳與一個(gè)外部中斷引腳。在構(gòu)建嵌入式系統(tǒng)時(shí)共有兩種處理中斷的方式:(1)外部中斷直接引入外部中斷引腳。(2)為能處理較多的中斷,引入一個(gè)外擴(kuò)的中斷處理器XINTC,中斷處理器連接PPC440外部中斷引腳,中斷控制器共可處理共32個(gè)優(yōu)先級的中斷,從0號中斷開始優(yōu)先級逐次降低。

1.1 中斷控制器介紹

中斷控制器由中斷核和總線接口組成,中斷核可與響應(yīng)的邏輯接口總線配合,掛接在PLB總線上。圖1為中斷控制器(INTC)響應(yīng)中斷的原理圖。通過PLB總線下INTC Interface向寄存器寫值,使能相應(yīng)中斷位。連接在INTC的中斷源產(chǎn)生中斷信號Intr,被INTC檢測到后,因?yàn)榧拇嫫飨鄳?yīng)中斷位被使能,就會產(chǎn)生Irq信號給PPC440外部中斷引腳[1]。

中斷控制器主要有幾個(gè)重要的寄存器,如圖1所示,Interrupt Status Register(ISR),Interrupt Enable Register(IER),Master Enable Register(MER)。MER是一個(gè)可讀寫寄存器,向MER寫1才能允許向外輸出Irq信號。ISR是一個(gè)32位只讀寄存器,相應(yīng)位為1代表相應(yīng)的中斷被使能。IER是個(gè)32位的可讀寫寄存器,向相應(yīng)位寫1可以將ISR相應(yīng)位置1。

圖1 中斷控制器原理框圖

1.2 INTC驅(qū)動的中斷處理機(jī)制

中斷驅(qū)動實(shí)際上是在內(nèi)存中構(gòu)造一個(gè)中斷向量表,中斷控制器的數(shù)據(jù)結(jié)構(gòu)如下:

typedef struct{

u16 DeviceId;/**中斷控制器對應(yīng)的設(shè)備號*/

u32 BaseAddress;/**中斷控制器基地址*/

u32 AckBeforeService;/**讀取ISR寄存器的值以判斷正在觸發(fā)的中斷號*/

u32 Options;/**中斷控制器配置*/

XIntc_VectorTableEntry HandlerTable[XPAR_INTC_MAX_NUM_INTR_INPUTS];

}XIntc_Config

HandlerTable[XPAR_INTC_MAX_NUM_INTR_INPUTS]這一結(jié)構(gòu)體數(shù)組即為中斷向量表,宏XPAR_INTC_MAX_NUM_INTR_INPUTS為系統(tǒng)中所有中斷的總數(shù)。

在Xilinx提供的BSP中,底層操縱中斷控制器的驅(qū)動函數(shù)為XIntc_Connect和XIntc_Enable,即IntConnect與 IntEnable函數(shù)具體實(shí)現(xiàn)是 XIntc_Connect與XIntc_Enable,void XIntc_Enable(XIntc* InstancePtr,u8 Id),InstancePtr是中斷控制器的地址,Id是想要使能的中斷號

……

Mask=XIntc_BitPosMask[Id];

CurrentIER=XIntc_In32(InstancePtr- >BaseAddress+XIN_IER_OFFSET);

XIntc_Out32(InstancePtr- >BaseAddress+XIN_IER_OFFSET,

(CurrentIER|Mask));

通過此操作,給IER寄存器相應(yīng)位寫1,使能相應(yīng)中斷。int XIntc_Connect(XIntc* InstancePtr,u8 Id,XInterruptHandler Handler,void*CallBackRef),Handler是用戶自己的中斷服務(wù)程序,可以是任何操作,CallbackRef是要傳遞給服務(wù)程序的參數(shù)。

……

InstancePtr- >CfgPtr- >HandlerTable[Id].Handler=Handler;

InstancePtr- >CfgPtr- >HandlerTable[Id].CallBackRef=CallBackRef;

由此根據(jù)中斷號Id將參數(shù)與程序放入中斷注冊表中。在BSP的sysInterrupt.c文件中,將這兩個(gè)函數(shù)封裝在IntConnect與IntEnable內(nèi),提高了程序的可移植性。

2 PPC440中斷處理

2.1 PPC440相關(guān)寄存器介紹

Powerpc440處理器是一個(gè)32位精簡指令集的CPU,與異常處理相關(guān)的寄存器有IVOR0~I(xiàn)VOR15,這16個(gè)寄存器用于存儲異常向量入口的偏移地址,其中IVOR4對應(yīng)的是外部異常,也就是文中所關(guān)心的異常。SRR0和SRR1用于保存和恢復(fù)機(jī)器狀態(tài)。MSR是機(jī)器狀態(tài)寄存器,用于指示處理器的狀態(tài)[2]。

圖2為機(jī)器狀態(tài)寄存器(MSR)示意圖。CE為關(guān)鍵異常位,EE為外部異常位。這里主要關(guān)注的是EE,通過將EE位置1,可以使能外部中斷異常。通過查看Powerpc匯編指令集,對MSR寄存器操作的指令為mtmsr和mfmsr,其中mtmsr為讀出MSR中內(nèi)容,mfmsr為向MSR寫入內(nèi)容。在系統(tǒng)開始時(shí)初始化異常向量表,首先應(yīng)將對應(yīng)的異常向量裝入儲存異常向量入口的寄存器中。

圖2 機(jī)器狀態(tài)寄存器

2.2 異常處理程序

異常只能發(fā)生在處理器的內(nèi)核中,在總線的中斷處理中沒有異常這個(gè)概念。異常是指處理器有意或無意的停止正常的運(yùn)行,如意外重啟、軟件中斷等。而在PPC440中,所有的外部中斷被當(dāng)做一個(gè)特殊的異常來進(jìn)行處理。當(dāng)發(fā)生異常/中斷時(shí),系統(tǒng)自動跳轉(zhuǎn)到異常向量表(Interrupt-h(huán)andler Table)中。異常向量表將異常/中斷與其異常向量相關(guān)聯(lián),異常/中斷通過異常向量表找到自己的向量。通過異常向量在中斷控制器中找到對應(yīng)的處理程序,這樣就與前面所說的總線中斷控制器對應(yīng)。通過excIntConnect函數(shù)將外部中斷與異常處理程序掛接,excIntConnect((VOIDFUNCPTR*)_EXC_OFF_INTR,(VOIDFUNCPTR)ExternalISR),_EXC_OFF_INTR這個(gè)宏定義在VxWorks6.5安裝目錄下Powerpc處理器對應(yīng)的excPpcLib.h文件中,代表外部異常向量;ExternalISR為異常處理程序,此處理程序主要負(fù)責(zé)對中斷控制器進(jìn)行發(fā)出中斷后的操作,具體操作為利用IO函數(shù)XIo_Out32和XIo_In32讀寫各個(gè)中斷寄存器,中斷優(yōu)先級從高到低檢測哪個(gè)中斷是被激活的,通過向IAR寄存器相應(yīng)位寫1可以清除中斷請求。

如圖3所示,程序首先進(jìn)入異常向量表中注冊的Xintc_DeviceInterruptHandler,該服務(wù)程序是系統(tǒng)層的注冊,然后進(jìn)入HandlerTable,用戶自己的服務(wù)程序通過BSP中的中斷控制器驅(qū)動程序注冊在這個(gè)HandlerTable中。這樣就可以完成一次中斷的流程。

圖3 中斷處理流程框圖

3 中斷服務(wù)程序

3.1 中斷服務(wù)程序設(shè)計(jì)

由于VxWorks下中斷服務(wù)程序不能調(diào)用可能引起阻塞的函數(shù),所以處理方法是拆分中斷服務(wù)程序,分為兩部分:一部分專門做判斷中斷類型,禁止中斷等,稱為中斷服務(wù)程序;第二部分將多數(shù)需要處理的操作,尤其是可能引起任務(wù)阻塞的操作放在此執(zhí)行,稱為中斷服務(wù)任務(wù)。兩部分間采用VxWorks特有的信號量機(jī)制通信。由于獲取信號量會造成任務(wù)阻塞,中斷服務(wù)程序中不能獲取信號量,但可以釋放信號量,從而解除等待在該信號量上的一個(gè)任務(wù)[3]。

3.2 中斷服務(wù)程序性能

在調(diào)試實(shí)時(shí)系統(tǒng)過程中,中斷程序的性能是一個(gè)重要的指標(biāo),所以在調(diào)試過程中,需要使用時(shí)間戳功能。時(shí)間戳與sysclk不同,sysclkRate可以看做內(nèi)核調(diào)度的頻率,一般默認(rèn)較低,在本系統(tǒng)中為60,即每秒有60個(gè)TICK,如果修改的過高會導(dǎo)致CPU系統(tǒng)占用率過高。而時(shí)間戳與CPU的主頻相關(guān),與RTOS調(diào)度無關(guān)。sysTimestamp是通過讀取計(jì)時(shí)器當(dāng)前計(jì)數(shù)值來實(shí)現(xiàn)高精度定時(shí)的。時(shí)間戳顯示的是一秒內(nèi)的時(shí)間狀態(tài),溢出后就會從0開始重新計(jì)數(shù),所以首先要確保任務(wù)運(yùn)行在1 s內(nèi)可以完成,否則一旦時(shí)間戳溢出,得出的數(shù)據(jù)就無意義了[4]。調(diào)試時(shí)可以使用打印兩次時(shí)間戳的方式查看任務(wù)所用時(shí)間,即兩次數(shù)據(jù)之差乘以頻率即為任務(wù)所用時(shí)間。

3 結(jié)束語

嵌入式操作系統(tǒng)VxWorks現(xiàn)被廣泛應(yīng)用于各類實(shí)際工程中,其中中斷處理的性能直接影響整個(gè)系統(tǒng)的性能。由于ML507開發(fā)板FPGA和PPC440雙核的特殊性,理解基于該板卡的中斷處理流程是一個(gè)難點(diǎn)。通過研究驅(qū)動程序的內(nèi)容,對深入了解硬件與FPGA邏輯的工作原理有幫助。

[1] Xilinx,Inc.DS516[M].USA:Xilinx,Inc,2009.

[2] International Business Machines Corporation.PPC440x5 CPU CORE User's Manual[M].USA:International Business Machines Corporation,2003.

[3] 王韜,楊士中,譚曉衡.基于MPC860和VxWorks的嵌入式中斷處理設(shè)計(jì)[J].電訊技術(shù),2005(1):45-50.

[4] 陳育智,溫彥軍,陳琪.VxWorks程序開發(fā)實(shí)踐[M].北京:人民郵電出版社,2004.

猜你喜歡
系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
基于UG的發(fā)射箱自動化虛擬裝配系統(tǒng)開發(fā)
半沸制皂系統(tǒng)(下)
FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統(tǒng) 德行天下
PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 国产乱人视频免费观看| 亚洲第一页在线观看| 欧美69视频在线| 久久黄色影院| 亚洲最新地址| 宅男噜噜噜66国产在线观看| 亚洲成A人V欧美综合天堂| 在线精品亚洲国产| 天天综合网色| 国产免费羞羞视频| 久久久久久尹人网香蕉| 蜜臀AV在线播放| 国产精品不卡永久免费| 五月激情综合网| 自拍偷拍欧美日韩| 伊人国产无码高清视频| 国产丝袜第一页| 亚洲香蕉久久| 久久国产香蕉| 亚洲男人的天堂久久香蕉 | 国产va在线观看免费| 天天躁狠狠躁| 91久久青青草原精品国产| 国产大片喷水在线在线视频| 欧美精品高清| 亚洲综合精品第一页| 日韩高清在线观看不卡一区二区| 亚洲资源站av无码网址| 久久青青草原亚洲av无码| 欧美激情首页| 欧美啪啪网| 成人久久精品一区二区三区| 国产精品成人一区二区不卡| 成人国产精品一级毛片天堂| 欧美精品二区| 久久情精品国产品免费| 欧美一区福利| 欧美日韩一区二区三区四区在线观看| 欧美怡红院视频一区二区三区| 欧美日韩理论| 久久伊人色| 一本一道波多野结衣一区二区 | 国产va免费精品观看| 国产精品美乳| 久久免费观看视频| 免费人欧美成又黄又爽的视频| 国产一区二区三区免费观看| 好紧太爽了视频免费无码| 国产97视频在线| 青草精品视频| 爽爽影院十八禁在线观看| 香蕉国产精品视频| 台湾AV国片精品女同性| 高清不卡一区二区三区香蕉| 国产一级一级毛片永久| 午夜少妇精品视频小电影| av一区二区无码在线| 91九色视频网| 国模视频一区二区| 久久综合丝袜日本网| 456亚洲人成高清在线| 欧美一级黄色影院| 看国产毛片| 久久这里只有精品国产99| 欧美午夜视频在线| 国产毛片不卡| 亚洲激情区| 三上悠亚在线精品二区| 国产极品粉嫩小泬免费看| 亚洲无卡视频| 三级欧美在线| 狠狠做深爱婷婷久久一区| 中文字幕无线码一区| 婷婷丁香在线观看| 欧美亚洲国产精品第一页| 香蕉久久国产超碰青草| 国产精品偷伦在线观看| 一级毛片a女人刺激视频免费| 99热这里只有成人精品国产| 久久精品丝袜| 国产精品久久国产精麻豆99网站| 亚洲天堂日本|