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

基于VxWorks的環形緩沖機制的驅動設計

2018-01-08 22:08:08唐小貝杜小雪隋江波
電子設計工程 2017年16期
關鍵詞:設計

唐小貝,杜小雪,隋江波

(1.海軍軍訓器材研究所 北京 102308;2.北海艦隊裝備部 山東 青島 266011;3.海軍航空工程學院 指揮系,山東 煙臺 264001)

基于VxWorks的環形緩沖機制的驅動設計

唐小貝1,杜小雪2,隋江波3

(1.海軍軍訓器材研究所 北京 102308;2.北海艦隊裝備部 山東 青島 266011;3.海軍航空工程學院 指揮系,山東 煙臺 264001)

針對軍用PDA硬件自定義設備在VxWorks嵌入式操作系統中的標準化驅動程序開發需求,分析了VxWorks嵌入式操作系統的驅動程序功能設計,以多串口通信驅動為例,結合看門狗定時器和中斷處理機制,采用VxWorks系統自身提供的環形緩沖區管理接口庫函數,設計了一種更為可靠高效、性能穩定的字符設備底層驅動程序,減少了通信的丟包率,提高了效率。對所有基于環形緩沖機制下的VxWorks字符設備驅動程序開發者具有參考價值。

軍用PDA;VxWorks;環形緩沖區;驅動

VxWorks作為一種強實時性的操作系統RTOS,廣泛應用于諸如單兵手持終端、軍用PDA等用戶定制的計算機上。這類嵌入式計算機,按照用途的不同,定制硬件時所采用的CPU類型和相關外設都有所區別。VxWorks系統能夠支持ARM、PowerPC、X86等大多數類型的CPU,但不同的硬件外設要求VxWorks系統必須提供相應的驅動程序[1]。因此,開發外設的驅動是在不同硬件平臺上移植VxWorks操作系統的關鍵[2]。文中以開發串口驅動為例,VxWorks系統環形緩沖機制在驅動設計中發揮了重要作用。

1 VxWorks系統環形緩沖機制和驅動程序

VxWorks系統環形緩沖機制可以更便捷地實現上層應用和底層硬件之間的讀寫操作,當上層應用的訪問操作速度和底層硬件操作寄存器的速度存在較大的差異時,可以起到良好的緩沖作用,大大減少丟包率[3]。

圖1 環形緩沖區讀寫操作

1.1 環形緩沖機制

VxWorks中的環形緩沖[4,5]是基于先進先出(FIFO)的原則,并且提供了環形緩沖的數據結構,用戶對緩沖的使用只需要操作對應的數據結構即可,讀寫操作如圖1所示。對于環形緩沖,讀寫指針各自獨立,讀寫操作不需要系統內核提供任務同步或互斥的操作,所以讀任務和寫任務可以同時訪問環形緩沖,而無須互斥信號量的介入。但是,在運行多任務的系統中,如果存在多個讀任務和多個寫任務同時操作環形緩沖,則需要應用互斥操作機制。

1.2 驅動程序

對于用戶開發的嵌入式計算機,硬件外設通常是根據特定的需求定制的,所以一般采用非標準的驅動開發。驅動程序介于底層硬件和上層應用之間,用于屏蔽不同硬件平臺的差異,方便上層操作系統和應用程序的移植。在VxWorks操縱系統中,外部設備驅動程序通常被分成3大類型:字符設備驅動程序、塊設備驅動程序和網絡設備驅動程序[6]。下面所論及的驅動主要是基于字符設備進行的。

驅動程序一般包括3個部分:對硬件的相關配置和初始化操作、硬件的功能性實現以及與上層應用的接口函數[7],其功能說明如下。

1)初始化操作主要包括驅動程序用到的數據結構的初始化,硬件初始化中相關寄存器的配置,以及硬件啟動前中斷服務程序的掛接。通常在中斷服務程序的掛接之前,要禁止其相關的中斷,掛接完成之后,再開啟該中斷。這樣可以避免硬件中斷到來而中斷服務程序尚未掛接好時,所引起的意外狀況。

2)啟動系統運行后臺的定時查詢機制,或者利用中斷機制設計相應的中斷處理程序實現對硬件中斷的響應,實現硬件功能。

3)提供給上層應用程序與硬件交互的接口,一般包括設備的打開,關閉,相關參數的配置,數據的發送,數據的接收等。

2 驅動程序設計實現原理

文中涉及的硬件環境,CPU采用的是TSC695,它是高可靠性、高性能具有容錯抗輻射功能的32位SPARC RISC結構的處理器,存儲器包括RAM、PROM以及FLASH,串行通信是利用FPGA器件自定義設計的六路串口,這里以串口通信為例,利用環形緩沖機制,介紹驅動程序的設計。

2.1 自定義串口驅動程序設計

該六路串口為自定義的串口,所以采用非標準的驅動程序架構實現。驅動程序按照上節中提到的3個部分來實行,即對硬件的相關配置和初始化操作、硬件的功能性實現、與上層應用的接口函數[8]。該驅動實現的結構框圖如圖2所示。

圖2 驅動程序實現框圖

首先建立串口的數據結構,包括基地址定義,發送緩沖區句柄,接收緩沖區句柄,波特率設置,打開標志。初始化串口的數據結構,對于每一個串口都需要建立對應的發送緩沖區和接收緩沖區。采用這種方式可以同時驅動多個串口,本設計中用到了6路串口,這樣只需在程序中添加6個串口的設備序號,然后根據串口設備號,調用串口的數據結構指針即可。

如圖2所示,發送緩沖區和接收緩沖區是用戶應用函數接口和底層硬件操作的橋梁。對發送操作而言,當用戶調用發送函數發送數據時,實際上只需把數據寫入發送緩沖區即可,后臺的定時查詢程序會定時的把數據讀出,或者響應硬件發送中斷將數據讀出,然后把從發送緩沖區讀出的數據寫到串口的發送數據寄存器。對于接收操作而言,用戶調用接收函數接收數據時,實際上只是從接收緩沖區中讀取有效數據,后臺的定時查詢程序會定時的讀取串口的接收數據寄存器,或者響應串口的接收中斷讀取串口接收數據寄存器,然后將從硬件上接收到的數據寫入到接收緩沖區中,如果接收緩沖區沒有接收到數據,則用戶的接收函數返回結果零,反之,返回接收到的數據個數,并將數據寫入用戶指定的數組中。若用中斷機制,需要調用函數intConnet掛接指定的程序來代替中斷服務程序。

提供給上層應用的接口函數,仿照標準驅動程序函數的實現[9-10],具體接口函數如表1所示。

表1 應用層接口函數

2.2 機制應用

串口的處理過程可以分為兩種,定時查詢和中斷處理[11,13]。

1)定時查詢,好處是在傳輸大容量數據時,可以避免因CPU頻繁地響應串口的字節中斷而造成CPU資源緊張。本文的自定義六路串口,采用FPAG設計,串口FIFO的大小是128字節,提供了FIFO的滿中斷,半滿中斷,非空中斷,空中斷等標志,驅動程序可以通過定時的檢測FIFO的標志位,根據FIFO當前的狀態接收或者發送,而且是一次性的將FIFO中的數據發送或者接收,這樣提高了串口的收發效率。

定時查詢機制利用的是VxWorks操作系統提供的看門狗定時器,該定時器的管理函數庫為wdLib。wdLib庫提供了通用的看門狗定時器模塊,任何任務都可以創建看門狗定時器,并在指定延遲之后,在系統時鐘ISR的上下文運行一個指定的程序。調用wdCreate()創建一個看門狗定時器,然后調用wdStart()啟用,當延遲時間到達時,系統執行wdStart()函數指定的超時程序。由于看門狗定時器僅執行一次,但對設計的定時查詢程序來說,需要周期性的執行定時器,所以在超時程序中必須自身調用wdStart()函數來重新啟動定時器。

需要注意的問題是,VxWorks系統在中斷級調用超時程序,而不是在任務的上下文中。因此超時程序的設計規則與中斷服務程序是類似的,即程序中不能獲取信號量,不可以調用printf()等。

2)中斷處理,優點是可以及時響應硬件中斷,在傳輸數據量不大的情況下,是更優的選擇。中斷服務程序完成對硬件的響應,確認中斷源,清除中斷。通常中斷服務程序自身不處理過多的事情,而是利用系統提供的通信機制啟動相應的任務完成后續的處理。當串口接收數據時,產生接收中斷,系統中斷機制調用中斷處理程序判斷中斷是接收中斷,讀數據寄存器,將數據放入接收緩沖區;當發送數據時,先將第一個字節寫入數據寄存器,用以啟動發送空中斷,將其他待發送數據放入接收緩沖區,中斷發生時,中斷服務程序判斷發送緩沖非空,將數據送到數據寄存器,同時清中斷。

為方便系統調用,在運行過程中,可以根據需要改變串口的工作方式,比如設置新的波特率、新的方式字等,要求設計UartIoctl()函數。需要注意的是,如果使用中斷方式,當設置波特率時,需要在禁止系統中斷的條件下完成,即設置波特率前,調用intLock函數禁止中斷,設置完成后調用intUnlock函數恢復系統中斷設置。

3 在vxWorks系統中的具體實施

3.1 環形緩沖區數據結構設計

VxWorks提供的環形緩沖區數據結構相關定義在rngLib.h中,定義如下:

為了在多線程中能夠很好使用,不發生讀寫沖突,增加了讀寫鎖。設計的增強環形緩沖區結構定義如下:

3.2 串口設備數據結構設計

串口設備的設備描述結構定義如下:

3.3 數據緩沖區讀寫操作

對于VxWorks環形緩沖區的讀寫操作,在引入了讀寫數據鎖后,讀寫指針的值就不會出現錯誤值,保證了多任務下數據進出緩沖區的正確率。其基本代碼如下:

當操作底層硬件與接收緩沖區的數據傳輸時,根據FIFO的標志,調用readbuf()函數時設置Maxbytes分別為128、64或1;當操作底層硬件與發送緩沖區的數據傳輸時,根據FIFO的標志,調用writebuf()函數時設置 Maxbytes分別為1、64或128;而應用層接口函數 UartWrite()和 UartRead()調用 readbuf()和 writebuf()時,Maxbytes=len。

驅動程序開發完成后,將驅動程序庫和VxWorks操作系統編譯融合在一起,VxWorks啟動后,調用驅動程序中的硬件初始化函數,掛接中斷服務程序,在查詢方式的情況下,啟用后臺的定時查詢函數[14-16]。這樣用戶開發上層應用程序的軟硬件平臺就搭建好了。對于其他字符設備驅動程序的開發應用[17],與此類似。

4 結束語

文中以串口通信為例,重點討論了在VxWorks操作系統下,利用VxWorks環形緩沖機制進行TSC695處理器的自定義驅動程序的開發,在一定程度上提高了CPU的利用率和通信效率,減少了丟包率,對系統的可靠性和穩定性[18]有一定的改進。

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

[2]張原,鄒程帥,張帥,等.基于VxWorks的PCI總線多功能數據采集卡驅動開發[J].電子設計工程,2012(12):45-47.

[3]姚章俊,陳蜀宇,盧堯.一種高性能環形緩沖區的研究和實現[J].計算機工程,2012,38(8):228-231.

[4]徐勤朋,劉蔭忠.基于緩沖區的兩級插補器的研究與設計[J].組合機床與自動化加工技術,2014(3):9-12.

[5]蔡偉,周乃恩.基于環形緩存技術的無人機數據接口設備設計[J].微型機與應用,2013,32(2):7-8.

[6]基于嵌入式操作系統VxWorks的I2C總線驅動設計[J].單片機與嵌入式系統應用,2015(8):34-37.

[7]強新建,田澤,淮治華.VxWorks下驅動程序設計[J].西安石油大學學報:自然科學版,2010,25(3):11,94-96,104.

[8]李偉,李杰濤,韋金生.VxWorks下多串口卡驅動程序設計初探[J].硅谷,2013(13):48,194.

[9]莫進軍.實時操作系統VxWorks下實現串口通信的方法[J].信息與電腦,2011(4):169,171.

[10]官琴,王璐.基于VxWorks嵌入式系統的多串口驅動程序開發[J].兵工自動化,2011,30(6):94-96.

[11]陳楸,程鵬飛,吳成富,等.基于VxWorks定時中斷的自適應串口驅動設計[J].測控技術,2012,31(7):103-105.

[12]凌約雷,邱愛華,席隆,等.國產高可靠控制器BM3803MG的BSP設計[J].電子技術應用,2012(1):24-27.

[13]高常波.Vxworks下多串口擴展卡驅動實現[J].通信技術,2010(4):47-49.

[14]Wind River System,Inc VxWorks 6.1 Programmer’s Guide[M].2012.

[15]Wind River System,IncBSP Developer’sKit User’s Guide[M].2012.

[16]曹桂平.VxWorks設備驅動開發詳解[M].電子工業出版社,2011.

[17]張煜,陳欣,宋力兵,等.基于MPC8280的CPU單元與內部總線驅動程序設計[J].電子設計工程,2014,22(19):43-46.

[18]白少卿,孫亮.膜片閥破裂壓力穩定性研究[J].火箭推進,2015(6):46.

Driver design based on ring buffer in VxWorks

TANG Xiao-bei1,DU Xiao-xue2,SUI Jiang-bo3
(1.Naval Research Institute of Drill Equipment,Beijing 102308,china;2.Weapon Department,North Sea Fleet,qingdao 266011,china;3.Department 5,Naval Aeronautical and Astronautical University,Yantai 264001,china)

For development requirements of standard driving of the military PDA custom hardware in VxWorks embedded operation system,Analyzed the driver function design of VxWorks embedded operating system,with multiple serial ports driver as an example,combined with the watchdog timer and interrupt handling mechanism,used thering managementinterface function VxWorks System itself provides,designed a more efficient and reliable,stable performance of the driver of character device,reduced the rateof loss of communication and improved the efficiency.All reference value based on VxWorks character device driver developers to thering.

military PDA; VxWorks; ring buffer; driver

TN954

A

1674-6236(2017)16-0037-05

2016-05-18稿件編號:201605178

唐小貝(1975—),男,湖南洞口人,碩士,工程師。研究方向:作戰仿真、軟件建模、系統工程。

猜你喜歡
設計
二十四節氣在平面廣告設計中的應用
河北畫報(2020年8期)2020-10-27 02:54:06
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
基于PWM的伺服控制系統設計
電子制作(2019年19期)2019-11-23 08:41:36
基于89C52的32只三色LED搖搖棒設計
電子制作(2019年15期)2019-08-27 01:11:50
基于ICL8038的波形發生器仿真設計
電子制作(2019年7期)2019-04-25 13:18:16
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
從平面設計到“設計健康”
商周刊(2017年26期)2017-04-25 08:13:04
主站蜘蛛池模板: 国产精品极品美女自在线网站| 又黄又湿又爽的视频| 日韩高清在线观看不卡一区二区| 91精品国产91欠久久久久| 国产一级小视频| 91福利国产成人精品导航| 91视频区| 久久久精品国产SM调教网站| 国产成人精品在线1区| 东京热高清无码精品| 97综合久久| 日本不卡视频在线| 国产91透明丝袜美腿在线| 亚洲精品少妇熟女| 国产乱人乱偷精品视频a人人澡| 日韩高清无码免费| 热这里只有精品国产热门精品| 国产精品永久免费嫩草研究院| 熟女成人国产精品视频| 亚洲制服中文字幕一区二区 | 亚洲啪啪网| 国产成人亚洲精品色欲AV| 国产午夜无码专区喷水| 精品国产网| 国产精品久久精品| 色亚洲成人| 亚洲一级毛片在线观| 在线观看91香蕉国产免费| 欧美色视频在线| 欧美在线中文字幕| 午夜激情福利视频| 亚洲中文字幕久久精品无码一区| 久久精品嫩草研究院| 国产三级精品三级在线观看| 国产无码精品在线播放| 亚洲天堂精品视频| 欧美激情视频一区| 国产精品久久久久鬼色| 国产91小视频在线观看| 国产视频一区二区在线观看| 日本免费高清一区| 国产精品欧美在线观看| 欧美自慰一级看片免费| 国产精品无码久久久久AV| 99热亚洲精品6码| 高清久久精品亚洲日韩Av| 亚洲天堂网在线观看视频| 亚洲男人的天堂在线观看| 免费看黄片一区二区三区| 久久国产精品影院| 国内精品久久久久鸭| 国产最新无码专区在线| 国产门事件在线| 少妇极品熟妇人妻专区视频| 日本精品视频一区二区| 久久综合九九亚洲一区| 亚洲日韩精品伊甸| 亚洲最新在线| 人人艹人人爽| 在线观看视频一区二区| 日韩亚洲综合在线| 免费欧美一级| 国产成人av一区二区三区| 国产在线视频欧美亚综合| 欧美亚洲综合免费精品高清在线观看 | 中文字幕在线视频免费| 久久综合激情网| 91免费在线看| 欧美a在线看| 欧美亚洲激情| 国产尤物在线播放| 亚洲另类国产欧美一区二区| 精品亚洲国产成人AV| 超碰91免费人妻| 老司机精品久久| 2020最新国产精品视频| 久久精品无码中文字幕| 亚洲综合国产一区二区三区| 91精品国产91久久久久久三级| 亚洲中文无码av永久伊人| 成人午夜视频在线| 久久综合五月|