公務(wù)員期刊網(wǎng) 論文中心 正文

VxWorks的嵌入式多協(xié)議通信控制器設(shè)計(jì)

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了VxWorks的嵌入式多協(xié)議通信控制器設(shè)計(jì)范文,希望能給你帶來靈感和參考,敬請閱讀。

VxWorks的嵌入式多協(xié)議通信控制器設(shè)計(jì)

摘要:通信控制器是地面戰(zhàn)術(shù)組網(wǎng)以及其他工業(yè)控制設(shè)備組網(wǎng)的核心節(jié)點(diǎn)。其目前的工程實(shí)現(xiàn)形式多為燒錄單片機(jī)加外圍電路搭建,這種方法存在很多弊端。該文提出了一種在通用硬件平臺(tái)上,借助嵌入式實(shí)時(shí)操作系統(tǒng)vxworks實(shí)現(xiàn)系統(tǒng)功能的設(shè)計(jì)方案;介紹了系統(tǒng)基本結(jié)構(gòu)、基本硬件、軟件特點(diǎn)。設(shè)計(jì)了系統(tǒng)通信協(xié)議,重點(diǎn)說明了設(shè)計(jì)思路,同時(shí)給出了部分模塊的設(shè)計(jì)細(xì)節(jié)和實(shí)驗(yàn)結(jié)果。

關(guān)鍵詞:多協(xié)議通信控制;VxWorks;嵌入式實(shí)時(shí)操作系統(tǒng)

0引言

通信控制器是工業(yè)和軍事領(lǐng)域快速組網(wǎng)的關(guān)鍵部分。目前武器系統(tǒng)的通信接口相對單一、滯后,形式基本停留在協(xié)議的單對單轉(zhuǎn)換,這種狀況很難滿足系統(tǒng)中各型號設(shè)備間對接以及系統(tǒng)的更新和擴(kuò)展要求。實(shí)現(xiàn)方面主要基于以MCU為核心的自制電路,用匯編或C語言編寫控制環(huán)完成接口控制、數(shù)據(jù)通信。這樣的設(shè)計(jì)思路在系統(tǒng)資源、功能需求相對單一時(shí)可以勝任,如果系統(tǒng)接口多、功能復(fù)雜,對信息處理能力要求較高,解決如何管理系統(tǒng)資源(I/O、存儲(chǔ)器、協(xié)議棧等),在數(shù)據(jù)和資源引用上始終保持一致,并且在此基礎(chǔ)上高效可靠地實(shí)現(xiàn)通信控制等問題就顯得非常繁復(fù)。這時(shí)實(shí)時(shí)操作系統(tǒng)(RTOS)就變得尤其重要。實(shí)時(shí)系統(tǒng)在各高精尖技術(shù)領(lǐng)域迅猛發(fā)展,作為嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺(tái),其主要任務(wù)是對事件進(jìn)行實(shí)時(shí)處理。事件可能在無法預(yù)知的時(shí)刻到達(dá),但軟件必須在事件發(fā)生時(shí)在嚴(yán)格的時(shí)限內(nèi)做出響應(yīng)。VxWorks操作系統(tǒng)是美國WindRiverSystem公DOI:10.3969/j.issn.1671-1041.2022.03.001文章編號:1671-1041(2022)03-0001-04司于1983年設(shè)計(jì)開發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)[1],因其高可靠性、高靈活性和卓越實(shí)時(shí)性被廣泛應(yīng)用在軍事、通信、航空航天等要求強(qiáng)實(shí)時(shí)性的領(lǐng)域[2],如軍事演習(xí)、彈道制導(dǎo)等。美國F-16、FA-18戰(zhàn)機(jī)、B-2隱形轟炸機(jī)、愛國者導(dǎo)彈以及97年登陸火星表面的探測器上都使用了VxWorks。在應(yīng)用VxWorks的嵌入式系統(tǒng)中,網(wǎng)絡(luò)通信起著重要的作用,是嵌入式系統(tǒng)與其他系統(tǒng)交互的主要途徑[3]。針對目前某些武器系統(tǒng)接口需要,為了滿足多種標(biāo)準(zhǔn)接口間互聯(lián)和當(dāng)前武器系統(tǒng)中各設(shè)備的接口形式,減少系統(tǒng)中相關(guān)設(shè)備數(shù)量,從根本上提高系統(tǒng)的可靠性和擴(kuò)展能力,本文提出了一種基于VxWorks的嵌入式多協(xié)議通信控制器設(shè)計(jì)方案,在實(shí)現(xiàn)上述設(shè)計(jì)目標(biāo)的前提下,與傳統(tǒng)設(shè)計(jì)方式相比,還具有系統(tǒng)可靠增強(qiáng)、開發(fā)時(shí)間縮短、系統(tǒng)升級維護(hù)方便等優(yōu)勢。

1總體設(shè)計(jì)

1.1系統(tǒng)結(jié)構(gòu)

控制器為不同接口的數(shù)傳設(shè)備提供數(shù)據(jù)傳輸通路,作用相當(dāng)于網(wǎng)絡(luò)架構(gòu)中的應(yīng)用網(wǎng)關(guān)。系統(tǒng)中設(shè)備接口包括:以太網(wǎng)、并口、RS232和RS422等。相關(guān)設(shè)備間數(shù)據(jù)傳輸方向符合特定應(yīng)用的規(guī)定,控制器面板的屏幕實(shí)時(shí)顯示工作參數(shù),可以通過鍵盤和鼠標(biāo)控制控制器的工作狀態(tài),同時(shí)具有實(shí)時(shí)存儲(chǔ)各種數(shù)據(jù)的能力。系統(tǒng)拓?fù)洳捎眯切尉W(wǎng),以控制器為數(shù)據(jù)交換中心,外接各種設(shè)備。具體結(jié)構(gòu)如圖1。

1.2硬件平臺(tái)

本文設(shè)計(jì)的控制器基本硬件模塊采用MB890Mini-ITX。它是一塊高度集成、小功耗、大溫寬、高穩(wěn)定性的CPU模塊,提供了多個(gè)串口、USB口、并行口、VGA和LVDS等顯示卡接口,并采用了千兆以太網(wǎng)卡。PentiumMCPU工作主頻是1.2GHz,內(nèi)存為1GB,可滿足一般數(shù)據(jù)處理和通信的要求,且支持在今后的設(shè)計(jì)中做進(jìn)一步的擴(kuò)展。啟動(dòng)方式選擇為CF卡啟動(dòng),最終的映像文件下載到CF卡內(nèi),控制器上電自動(dòng)加載運(yùn)行。

1.3軟件平臺(tái)

數(shù)據(jù)處理和傳輸實(shí)時(shí)性要求較高,處理過程中不能阻塞,控制器連接多個(gè)數(shù)據(jù)設(shè)備,所以需要宏觀上發(fā)起并運(yùn)行多個(gè)任務(wù)。選擇強(qiáng)實(shí)時(shí)系統(tǒng)VxWorks主要基于其優(yōu)秀的時(shí)間性能和可靠性。VxWorks的核心是一個(gè)高性能微內(nèi)核。該內(nèi)核支持所有實(shí)時(shí)功能,包括高效的實(shí)時(shí)多任務(wù)調(diào)度、中斷管理、實(shí)時(shí)的系統(tǒng)資源以及實(shí)時(shí)的任務(wù)間通信。內(nèi)核最小可被裁剪到8KB,400多個(gè)相對獨(dú)立、短小精煉的目標(biāo)模塊可根據(jù)需要選擇和配置系統(tǒng),保證系統(tǒng)穩(wěn)定和可靠。Wind內(nèi)核的缺省調(diào)度策略是基于優(yōu)先級搶占式,同時(shí)它也提供了時(shí)間片輪轉(zhuǎn)調(diào)度。內(nèi)核支持256級優(yōu)先級,一般應(yīng)用程序任務(wù)的優(yōu)先級在100~255之間,控制器主要任務(wù)共有5個(gè)。一般來說,實(shí)時(shí)操作系統(tǒng)都是多任務(wù)的。Vxworks中內(nèi)核調(diào)度策略、信號量、中斷服務(wù)程序等直接支持構(gòu)建實(shí)時(shí)多任務(wù)系統(tǒng)。VxWorks的內(nèi)核保證任務(wù)切換在μs級,I/O操作時(shí)間短,實(shí)時(shí)響應(yīng)硬件中斷,保證數(shù)據(jù)傳輸和處理的實(shí)時(shí)性。VxWorks具有較清晰的層次結(jié)構(gòu)。系統(tǒng)軟件部分可以分為2層,基本結(jié)構(gòu)從BSP[4]開始,包括目標(biāo)機(jī)加電后硬件初始化、操作系統(tǒng)初始化和一些基本硬件的驅(qū)動(dòng),它貫穿硬件、操作系統(tǒng)和上層應(yīng)用,是移植系統(tǒng)到目標(biāo)機(jī)的關(guān)鍵。與其他硬件的驅(qū)動(dòng)程序一起,這部分都是和硬件相關(guān)的。VxWorks庫、I/O系統(tǒng)和文件系統(tǒng)等系統(tǒng)軟件,這部分和用戶的應(yīng)用軟件一起構(gòu)成與硬件無直接關(guān)系的軟件。該層次結(jié)構(gòu)是VxWorks高效靈活的原因。由于層次結(jié)構(gòu)和BSP的存在,同樣的應(yīng)用模塊可以在不同的硬件平臺(tái)上移植。這對于大系統(tǒng)的擴(kuò)展很有意義,同時(shí)是相比MCU加匯編這樣的傳統(tǒng)設(shè)計(jì)的優(yōu)越之處。

2通信協(xié)議設(shè)計(jì)

目標(biāo)機(jī)采用X86架構(gòu)CPU,機(jī)器對存儲(chǔ)器字節(jié)排序?yàn)樾《四J剑╨ittleedian),規(guī)定系統(tǒng)中設(shè)備的數(shù)據(jù)幀格式,作為控制器處理信息數(shù)據(jù)的規(guī)則。管理機(jī)采用以太網(wǎng)接口,以UDP協(xié)議工作,承擔(dān)接收系統(tǒng)中其他接口設(shè)備的數(shù)據(jù)和發(fā)送本機(jī)數(shù)據(jù)至其他各設(shè)備的任務(wù)。生成的數(shù)據(jù)幀格式如圖2。前3byte指定了該數(shù)據(jù)包數(shù)據(jù)量,便于內(nèi)存緩沖區(qū)開辟。Byte4標(biāo)識(shí)出所要路由的目的設(shè)備,byte5留待做檢驗(yàn),之后是實(shí)際的信息byte各下位機(jī)設(shè)備所發(fā)出的數(shù)據(jù)包有統(tǒng)一的幀格式,定義如圖3。前1byte標(biāo)識(shí)出數(shù)據(jù)包來源設(shè)備,后3byte表示數(shù)據(jù)幀總長度,最后是實(shí)際發(fā)送的信息數(shù)據(jù)。下位機(jī)標(biāo)志位以接口類型區(qū)別,定義見表1。

3控制器軟件設(shè)計(jì)

3.1軟件結(jié)構(gòu)

軟件部分劃分為BSP、內(nèi)核、應(yīng)用程序軟件。BSP部分主要根據(jù)目標(biāo)機(jī)MB890配置相關(guān)文件。其中,最主要的是..\target\config\pcPentium\config.h,在該文件中配置啟動(dòng)方式和使用的網(wǎng)絡(luò)控制芯片等內(nèi)容,最后的映像文件(image)所包含的程序結(jié)構(gòu)如下:BSP部分,嚴(yán)格說還有如網(wǎng)絡(luò)控制驅(qū)動(dòng)部分,需要針對目標(biāo)機(jī)的配置件分別編寫或修改、編譯,以打通整個(gè)硬件系統(tǒng)。內(nèi)核作為硬件相關(guān)軟件,支持調(diào)度運(yùn)行應(yīng)用程序中的各個(gè)任務(wù)[5]。應(yīng)用軟件部分則嚴(yán)格按照應(yīng)用要求,分為6大模塊,如圖4。

3.2系統(tǒng)任務(wù)設(shè)計(jì)

3.2.1任務(wù)的劃分與功能描述。在實(shí)時(shí)多任務(wù)系統(tǒng)開發(fā)中,任務(wù)劃分對系統(tǒng)運(yùn)行至關(guān)重要。而任務(wù)劃分存在以下矛盾:如任務(wù)太多,必然增加系統(tǒng)任務(wù)切換的開銷,同時(shí)任務(wù)間頻繁通信也會(huì)增加系統(tǒng)負(fù)擔(dān);如任務(wù)太少,系統(tǒng)的并行度就會(huì)降低,實(shí)時(shí)性就得不到保證。任務(wù)劃分一般要遵循H.Gomma原則,即I/O原則、時(shí)間優(yōu)先級、大計(jì)算量功能、功能內(nèi)聚、時(shí)間內(nèi)聚和周期性執(zhí)行功能。根據(jù)H.Gomma原則,控制器主要任務(wù)劃分為:網(wǎng)絡(luò)檢測任務(wù)、初始化任務(wù)、網(wǎng)絡(luò)接收任務(wù)、數(shù)據(jù)包解析與轉(zhuǎn)發(fā)任務(wù)、接收多接口設(shè)備數(shù)據(jù)任務(wù)。分別說明如下:網(wǎng)絡(luò)檢測任務(wù):主要監(jiān)測網(wǎng)絡(luò)狀態(tài),出錯(cuò)即關(guān)閉網(wǎng)絡(luò)并重新初始化控制器。這個(gè)任務(wù)的優(yōu)先級定為最高,為120。它是控制器工作的基本保證。初始化任務(wù):執(zhí)行系統(tǒng)初始化操作,初始化套接字并打開控制器上相應(yīng)接口,如RS232、RS422等。創(chuàng)建消息隊(duì)列,為消息隊(duì)列創(chuàng)建實(shí)現(xiàn)同步的計(jì)數(shù)信號量。生成系統(tǒng)中其他任務(wù),該任務(wù)優(yōu)先級為122。網(wǎng)絡(luò)接收任務(wù):系統(tǒng)網(wǎng)絡(luò)通信的傳輸層采用UDP協(xié)議,以Socket套接字機(jī)制實(shí)現(xiàn)。任務(wù)在控制器初始化套接字后進(jìn)入循環(huán),等待管理機(jī)端的數(shù)據(jù)包。此時(shí)任務(wù)處于阻塞狀態(tài),一旦數(shù)據(jù)包傳來,就將數(shù)據(jù)包送入消息隊(duì)列緩沖,然后釋放信號量。任務(wù)優(yōu)先級為124。數(shù)據(jù)包解析與轉(zhuǎn)發(fā)任務(wù):該任務(wù)是一個(gè)循環(huán)條件為semTake()的循環(huán)任務(wù),一旦消息隊(duì)列里有數(shù)據(jù)包,那么它就可以得到對應(yīng)信號量,任務(wù)就解除阻塞,接收數(shù)據(jù)包,同時(shí)根據(jù)協(xié)議解析數(shù)據(jù),解析完后直接轉(zhuǎn)發(fā)給其他接口設(shè)備。任務(wù)優(yōu)先級為126。接收多接口設(shè)備數(shù)據(jù)任務(wù):任務(wù)采用掛接中斷服務(wù)程序方式,等待各種接口設(shè)備,如RS232、RS422設(shè)備向控制器發(fā)送數(shù)據(jù)。根據(jù)應(yīng)用對中斷安排優(yōu)先級,該任務(wù)接收數(shù)據(jù)后直接轉(zhuǎn)發(fā),因?yàn)槟康牡刂挥泄芾頇C(jī)。該任務(wù)的實(shí)現(xiàn)也可采用select機(jī)制處理。任務(wù)優(yōu)先級為124。3.2.2任務(wù)間調(diào)度與通信機(jī)制??刂破骶W(wǎng)絡(luò)接收任務(wù)將接收管理機(jī)端通過網(wǎng)口發(fā)送來的數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的路由標(biāo)示,選擇目的地址轉(zhuǎn)發(fā)。接收多接口設(shè)備數(shù)據(jù)任務(wù)也會(huì)監(jiān)視各接口設(shè)備是否有數(shù)據(jù)要發(fā)往管理機(jī)。這兩個(gè)任務(wù)的優(yōu)先級一樣,采用時(shí)間片輪轉(zhuǎn)調(diào)度方式??刂破饔幸欢ㄈ萘康木彌_幀數(shù),接收、解析、轉(zhuǎn)發(fā)任務(wù)并行。對于多種接口設(shè)備發(fā)來的數(shù)據(jù)幀,控制器響應(yīng)中斷,接收數(shù)據(jù)。VxWorks系統(tǒng)任務(wù)間通信手段包括消息隊(duì)列、管道、信號量、共享內(nèi)存、Socket套接字和信號,是協(xié)同各任務(wù)工作、控制任務(wù)時(shí)序的關(guān)鍵??刂破髦饕褂肧ocket套接字、消息隊(duì)列和信號量。網(wǎng)絡(luò)接收任務(wù)接收數(shù)據(jù)包,據(jù)協(xié)議約定得到數(shù)據(jù)包大小,開辟相應(yīng)內(nèi)存,接收完后直接發(fā)到前向消息隊(duì)列(網(wǎng)口至下位多接口設(shè)備),同時(shí)釋放一個(gè)信號量semMsgRecv,有數(shù)據(jù)從管理機(jī)端發(fā)來則一直接收。如果有數(shù)據(jù)來自下位設(shè)備,則啟用時(shí)間片輪轉(zhuǎn)調(diào)度。數(shù)據(jù)包解析與轉(zhuǎn)發(fā)任務(wù)等待接收量semMsgRecv,如沒有則任務(wù)阻塞,一旦開啟就從消息隊(duì)列中取出數(shù)據(jù)包解析出目的地址后直接轉(zhuǎn)發(fā)。網(wǎng)絡(luò)接收任務(wù)與數(shù)據(jù)包解析與轉(zhuǎn)發(fā)任務(wù)間的通信采用消息隊(duì)列,以計(jì)數(shù)器信號量作為觸發(fā),保證實(shí)時(shí)性。系統(tǒng)任務(wù)間調(diào)度和通信方式見表2。

4實(shí)驗(yàn)結(jié)果

在usrAppInit.c的應(yīng)用程序入口函數(shù)usrAppInit()里加入應(yīng)用初始化程序,屏幕打印出Muti-Protocolcommcontrollerisreadytowork!,VxWorks加載界面正確。說明VxWorks內(nèi)核已正確加載至目標(biāo)機(jī)內(nèi)存,BSP移植完全正確,系統(tǒng)控制流已轉(zhuǎn)至應(yīng)用初始化程序。表2任務(wù)分配表Table2Taskallocationtable任務(wù)間的通信是控制器系統(tǒng)有效工作的關(guān)鍵部分,下面給出控制器網(wǎng)絡(luò)接收任務(wù)與數(shù)據(jù)包解析與轉(zhuǎn)發(fā)任務(wù)間數(shù)據(jù)流的部分測試結(jié)果,如圖5。對比測試數(shù)據(jù),測試結(jié)果顯示正確。

5結(jié)論

通信控制器作為一般組網(wǎng)的中心結(jié)點(diǎn),可靠性和穩(wěn)定性至關(guān)重要。本文采用MB890CPU模塊,以VxWorks作為軟件平臺(tái)。該軟件經(jīng)過美國DO-178認(rèn)證,可靠和穩(wěn)定性突出。今后的專用網(wǎng)發(fā)展一定會(huì)向多功能、高速率、強(qiáng)實(shí)時(shí)方面發(fā)展。傳統(tǒng)的使用一般MCU自己搭建硬件平臺(tái),把應(yīng)用代碼和系統(tǒng)資源管理代碼混在一起的設(shè)計(jì)方法今后可能無法適應(yīng)變化。基于操作系統(tǒng)的設(shè)計(jì)穩(wěn)定可靠,便于代碼重用,節(jié)省開發(fā)時(shí)間。同時(shí),代碼重用也是軟件可靠性的保證。本文給出了通信控制器在這種方式下的設(shè)計(jì)方案,說明了設(shè)計(jì)細(xì)節(jié),在專用網(wǎng)設(shè)計(jì)方面是一個(gè)很好的解決思路。

作者:張明利 許清清 李阿明 施群 王道 顧杰 單位:上海無線電設(shè)備研究所