亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VxWorks的1553B驅(qū)動設(shè)計技術(shù)

        2010-06-13 11:32:58張書濱
        微處理機 2010年3期
        關(guān)鍵詞:處理程序驅(qū)動程序中斷

        李 松,張書濱

        (中國船舶重工集團公司江蘇自動化研究所,連云港222006)

        1 引言

        1553B是MIL-STD-1553B的簡稱,即飛機內(nèi)部時分制指令/響應(yīng)式多路傳輸數(shù)據(jù)總線,1553B總線著重強調(diào)系統(tǒng)的實時性、高可靠性以及對系統(tǒng)通信出錯時的故障診斷和管理功能,采用時分多路復(fù)用技術(shù)(TDM)。VxWorks是由美國風(fēng)河公司推出的嵌入式實時操作系統(tǒng),以其不斷推出的升級版本、高性能可裁減內(nèi)核以及友好的用戶開發(fā)環(huán)境,在嵌入式操作系統(tǒng)應(yīng)用領(lǐng)域占據(jù)重要地位。由于都具有強實時性,高可靠性的優(yōu)點,這兩種技術(shù)的結(jié)合現(xiàn)已廣泛應(yīng)用于航空航天、軍事裝備、車載電子、數(shù)字傳輸設(shè)備等各個領(lǐng)域。下面重點探討在VxWork系統(tǒng)下進行1553B驅(qū)動程序設(shè)計的方法。

        2 1553B總線的組成及工作原理

        1553B總線通常由總線節(jié)點、總線電纜、端接器、耦合器、短截線和連接器組成,其中總線節(jié)點包括一個總線控制器(BC)、最多31個遠程終端(RT)和一個總線監(jiān)控器(MT)。BC負(fù)責(zé)管理和控制總線上的信息傳輸;MT負(fù)責(zé)接收總線上的信息用于總線的測試;RT負(fù)責(zé)響應(yīng)總線命令,執(zhí)行數(shù)據(jù)傳輸。1553B總線組成如圖1所示。

        圖1 1553B 總線組成框圖

        1553B總線是一種命令/響應(yīng)式總線,所有在總線上的命令和數(shù)據(jù)都由一個單獨的BC激活,除了BC,任何終端無法激活總線通信。總線上的通信以周期為單位批量進行,消息是周期內(nèi)數(shù)據(jù)傳輸?shù)淖钚挝?。每類消息賦予一個子地址,消息數(shù)據(jù)長度不超過32字,每個RT最多可以響應(yīng)32條接收消息和32條發(fā)送消息;典型的1553B總線上消息傳輸?shù)倪^程是:總線控制器向某一終端發(fā)布一個接收/發(fā)送指令,終端在給定的響應(yīng)時間范圍內(nèi)發(fā)回一個狀態(tài)字并執(zhí)行消息的接收/發(fā)送。BC通過驗收RT回應(yīng)的狀態(tài)字來檢驗傳輸是否成功并做后續(xù)的操作。在這個過程中,MT可以監(jiān)視數(shù)據(jù)總線上的信息以收集總線上所有數(shù)據(jù),也可以有選擇性的進行收集。

        3 驅(qū)動程序開發(fā)

        基于VxWorks進行1553B驅(qū)動開發(fā)時,需對1553B接口卡進行相應(yīng)的初始化和配置,并完成中斷處理程序,實現(xiàn)各功能模塊?;赩xWorks的1553B驅(qū)動程序開發(fā)流程如圖2所示。

        圖2 基于VxWorks的1553B驅(qū)動程序開發(fā)流程

        3.1 BC 驅(qū)動設(shè)計

        消息是構(gòu)成1553B總線通訊的基本單位,BC的主要任務(wù)是組織消息,通過消息實現(xiàn)總線上各終端間的信息傳輸。如果需要完成一定的功能,就要將多個消息組織起來,形成一個新的結(jié)構(gòu)叫做消息幀(frame),消息可分為周期消息和非周期消息。非周期消息的實現(xiàn)方法是BC以固定的小周期向RT發(fā)送矢量字方式碼指令來詢問,被查詢的RT若有事件請求,就將矢量字置位,BC在下一幀消息中增加處理該事件的指令。每一周期消息幀的描述塊、消息塊內(nèi)容和堆棧的消息處理個數(shù)都不一樣,每一幀消息都需要在保留周期性消息的前提下增加非周期性消息描述塊、復(fù)位堆棧指針、更改消息個數(shù)、更新消息塊、填寫發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。BC模式的工作流程如下所述:

        a.初始化1553B接口卡,獲取設(shè)備地址信息,設(shè)置中斷屏蔽寄存器等;

        b.設(shè)置中斷向量,掛接中斷處理程序;

        c.定義周期、非周期消息,啟動BC,出錯、超時處理。

        BC中斷服務(wù)程序主要處理:

        a.清中斷,置當(dāng)前幀結(jié)束標(biāo)志

        b.通知應(yīng)用程序處理當(dāng)前幀的消息緩沖區(qū)

        BC程序?qū)Ξ?dāng)前幀的消息緩沖區(qū)進行處理,根據(jù)安排的消息內(nèi)容提取所需的消息數(shù)據(jù),如果有RT返回的矢量字請求,就組織跟矢量字相關(guān)的消息成非周期消息幀并安排傳輸。

        下面是VxWorks系統(tǒng)下BC驅(qū)動的實例代碼,適用于61581芯片PCI總線的1553B接口卡(此接口卡有消息傳輸出錯重傳功能):

        //獲得設(shè)備基地址信息

        if(pciFindDevice(BU61581_VENDOR_ID,BU61581_DEVICE_ID,0,

        &pciBus,&pciDevice,&pciFunc)==OK)

        {

        pciConfigInLong(pciBus,pciDevice,pciFunc,PCI_CFG_BASE_ADDRESS_1,&reg_9052_base);

        pciConfigInLong(pciBus,pciDevice,pciFunc,PCI_CFG_BASE_ADDRESS_2,&membase);

        pciConfigInLong(pciBus,pciDevice,pciFunc,PCI_CFG_BASE_ADDRESS_3,&regbase);

        pciConfigInByte(pciBus,pciDevice,pciFunc,PCI_CFG_DEV_INT_LINE,&irq);

        pciConfigOutWord(pciBus,pciDevice,pciFunc,PCI_CFG_COMMAND,PCI_CMD_IO_ENABLE|PCI_CMD_MEM_ENABLE|PCI_CMD_MASTER_ENABLE);

        membase&=PCI_MEMBASE_MASK;

        }

        //掛接中斷處理程序

        pciIntConnect((VOIDFUNCPTR*)INUM_TO_IVEC(VECTOR),(VOIDFUNCPTR)BCinterrupt,0);

        Reset61581();//復(fù)位

        //設(shè)置相關(guān)寄存器

        sysOutWord(IntMaskReg,0x0018);//END -OF-FRAME(bit3),Enable interrupts

        //for BC Control Word(individual message(s))(bit4)

        sysOutWord (Config1Reg,0x0010);//BCMODE,Message retries,Area A(bit13)

        sysOutWord(Config2Reg,0x0418);//Enable BC Message Block 256-WORD BOUNDARIES DISABLED,

        //INT STATUS AUTO CLEAR,LEVEL Interrupt

        sysOutWord(Config4Reg,0x12e0);//EXP BC CNTL WD ENA,RETRY IF STAT SET,1ST RETRY SAME,

        //2ND RETRY ALT,VALID BUSY/NO DATA,VALIDMESSAGEERROR/NO DATAsysOutWord(Config5Reg,0x0a00);//Enable EXPANDED ZERO CROSSING,programs BC Response Timeout to 22.5us

        sysOutWord(StartResetReg,START);//BC 啟動

        中斷處理程序

        StatusWord=sysInWord(IntStatusReg);//讀取中斷狀態(tài)寄存器

        中斷處理程序主要完成讀取中斷狀態(tài)寄存器,識別中斷類型。一般設(shè)置有消息出錯中斷、消息幀結(jié)束中斷,如果是消息出錯中斷則進行出錯處理,安排消息切換總線通道重傳等,如果是幀結(jié)束中斷則通知BC主控程序安排下一幀消息傳輸。

        BC其它功能模塊主要實現(xiàn)包括數(shù)據(jù)和方式碼的接收、發(fā)送,如下所示:

        BCReadBsw(int messnum);//讀取塊狀態(tài)字

        BCReadData unsigned short*data,short msgnum();//讀取數(shù)據(jù)

        BCReadMC(short msgnum);//讀取方式碼

        BCSendData(short rt,short sa,unsigned short*Data,short length,);//發(fā)送數(shù)據(jù)

        BCSendMC(short channel,short rt,short mcdata,);//發(fā)送方式碼

        3.2 RT 驅(qū)動設(shè)計

        當(dāng)RT接收到BC有指令后,必需在標(biāo)準(zhǔn)規(guī)定的時間內(nèi)做出響應(yīng),收到非法命令時要丟棄完成信息的傳輸,必要時給BC返回一個狀態(tài)字

        RT模式工作流程

        a.初始化1553B接口卡,獲取設(shè)備基地址信息,設(shè)置中斷屏蔽寄存器等;

        b.掛接中斷處理程序等;

        c.初始化查找表,定位接收子地址和發(fā)送子地址,寫入查找表。設(shè)置子地址控制字,設(shè)置中斷向量;

        d.設(shè)置RT上線。

        RT中斷服務(wù)程序;

        a.清中斷;

        b.根據(jù)中斷處理條件,修改堆棧指針位置;

        c.如果是發(fā)送矢量字方式碼中斷,通知應(yīng)用程序可以發(fā)送非周期消息;如果是BC發(fā)送的帶數(shù)據(jù)的同步字方式碼或者類似的通知消息幀完成的中斷,則通知應(yīng)用程序處理RT消息堆棧,讀取所需數(shù)據(jù);通知方式采用發(fā)送信號量的形式。

        下面是VxWorks系統(tǒng)下RT驅(qū)動的實例代碼,適用于61581 PCI接口總線的1553B卡:

        //獲得設(shè)備基地址信息代碼同BC驅(qū)動設(shè)計

        //掛接中斷處理程序

        pciIntConnect((VOIDFUNCPTR*)INUM_TO_IVEC(VECTOR),(VOIDFUNCPTR)RTinterrupt,0);

        Reset61581();//復(fù)位

        sysIntEnablePIC(LEVEL);/*unmask the interrupt level*/

        sysOutWord(IntMaskReg,0x0012);//RT SUBADDRCONTROLWORDEOM,RTSELECTED MODE CODE INT

        sysOutWord (Config2Reg,0x881e);//ENHANCED INT ENA,OVRWRT INVAL DTA ENA,

        //INT STATUS AUTO CLR,ENHANCED RT MEM MNGMT,CLR SERVICE REQUEST

        sysOutWord(Config3Reg,0x8080);//KEEP ENHANCED MODE,ILLEGAL DISBLD,

        //(RTFAIL-FLAG WARP ENA,)ENHANCED MODE CODE HANDLNG

        sysOutWord(Config4Reg,0x2008);//MODE CODE OVERRIDE BUSY,LATCH RTADDR WITH CR5

        sysOutWord(Config5Reg,0x0b00);//EXP ZERO- CROSSENA,TIMEOUT22.5us,GAP CHECK ENA//Initialize Block Status Word to 0

        for(w=0;w<256;w=w+4)

        *(pMem+w)=0;//pMem基地址指針

        Init1553RTLookTable();//初始化查找表

        for(w=0;w<=32;w++)

        {

        lt- >R[w]=RTDataBlkBgnA+32*w;//Rx

        ....}

        sysOutWord(StartResetReg,START);//RT 上線

        RT中斷處理

        StatusWord=sysInWord(IntStatusReg);//讀取中斷狀態(tài)寄存器

        if((StatusWord&RT_CONTROL_EOM_INT)==RT_CONTROL_EOM_INT)

        {semGive(SEMA_RECEIVE);//釋放信號量,通知相關(guān)任務(wù)接收、發(fā)送總線信息

        ...

        }

        RT其它功能模塊主要有總線數(shù)據(jù)和方式碼的接收和發(fā)送,具體如下所示:

        RTReadData(short subaddr,short*recvbuf);//通過接口板基地址和查找表中的地址讀取總線數(shù)據(jù)

        RTReadMC(unsigned short*recvbuf);//通過接口板基地址和接收子地址0讀取方式碼數(shù)據(jù)

        RTSendData(short subaddr,unsigned short*recvbuf);//通過接口板基地址和查找表中的地址放置需要發(fā)送的數(shù)據(jù)

        RTSendMC(unsigned short*recvbuf);//通過接口板基地址和查找表中的地址放置需要發(fā)送的方式碼

        3.3 MT 驅(qū)動設(shè)計

        總線監(jiān)視器主要完成接收總線通信的所有消息或提取經(jīng)選擇選定的終端消息??偩€監(jiān)視器使使用者對整個總線的運行情況有比較全面地了解,為故障定位和事后處理提供有用的信息。

        MT模式工作流程:

        a.初始化1553B接口卡,獲取設(shè)備基地址信息,設(shè)置中斷屏蔽寄存器等;

        b.設(shè)置監(jiān)控方式(分為監(jiān)控全部消息和特定消息方式),設(shè)置中斷向量;

        c.啟動MT開始監(jiān)聽總線信息。

        下面是VxWorks系統(tǒng)下MT驅(qū)動的實例代碼,采用字監(jiān)控方式,適用于61581 PCI總線的1553B接口卡:

        sysIntDisablePIC(LEVEL);/* unmask the interrupt level*///關(guān)中斷

        //掛接中斷處理程序

        (void)pciIntConnect((VOIDFUNCPTR*)INUM_TO_IVEC(VECTOR),(VOIDFUNCPTR)MTinterrupt,0);

        Reset61581();//復(fù)位

        sysOutWord(Config3Reg,0x8000);//ENHANCED MODE

        sysIntEnablePIC(LEVEL);/*unmask the interrupt level*/

        WordSet(pMem,0,MEM_MAX_ADDR+1);//Clear memory on card

        //字監(jiān)控方式

        sysOutWord(IntMaskReg,0x0002);//MT PATTERN TRIGGER

        sysOutWord (Config1Reg,0x5800);//MT MODE,TRIGGER ENABLED WORD(bit 10,9:Start,Stop on trigger)

        sysOutWord(Config2Reg,0x0018);//INT STATUS AUTO CLR,LEVEL INT REQUEST

        sysOutWord(StartResetReg,START);//啟 動MT

        MT中斷處理

        61581芯片有字監(jiān)控方式和特定消息監(jiān)控方式,字監(jiān)控方式監(jiān)控全部總線消息,遇到MT TRIGGER WORD觸發(fā)中斷;特定消息方式監(jiān)控特定RT的特定接收發(fā)送子地址消息,設(shè)定消息結(jié)束產(chǎn)生中斷就可以觸發(fā)中斷。觸發(fā)中斷后,采用信號量的方式通知處理任務(wù)讀取數(shù)據(jù)。

        semGive(semMTNotify);//釋放信號量、使能數(shù)據(jù)處理任務(wù)進行數(shù)據(jù)讀取處理。

        MT其它功能模塊實現(xiàn),主要是讀取、處理監(jiān)聽到的總線信息,如下所示:

        MTReadData(unsigned short*Data);//定位總線信息緩沖區(qū),讀取數(shù)據(jù);

        MTDataHandle(unsigned short*Data);//總線數(shù)據(jù)存儲解釋

        3.4 注意事項

        a.解決數(shù)據(jù)覆蓋問題:RT中斷的方式可以是單消息中斷一次,也可以是一個周期中斷一次,即幀中斷。單消息中斷實時性好、捕捉消息響應(yīng)延時小,在RT驅(qū)動設(shè)計時,需要考慮如果進中斷太頻繁,而信息讀取任務(wù)來不及處理總線上收到的信息,會導(dǎo)致1553B接口卡上來不及處理的信息被新到信息覆蓋的問題。解決辦法是提高信息讀取任務(wù)優(yōu)先級,結(jié)合BC命令表設(shè)計,重新設(shè)定進中斷條件,如某個子地址接收到數(shù)據(jù)后才進中斷。

        b.BC冗余切換問題:1553B總線是雙冗余的,傳輸線、總線接口都是雙備份的,每次傳輸僅在一條總線上進行,而另一條處于熱備份狀態(tài),消息的傳輸通過可編程在錯誤情況下進行通道切換,正常情況下,主BC享有總線控制權(quán),控制總線調(diào)度。當(dāng)主BC出現(xiàn)故障時,備份BC識別到主BC失效后,便自動奪取總線的控制權(quán),控制總線系統(tǒng)繼續(xù)正常工作,切換時間必須達到毫秒級,以防總線信息的丟失。備份BC可以通過RT或者MT的模式接入總線,并保持和工作BC的交互,動態(tài)識別主BC的狀態(tài),不能干涉工作BC對總線的控制。

        c.BC出錯處理,BC對總線上傳送的消息要進行正確性驗證,當(dāng)發(fā)生錯誤和故障時,BC還要進行錯誤處理和系統(tǒng)維護等。當(dāng)BC確認(rèn)在一個傳輸通道上的傳輸發(fā)現(xiàn)故障時,可使系統(tǒng)轉(zhuǎn)到另一個傳輸通道正常工作。當(dāng)BC識別到某個RT失效或從失效狀態(tài)變?yōu)楣ぷ鳡顟B(tài)時,要重新更新指令表,安排合適的消息幀進行總線通信。

        4 結(jié)束語

        通過介紹1553B總線,一種時分制指令/響應(yīng)式多路傳輸數(shù)據(jù)總線,分析了它的工作原理和特點,給出了基于VxWorks嵌入式操作系統(tǒng)進行1553B接口卡驅(qū)動程序設(shè)計開發(fā)的方法,并結(jié)合VxWorks下的實例對BC、RT及MT的驅(qū)動程序開發(fā)做了說明。最后,給出了驅(qū)動程序開發(fā)時的注意事項。

        [1]孔祥營,柏桂枝.嵌入式實時操作系統(tǒng)VxWorks及其開發(fā)環(huán)境Tornado[M].北京:中國電力出版社,2002.

        [2]孔祥營,張保山,俞烈彬.VxWorks驅(qū)動及分布式編程[M].北京:中國電力出版社,2007.

        [3]ILC Data Device Corporation.ACE/Mini- ACE User’s Guide[M].Wilbur Place,Bohemia,New York,1998.

        [4]杜改麗,封治華,王勇.1553B總線協(xié)議分析及應(yīng)用[J].儀器儀表用戶,2007(2):6 -7.

        猜你喜歡
        處理程序驅(qū)動程序中斷
        高速公路工程變更與計量支付處理程序的優(yōu)化方法
        跟蹤導(dǎo)練(二)(5)
        千里移防,衛(wèi)勤保障不中斷
        解放軍健康(2017年5期)2017-08-01 06:27:44
        基于C++的數(shù)控加工通用后處理程序的開發(fā)應(yīng)用研究
        企業(yè)危機公關(guān)管理問題分析
        地鐵直流系統(tǒng)中框架保護原理及處理程序
        AT89C51與中斷有關(guān)的寄存器功能表解
        FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
        微處理機(2012年4期)2012-06-13 11:32:24
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        97精品一区二区三区| a欧美一级爱看视频| 国产精品久久久精品三级18| 麻豆人妻性色av专区0000| 九色综合九色综合色鬼| 亚洲av第一成肉网| 亚洲精品国产福利在线观看| 亚洲av激情一区二区| 美女脱了内裤张开腿让男人桶网站| 久久婷婷综合色丁香五月| 国产99精品精品久久免费| 午夜大片在线播放观看| 狠狠噜天天噜日日噜无码| 欧美日韩综合网在线观看| 日本在线中文字幕一区| 男女裸体做爰视频高清| 99精品国产在热久久| 日韩亚洲制服丝袜中文字幕| 91精品蜜桃熟女一区二区| 中文人妻av久久人妻水蜜桃| 国产99久久亚洲综合精品| 亚洲五月七月丁香缴情| 青青草手机免费播放视频| 日韩av无码精品一二三区| 亚洲三级黄色| 激情视频在线播放一区二区三区| 又硬又粗进去好爽免费| 亚洲男人的天堂在线播放 | a√无码在线观看| 一区二区三区在线少妇| 亚洲va中文字幕| 亚洲丁香五月激情综合| 日本女u久久精品视频| 粗大的内捧猛烈进出少妇| 日本夜爽爽一区二区三区| 99熟妇人妻精品一区五一看片 | 国产美女胸大一区二区三区| 中文字幕人妻少妇伦伦| 日本爽快片18禁免费看| 国产激情无码Av毛片久久| 深夜一区二区三区视频在线观看 |