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

基于VxWorks的BMK卡的軟件測試系統(tǒng)研究

2014-09-26 03:48:06王煊
電子設(shè)計工程 2014年2期
關(guān)鍵詞:設(shè)備系統(tǒng)

王煊

(中國空空導(dǎo)彈研究院 河南 洛陽 471009)

首先,本文詳細(xì)探討了基于VxWorks的PXI板卡驅(qū)動程序的開發(fā),總結(jié)出PXI驅(qū)動開發(fā)的具體流程,闡述了驅(qū)動程序中各功能模塊的實現(xiàn)方法和技術(shù)要點,完成了BMK卡在VxWorks系統(tǒng)下的驅(qū)動程序開發(fā)與調(diào)試工作,尤其是DMA數(shù)據(jù)傳輸部分的實現(xiàn),填補了國防型號測試系統(tǒng)中的空白,滿足了研制的急需性。其次,論文重點說明了系統(tǒng)應(yīng)用程序的設(shè)計,實現(xiàn)了VxWorks端與Windows端跨平臺的通信,分別詳細(xì)說明了客戶端和服務(wù)端的網(wǎng)絡(luò)通信程序的設(shè)計與實現(xiàn),為嵌入式軟件的遠(yuǎn)程控制奠定了基礎(chǔ)。最后給出了接口函數(shù)的列表,完成了整個系統(tǒng)的設(shè)計。

1 PXI總線BMK卡概述

基于PXI總線的BMK卡是空空導(dǎo)彈測試系統(tǒng)的重要組成部分,在遙測接收計算機上發(fā)揮重要作用。遙測計算機包括:6槽PXI機箱,PXI嵌入式控制器——PXI3800以及相應(yīng)的PXI總線接口功能子單元和信號調(diào)理硬件。整體結(jié)構(gòu)如圖1。

本文所涉及的BMK卡測試系統(tǒng)是在VxWorks實時控制系統(tǒng)下設(shè)計的BMK的驅(qū)動,實時性較好,為微秒級,對研發(fā)高實時性系統(tǒng)奠定重要基礎(chǔ)。此外在Windows系統(tǒng)下實現(xiàn)了用戶界面的開發(fā),人機交互界面良好。結(jié)構(gòu)圖如圖2。

圖1 遙測接收計算機框架圖Fig.1 The telemetry receiving computer framework figure

圖2 BMK卡測試程序結(jié)構(gòu)圖Fig.2 BMK card test program design chart

2 VxWorks下設(shè)備驅(qū)動程序研究與實現(xiàn)

VxWorks系統(tǒng)中輸入輸出設(shè)備宏觀上被分為3種類型:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備[2]。這種分類方法是根據(jù)硬件本身的特性來決定的。依照設(shè)備類型,VxWorks下設(shè)備驅(qū)動程序的管理也被分為3種模塊:字符設(shè)備驅(qū)動程序模塊、塊設(shè)備驅(qū)動程序模塊、網(wǎng)絡(luò)設(shè)備驅(qū)動程序模塊。每個模塊對應(yīng)一種設(shè)備類型,而每個模塊中不同的設(shè)備包含的功能不一樣。用戶可以根據(jù)自己的需要在VxWorks下,創(chuàng)建不同的模塊。

BMK卡為PXI設(shè)備,屬于網(wǎng)絡(luò)設(shè)備,其驅(qū)動程序應(yīng)創(chuàng)建為網(wǎng)路設(shè)備驅(qū)動程序。

2.1 初始化模塊

系統(tǒng)加電以后,加載VxWorks映像。然后處理器跳到加載映像的地址即 sysInit()的首地址開始執(zhí)行,sysInit()完成最初的硬件初始化工作。再調(diào)用第二個子程序UserInit()來關(guān)閉所有硬件中斷[5]。 其中 UserInit()的子程序 sysHInit()將硬件處于初始的安靜狀態(tài),此時VxWorks系統(tǒng)內(nèi)核還沒有被激活,內(nèi)存也沒有被初始化。

主要工作如下:在config.h中定義INCLUDE_PCI,設(shè)置PCI_CFG_TYPE為PCI_CFG_NONE讓BIOS來完成硬件資源配置;sysHWInit()做動態(tài)配置調(diào)用 sysPlx9054PciInit()查找設(shè)備和動態(tài)配置設(shè)備[1]。

2)重視項目化的過程考核。傳統(tǒng)的高職大學(xué)英語課堂上,學(xué)生普遍認(rèn)為只要期末根據(jù)教師所給定的復(fù)習(xí)重點臨時抱抱佛腳,就能應(yīng)付期末考試。而對于英語學(xué)習(xí)來說,在期末英語考試中,考試內(nèi)容只有一小部分的聽力考試,其余都是筆試,不能全面反映學(xué)生在一個學(xué)期內(nèi)的學(xué)習(xí)成果。因此,在英語考試方面應(yīng)當(dāng)增加考試內(nèi)容,將學(xué)習(xí)的過程納入英語期末考評中,增加其占考評的比重。在核心素養(yǎng)培養(yǎng)下的英語課程考核應(yīng)當(dāng)包括對學(xué)生語言能力、學(xué)習(xí)能力、思維能力和文化意識方面的考核。

PXI3800的BSP對專門的PCI設(shè)備提供了支持,BMKCardInit()函數(shù)就是通過調(diào)用這些庫函數(shù)來完成硬件搜索和資源配置功能的。

2.2 中斷處理

對于中斷,首先要進(jìn)行中斷掛接,其次進(jìn)行中斷處理模塊。

中斷掛接是在系統(tǒng)內(nèi)核被激活后才被調(diào)用的,其主要工作是初始化DMA相關(guān)寄存器,為進(jìn)行DMA操作做準(zhǔn)備;掛接中斷,將中斷向量和中斷服務(wù)程序相關(guān)聯(lián),并使能中斷;創(chuàng)建互斥信號量,用于建立驅(qū)動程序和應(yīng)用程序之間的特殊通信[3]。

一般情況PCI設(shè)備會共享中斷,所以掛接要使用pciIntConnect來將所有共享中斷的中斷服務(wù)程序組成一個函數(shù)鏈,這樣每次發(fā)生中斷都會將這個鏈調(diào)用一遍,從而實現(xiàn)中斷共享。

接收中斷后進(jìn)入中斷處理模塊。中斷處理模塊的主要工作是中斷到來時判斷是否為自己控制的設(shè)備發(fā)生的中斷,是則繼續(xù)處理,否則立即返回,交由其他中斷服務(wù)程序處理。若為DMA0通道產(chǎn)生的中斷,則釋放互斥信號量通知應(yīng)用程序處理剛通過DMA方式存入內(nèi)存的數(shù)據(jù);最后清中斷。

由于所有的中斷服務(wù)例程共享一個堆棧,沒有任務(wù)控制模塊,所以,在中斷服務(wù)程序中不能使用可導(dǎo)致阻塞的函數(shù),如 printf()、semTake()等。 另外,中斷服務(wù)程序不允許使用浮點協(xié)處理器的函數(shù),因為在 VxWorks中,intConnect()建立的中斷服務(wù)程序不能保存并回復(fù)浮點寄存器,如果一定要在中斷服務(wù)程序中使用浮點運算的話,必須使用fppArchLib庫中的函數(shù)顯式的保存和恢復(fù)浮點協(xié)處理器寄存器。

3 網(wǎng)絡(luò)通信程序設(shè)計與實現(xiàn)

在VxWorks的BSP完成了網(wǎng)口的底層驅(qū)動和TCP/IP層上的協(xié)議加載后,用戶程序需要的就是在TCP/IP層上進(jìn)行網(wǎng)絡(luò)通信。在本系統(tǒng)中,采用的是服務(wù)器 (server)和客戶端(client)的通信方式。其實現(xiàn)過程如圖3所示。

圖3 服務(wù)器端與客戶端的建立Fig.3 Socket connecting between server and client

3.1 VxWorks端網(wǎng)絡(luò)通信程序設(shè)計

在服務(wù)器端,在Tornado2.2中利用VxWorks對socket的支持,其通信程序如下[4]:

1)創(chuàng)建套接字。創(chuàng)建 socket是利用函數(shù) socket(AF_INET,SOCK_STREAM,0), 其 中 ,AF_INET 指 定 通 信 域 為TCP/IP協(xié)議簇,SOCK_STREAM是全雙工的字節(jié)流。Socket調(diào)用成功后返回一個套接字描述符,接著對服務(wù)器地址等數(shù)據(jù)結(jié)構(gòu)初始化并對字節(jié)順序進(jìn)行初始化。

2)bind (listenSkt, (struct sockaddr*) &serverAddr, sock AddrSize),將套接字口和端口號綁定在一起。

3)監(jiān)聽。函數(shù) listen (listenSkt, 5)將在 listenSkt套接字指定的端口上開始監(jiān)聽,等待客戶的連接請求。

4)建立連接。 函數(shù) accept(listenSkt, (struct sockaddr*)(&clientAddr),&sockAddrSize)接收客戶機的連接請求并為此建立一個連接。函數(shù)accept返回一個新的套接字描述符commuSkt來供連接使用,服務(wù)器可以在以前的socket上繼續(xù)監(jiān)聽。

5)關(guān)閉連接。用函數(shù)close()來關(guān)閉一個套接字描述符。

6)發(fā)送和接收數(shù)據(jù)。函數(shù)send()用于從發(fā)送緩沖區(qū)讀取指定字節(jié)長度的數(shù)據(jù)來發(fā)送。函數(shù)recv()從接收緩沖區(qū)接收指定字節(jié)長度的數(shù)據(jù)。

整個程序的運行,需要多任務(wù)的支持。在多任務(wù)操作系統(tǒng)VxWorks下,任務(wù)由唯一的ID來標(biāo)識,并且對應(yīng)某一個特定的任務(wù)名,系統(tǒng)支持256個優(yōu)先級。在默認(rèn)情況下,0為最高優(yōu)先級,255為最低優(yōu)先級。每個任務(wù)都有自己的狀態(tài),是下面一種或幾種的組合狀態(tài):excute(正在執(zhí)行),ready(就緒狀態(tài)),pended(阻塞狀態(tài)),delayed(延遲狀態(tài)),suspended(掛起狀態(tài))。本系統(tǒng)中采用了默認(rèn)的優(yōu)先級搶占調(diào)度策略。

3.2 windows端通信程序的設(shè)計

Windows端通信程序是基于Windows socket的,windows socket定義了一套Microsoft Windows下網(wǎng)絡(luò)編程接口。它提供了針對Windows的擴展函數(shù)庫,使程序員可以充分的利用Windows消息驅(qū)動機制進(jìn)行編程。

Windows socket通信的基礎(chǔ)是套接字 (socket)。 利用socket進(jìn)行通信,主要有兩種方式。第一種是有連接的流方式,即需要在兩個通信的應(yīng)用程序之間建立一條連接鏈路。必須在兩端確定通路后,數(shù)據(jù)才能被正確接收和發(fā)送。第二種是無連接的數(shù)據(jù)報文方式,這時通信的兩臺計算機把數(shù)據(jù)通過網(wǎng)絡(luò)郵寄給對方,數(shù)據(jù)在傳送過程中有可能會殘缺,也有可能接收順序與發(fā)出時順序不同,這種方式支持雙向的數(shù)據(jù)流,但并不保證數(shù)據(jù)的可靠、有序、無重復(fù)性。在本系統(tǒng)中采用的是有連接的流方式,用的是客戶機/服務(wù)器模型。

對于VxWorks端來說,Windows屬于客戶機,客戶機的界面用MFC進(jìn)行編寫,通過界面向服務(wù)器請求服務(wù),并通過一套協(xié)議保證服務(wù)可以被提供或者接收,該協(xié)議需要被客戶機和服務(wù)器所接受。在MFC中為套接字提供了類CAsyncSocket和 CSocket,由于CAsyncSocket不需要多線程,使用簡單,雖然CAsyncSocket的發(fā)送和接收受到TCP/IP緩沖大小的限制,但是Windows作為上層界面控制的時候,數(shù)據(jù)量并不大,所以在本系統(tǒng)中采用CAsyncSocket類庫中的函數(shù)。

創(chuàng)建函數(shù):BOOL Create(UINT nSocketPort=0,int nSocketType=SOCK_STREAM,long lEvent=FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE,LPCTSTR lpszSocketAddress=NULL)

關(guān) 聯(lián) 函 數(shù) :BOOL Bind ( UINT nSocketPort, LPCTSTR lpszSocketAddress=NULL)

客戶套接字連接函數(shù):BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort)

4 接口函數(shù)設(shè)計

接口函數(shù)包括發(fā)送例程和接收例程。

發(fā)送例程的設(shè)計分為以下幾步:

1)應(yīng)用程序把要發(fā)送的數(shù)據(jù)的緩沖區(qū)首指針和發(fā)送要求傳遞給驅(qū)動程序,發(fā)送要求包括通道號,發(fā)送方式,發(fā)送個數(shù)。

2)驅(qū)動程序?qū)l(fā)送要求寫入對應(yīng)的寄存器地址。寫發(fā)送命令字,然后請求獲得該發(fā)送通道以及發(fā)送方式對應(yīng)的發(fā)送緩沖區(qū)的信號量。若信號量獲得成功,驅(qū)動程序就把將要發(fā)送的數(shù)據(jù)通過DMA傳輸?shù)姆绞綄懭氚l(fā)送緩沖區(qū);若信號量獲得不成功,多請求幾次,超過一次次數(shù)后函數(shù)返回,發(fā)送失敗。對于單次發(fā)送的方式必須首先查詢一個特定的標(biāo)志位,該標(biāo)志位表示的是發(fā)送是否準(zhǔn)備好,只有查詢到該標(biāo)志位為0,才可以進(jìn)行后面的操作。

相對于發(fā)送例程來說,接收例程要復(fù)雜一些[6]。

圖4 接收例程流程圖Fig.4 Receive routine flowchart

這里涉及到了兩個任務(wù)的同步以及任務(wù)間的通信,采用了信號量的方式進(jìn)行處理。VxWorks為信號量做了很好的優(yōu)化,為任務(wù)間通信提供了最快捷的方式。信號量是互斥和任務(wù)同步的主要實現(xiàn)手段。

二進(jìn)制信號量是速度最快、真正意義上的信號量。VxWorks專門為任務(wù)同步和互斥優(yōu)化了這種信號量,這種信號量相當(dāng)于總數(shù)為1的計數(shù)型信號量,也可以理解成一種開關(guān)。一個信號量只有唯一的任務(wù)可以獲得,當(dāng)一個任務(wù)釋放信號量之后,其他的任務(wù)才可以重新獲得這個信號量。

BMK的接口函數(shù)如下:

表1 BMK通信卡接口函數(shù)表Tab.1 BMK card interface functions list

5 結(jié) 論

本文設(shè)計了基于PXI總線的BMK卡的軟件測試程序,該程序結(jié)構(gòu)緊湊,功能齊全,并且在實時性系統(tǒng)VxWorks的操作下,確保了數(shù)據(jù)處理的迅速準(zhǔn)確。該板卡工作穩(wěn)定,可以實現(xiàn)收發(fā)數(shù)據(jù),尤其在DMA傳輸過程中,保證了大量數(shù)據(jù)發(fā)送的及時性,適用于高實時性要求的系統(tǒng)。在國防中可以發(fā)揮重要作用。

[1]9054 Data Book Version 2.1,PCI 9054 Data Book[S].U.S:PLX,2000.

[2]Barbalance A.Performance Comparison of VxWorks, Linux,RTAI and Xenomai in a Hard Realctime Application[C]//Real-Time Conference,2007.

[3]卞紅雨,曹明明.VxWorks下 PCI總線設(shè)備驅(qū)動程序設(shè)計[J].聲學(xué)與電子工程,2005(3):42-45.

BIAN Hong-yu,CAO Ming-ming.PCI device driver design on VxWorks[J].Acoustics and Electronics Engineering,2005(3):42-45.

[4]程敬原.VxWorks軟件開發(fā)項目實例[M].北京:中國電力出版社,2005:24-64.

[5]CHENG Jing-yuan,AN Qi,YANG Jun-feng.Algorithm design ofCPCIbackboard’sinterruptsmanagementbased on VxWorks’ multi-tasks[J].Plasma Science and Technology,2006,V8(5):614-617.

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

猜你喜歡
設(shè)備系統(tǒng)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設(shè)備運行維護探討
主站蜘蛛池模板: 色偷偷男人的天堂亚洲av| 99色亚洲国产精品11p| 成人伊人色一区二区三区| jizz亚洲高清在线观看| 青青久久91| www.av男人.com| 色婷婷狠狠干| 亚洲精品麻豆| 免费在线观看av| 国产欧美精品一区aⅴ影院| 久久这里只有精品23| 最新日本中文字幕| 亚洲成人黄色网址| 91色在线视频| 人妻无码一区二区视频| 亚洲国产亚综合在线区| 国产成人免费视频精品一区二区| 激情综合五月网| 四虎永久免费地址| 国产日韩欧美视频| 国产毛片不卡| 在线免费无码视频| 久久99国产精品成人欧美| 国产欧美日韩精品第二区| 久久情精品国产品免费| 亚洲精品无码AV电影在线播放| 91麻豆久久久| 亚洲男人天堂2020| 看国产一级毛片| 色婷婷啪啪| 国产一区二区在线视频观看| 99久久亚洲综合精品TS| 欧美一级高清视频在线播放| 亚洲人在线| 99视频只有精品| 国产美女一级毛片| 一本一本大道香蕉久在线播放| 欧美日一级片| 狠狠色成人综合首页| 日韩 欧美 国产 精品 综合| www中文字幕在线观看| 国产精品亚洲va在线观看 | 91色在线观看| 精品国产Av电影无码久久久| 国产亚洲精品无码专| 国产免费福利网站| 国产福利免费视频| 四虎永久免费地址| 亚洲精品第1页| 国产一区二区免费播放| 一级香蕉人体视频| 成人a免费α片在线视频网站| 成色7777精品在线| a级毛片免费在线观看| 国产老女人精品免费视频| 亚洲av无码久久无遮挡| 少妇精品网站| 国产成人精彩在线视频50| 国产日本一区二区三区| 激情亚洲天堂| 国产一国产一有一级毛片视频| 一级全免费视频播放| 亚洲欧洲一区二区三区| 久久综合九色综合97网| 国产一区二区三区免费观看| 99re视频在线| 日日噜噜夜夜狠狠视频| 女人av社区男人的天堂| 日本午夜精品一本在线观看| 天堂亚洲网| 国产极品美女在线播放| 国产真实乱人视频| 中文字幕人妻无码系列第三区| 91精品综合| 国产欧美精品专区一区二区| 国产99视频在线| 伊人无码视屏| 真实国产乱子伦视频| 一级毛片免费不卡在线视频| 99久久精品视香蕉蕉| 国产剧情一区二区| 97一区二区在线播放|