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

基于VxWorks的1553B驅動設計技術

2010-06-13 11:32:58張書濱
微處理機 2010年3期
關鍵詞:信息

李 松,張書濱

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

1 引言

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

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

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

圖1 1553B 總線組成框圖

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

3 驅動程序開發

基于VxWorks進行1553B驅動開發時,需對1553B接口卡進行相應的初始化和配置,并完成中斷處理程序,實現各功能模塊。基于VxWorks的1553B驅動程序開發流程如圖2所示。

圖2 基于VxWorks的1553B驅動程序開發流程

3.1 BC 驅動設計

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

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

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

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

BC中斷服務程序主要處理:

a.清中斷,置當前幀結束標志

b.通知應用程序處理當前幀的消息緩沖區

BC程序對當前幀的消息緩沖區進行處理,根據安排的消息內容提取所需的消息數據,如果有RT返回的矢量字請求,就組織跟矢量字相關的消息成非周期消息幀并安排傳輸。

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

//獲得設備基地址信息

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();//復位

//設置相關寄存器

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);//讀取中斷狀態寄存器

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

BC其它功能模塊主要實現包括數據和方式碼的接收、發送,如下所示:

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

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

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

BCSendData(short rt,short sa,unsigned short*Data,short length,);//發送數據

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

3.2 RT 驅動設計

當RT接收到BC有指令后,必需在標準規定的時間內做出響應,收到非法命令時要丟棄完成信息的傳輸,必要時給BC返回一個狀態字

RT模式工作流程

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

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

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

d.設置RT上線。

RT中斷服務程序;

a.清中斷;

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

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

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

//獲得設備基地址信息代碼同BC驅動設計

//掛接中斷處理程序

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

Reset61581();//復位

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);//讀取中斷狀態寄存器

if((StatusWord&RT_CONTROL_EOM_INT)==RT_CONTROL_EOM_INT)

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

...

}

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

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

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

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

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

3.3 MT 驅動設計

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

MT模式工作流程:

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

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

c.啟動MT開始監聽總線信息。

下面是VxWorks系統下MT驅動的實例代碼,采用字監控方式,適用于61581 PCI總線的1553B接口卡:

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

//掛接中斷處理程序

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

Reset61581();//復位

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

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

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

//字監控方式

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芯片有字監控方式和特定消息監控方式,字監控方式監控全部總線消息,遇到MT TRIGGER WORD觸發中斷;特定消息方式監控特定RT的特定接收發送子地址消息,設定消息結束產生中斷就可以觸發中斷。觸發中斷后,采用信號量的方式通知處理任務讀取數據。

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

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

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

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

3.4 注意事項

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

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

c.BC出錯處理,BC對總線上傳送的消息要進行正確性驗證,當發生錯誤和故障時,BC還要進行錯誤處理和系統維護等。當BC確認在一個傳輸通道上的傳輸發現故障時,可使系統轉到另一個傳輸通道正常工作。當BC識別到某個RT失效或從失效狀態變為工作狀態時,要重新更新指令表,安排合適的消息幀進行總線通信。

4 結束語

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

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

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

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

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

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
大眾創業(2009年10期)2009-10-08 04:52:00
展會信息
展會信息
展會信息
展會信息
展會信息
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 国产三级视频网站| 国产91全国探花系列在线播放| 亚洲精品无码人妻无码| 日韩欧美91| 最新国产午夜精品视频成人| 国产精品午夜福利麻豆| 国产精品久线在线观看| 2020最新国产精品视频| 四虎精品黑人视频| 成人国产小视频| 国产综合日韩另类一区二区| 四虎永久免费地址| 午夜福利在线观看成人| 最新国语自产精品视频在| 久久久久久尹人网香蕉| 91人妻在线视频| 91精品小视频| 日韩在线网址| 日韩大片免费观看视频播放| 欧美A级V片在线观看| 国产超薄肉色丝袜网站| 性网站在线观看| 亚洲日韩精品欧美中文字幕| 色综合中文字幕| 中文字幕乱码中文乱码51精品| 日韩美毛片| 日韩精品一区二区三区视频免费看| 亚洲免费黄色网| 中文字幕 欧美日韩| 九色综合伊人久久富二代| 夜夜高潮夜夜爽国产伦精品| 成人午夜久久| 久久精品无码一区二区日韩免费| 国产幂在线无码精品| 免费毛片全部不收费的| 久久亚洲国产一区二区| 中国成人在线视频| 91色在线视频| 欧美一级高清免费a| 浮力影院国产第一页| 国产在线一区视频| 农村乱人伦一区二区| 国产三级a| 伊人查蕉在线观看国产精品| 福利国产微拍广场一区视频在线| 四虎国产精品永久一区| 国产视频欧美| 国产毛片网站| 中文字幕天无码久久精品视频免费 | 青青久久91| 亚洲第一成网站| 67194在线午夜亚洲| 欧美三级不卡在线观看视频| 日韩高清一区 | 亚洲欧美在线看片AI| 第一页亚洲| 亚洲永久视频| 国产精品免费电影| 2020最新国产精品视频| 秋霞国产在线| 精品国产自| 欧美一区中文字幕| 不卡视频国产| 国产成人凹凸视频在线| 福利视频一区| m男亚洲一区中文字幕| 老色鬼久久亚洲AV综合| 亚洲成人网在线观看| 国产在线专区| 91视频精品| 国产91九色在线播放| 四虎影院国产| 美女亚洲一区| 黄片在线永久| 婷婷丁香色| 欧美成人精品在线| 激情六月丁香婷婷| 波多野结衣一二三| 亚洲国产理论片在线播放| 思思热在线视频精品| 成年人久久黄色网站| 亚洲成人黄色在线|