• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于VxWorks實(shí)時(shí)操作系統(tǒng)的多串口通信系統(tǒng)的實(shí)現(xiàn)

      2013-06-05 13:30:04劉亙煒
      火控雷達(dá)技術(shù) 2013年1期
      關(guān)鍵詞:基類子類實(shí)時(shí)性

      雷 瑛 劉亙煒 張 安 張 磊

      (西安電子工程研究所 西安 710100)

      1 引言

      VxWorks是一個(gè)具有微內(nèi)核、可裁剪的高性能強(qiáng)實(shí)時(shí)操作系統(tǒng),它以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛地應(yīng)用在工業(yè)控制、醫(yī)療器械、航空航天以及國防電子等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中[1]。相對(duì)于RS-232串口,RS-422串口具有抗干擾能力強(qiáng)、通訊速率高、通訊距離遠(yuǎn)等特點(diǎn),在嵌入式實(shí)時(shí)操作系統(tǒng)中使用串口通信,不僅可擴(kuò)展嵌入式設(shè)備通信能力,而且可擴(kuò)大其應(yīng)用范圍。

      2 VxWorks簡(jiǎn)介

      VxWorks是美國Wind River System公司推出的一個(gè)嵌入式實(shí)時(shí)操作系統(tǒng),主要特點(diǎn)有:

      a.微內(nèi)核Wind具有快速多任務(wù)切換、搶占式任務(wù)調(diào)度、中斷延遲小、任務(wù)間通信手段多樣化、網(wǎng)絡(luò)流量大等特點(diǎn)。b.VxWorks系統(tǒng)具有良好的可裁減能力,用戶可根據(jù)自己系統(tǒng)的功能目標(biāo)通過交叉開發(fā)環(huán)境方便地設(shè)置。c.支持應(yīng)用程序的動(dòng)態(tài)鏈接和下載,縮短了編輯和調(diào)試的周期。d.具有良好的兼容性,在不同運(yùn)行環(huán)境間可以方便的移植,減少了開發(fā)周期和經(jīng)費(fèi)。

      3 設(shè)計(jì)思想

      3.1 背景需求

      某多功能雷達(dá)為有效適應(yīng)復(fù)雜作戰(zhàn)任務(wù)和戰(zhàn)場(chǎng)環(huán)境,多個(gè)分系統(tǒng)之間均有數(shù)據(jù)量較大的實(shí)時(shí)通訊,并要求響應(yīng)時(shí)間快,處理迅速。系統(tǒng)硬件設(shè)計(jì)選用定制方式將計(jì)算機(jī)模塊和大規(guī)??删幊唐骷﨔PGA作在一塊印制板上,采用F81218多串口芯片擴(kuò)展了6個(gè)標(biāo)準(zhǔn)RS422串口,將2個(gè)計(jì)算機(jī)自帶的可設(shè)串口也設(shè)為標(biāo)準(zhǔn)RS422串口,系統(tǒng)硬件原理圖如圖1所示。軟件采用VxWorks 5.5開發(fā),能很好地解決以上問題。

      圖1 系統(tǒng)硬件原理圖

      3.2 BSP修改

      VxWorks 5.5附帶的BSP版本為1.2.3,該版本BSP已經(jīng)內(nèi)置串行通訊接口的驅(qū)動(dòng),但是默認(rèn)僅能驅(qū)動(dòng)大多數(shù)主板附帶的COM1和COM2兩個(gè)串口,為了滿足該項(xiàng)目應(yīng)用需求,需要修改BSP,以添加對(duì)COM3~COM8串行接口的驅(qū)動(dòng)支持,修改如下:

      a.在VxWorks內(nèi)核組件中加入hardware→periphe→serial中所有組件;

      b.在BSP文件夾pc.h文件里加入8個(gè)串口對(duì)應(yīng)地址:

      添加串口中斷號(hào)定義,其中COM3~COM8共享5號(hào)中斷:

      c.在 sysSerial.c文件的表 I8250-CHAN-PARAS devParas[]中加入對(duì)新添加串口設(shè)備的映射:

      添加中斷服務(wù)程序?qū)蚕碇袛嗟奶幚韀2]:

      若以上添加成功,在 VxWorks啟動(dòng)后可以用devs命令查詢到新添加的串行設(shè)備。

      3.3 軟件設(shè)計(jì)

      VxWorks對(duì)于串口的操作是通過I/O系統(tǒng)提供的 create、open、read、write、close、delete、ioctl等控制接口實(shí)現(xiàn),分別完成串口創(chuàng)建、串口打開、讀串口、寫串口、關(guān)閉串口、刪除串口,串口設(shè)置等操作[3]。串口基類完成對(duì)串口基本參數(shù)的設(shè)置及工作流程的構(gòu)建,各個(gè)子類與基類不同的處理過程通過純虛函數(shù)重載來添加。根據(jù)不同標(biāo)志(FLAG),轉(zhuǎn)入相應(yīng)的串口子類程序。系統(tǒng)軟件模塊圖如圖2所示。

      圖2 系統(tǒng)軟件模塊圖

      串口通信協(xié)議如下所示:

      4 程序示例

      4.1 基類串口初始化

      在基類中完成對(duì)所有串口基本工作參數(shù)如工作模式、設(shè)備控制字、輸入輸出緩沖區(qū)等的設(shè)置,程序舉例如下[4]:

      4.2 基類啟動(dòng)串口接收和處理數(shù)據(jù)線程

      在基類中定義串口收數(shù)任務(wù)(任務(wù)1)和串口數(shù)據(jù)處理任務(wù)(任務(wù)2)。串口收數(shù)任務(wù)實(shí)時(shí)監(jiān)測(cè)串口是否有數(shù)據(jù)到來,一旦監(jiān)測(cè)到有數(shù)據(jù)則全部讀取并交由數(shù)據(jù)封包函數(shù)按照通訊協(xié)議根據(jù)字頭、數(shù)據(jù)長度打包;數(shù)據(jù)封包函數(shù)一旦收滿一包數(shù)則釋放信號(hào)量通知串口數(shù)據(jù)處理任務(wù)。串口數(shù)據(jù)處理任務(wù)一旦獲取信號(hào)量則根據(jù)FLAG不同轉(zhuǎn)入相應(yīng)的串口子類數(shù)據(jù)解析函數(shù)根據(jù)數(shù)據(jù)類型的不同進(jìn)行相應(yīng)的處理,程序舉例如下:

      4.3 基類寫串口

      將傳進(jìn)來的數(shù)據(jù)寫入相應(yīng)的串口,程序舉例如下:

      4.4 A子類構(gòu)造及重載函數(shù)

      在串口子類構(gòu)造函數(shù)中定義FLAG的具體值;在子類重載函數(shù)Open()中調(diào)用基類串口初始化函數(shù)重新定義該串口特有的一些工作參數(shù);在子類重載函數(shù)parse(const BYTE* pBYTE,const int size)中對(duì)傳進(jìn)來封好包的數(shù)據(jù)進(jìn)行進(jìn)一步解析,根據(jù)數(shù)據(jù)類型的不同轉(zhuǎn)到相應(yīng)的處理函數(shù)進(jìn)行處理。Open()和 parse(const BYTE* pBYTE,const int size)在基類中設(shè)置為可重載的純虛函數(shù),程序舉例如下:

      5 結(jié)束語

      本文描述了在實(shí)時(shí)操作系統(tǒng)VxWorks中對(duì)多串口系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)通信的方法,并給出了示例程序,該方法適用于工業(yè)控制等多方面。VxWorks以其優(yōu)異的實(shí)時(shí)性和可靠性,增強(qiáng)了了串口通信能力,并且擴(kuò)大了其應(yīng)用范圍,能適應(yīng)數(shù)據(jù)量大,多任務(wù)、多響應(yīng)、實(shí)時(shí)性要求高的環(huán)境。

      [1]徐惠民.基于VxWorks的嵌入式系統(tǒng)及實(shí)驗(yàn)[M].北京:北京郵電大學(xué)出版社,2006.

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

      [3]張楊,于銀濤.VxWorks內(nèi)核、設(shè)備驅(qū)動(dòng)與BSP開發(fā)詳解[M].北京:人民郵電出版社,2009.

      [4]孟英謙,王玲.嵌入式VxWorks實(shí)時(shí)操作系統(tǒng)中串口通信的實(shí)現(xiàn)[J].軟件技術(shù),2003(1):52~54.

      猜你喜歡
      基類子類實(shí)時(shí)性
      基于C#面向?qū)ο蟪绦蛟O(shè)計(jì)的封裝、繼承和多態(tài)分析
      基于規(guī)則實(shí)時(shí)性的端云動(dòng)態(tài)分配方法研究
      卷入Hohlov算子的某解析雙單葉函數(shù)子類的系數(shù)估計(jì)
      關(guān)于對(duì)稱共軛點(diǎn)的倒星象函數(shù)某些子類的系數(shù)估計(jì)
      基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實(shí)時(shí)性仿真
      航空電子AFDX與AVB傳輸實(shí)時(shí)性抗干擾對(duì)比
      空戰(zhàn)游戲設(shè)計(jì)實(shí)例
      一種基于用戶興趣的STC改進(jìn)算法
      虛機(jī)制在《面向?qū)ο蟪绦蛟O(shè)計(jì)C++》中的教學(xué)方法研究
      一種車載Profibus總線系統(tǒng)的實(shí)時(shí)性分析
      双牌县| 忻城县| 新龙县| 肃宁县| 文安县| 长葛市| 子长县| 南昌县| 宁波市| 沅江市| 石泉县| 综艺| 阿勒泰市| 什邡市| 吉隆县| 西贡区| 南投县| 临汾市| 苏尼特左旗| 鲁山县| 衡阳县| 安化县| 中阳县| 东光县| 通道| 三穗县| 仁怀市| 蓬溪县| 安泽县| 资中县| 香港 | 云龙县| 乌拉特中旗| 翁牛特旗| 汾阳市| 磐安县| 高阳县| 剑河县| 湟中县| 丰城市| 石阡县|