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

VxWorks 中低速串行設備驅動的層次化設計方法

2013-08-16 01:07:50曾勇
網絡安全與數據管理 2013年3期
關鍵詞:功能設備系統

曾勇

(中國西南電子技術研究所,四川 成都 610036)

隨著通信技術的發展,低速串行設備動態擴展和多低速串行設備全雙工通信技術在嵌入式領域的應用越來越廣泛。利用現場可編程門陣列FPGA(Field Programmable Gates Army)完全可以將若干接口電路的功能集成到一片FPGA中,這不僅具有集成度高、體積小和功耗低等優點,而且還具有用戶可編程能力,同時還可實現整個系統的功能重構以及項目過程中一些特殊低速串行設備傳輸方式,這是專用低速串行設備實現芯片所不具備的功能。

嵌入式系統一般采用PowerPC+FPGA的架構方式,FPGA主要完成底層接口協議處理,PowerPC的任務主要實現控制功能。FPGA與PowerPC通過內部總線(Local Bus)方式連接,FPGA實現基于總線的時序操作;采用內存映射方式,FPGA實現的多個低速串行設備的設置、操作寄存器以及FIFO的入口出口映射為PowerPC可尋址的一段內存空間,根據系統設計方法采用中斷復用方式或者使用多個Po werPC中斷號。

在驅動程序傳統開發過程中,FPGA實現的多個低速串行設備驅動程序的設計不受驅動體系約束,只是簡單地根據上層應用的需求提供接口,導致應用程序代碼可移植性、可讀性差,開發流程并行度不高,層次性不明確。實際調試過程中則需要應用程序人員、驅動開發人員同時對各自的程序進行修改、重新編譯。

本文在原有工程基礎上對FPGA驅動程序進行了更改、封裝,實現了基于FPGA的多個低速串行設備在VxWorks系統的標準I/O設備驅動,并在此基礎上提出了一種低速串行設備驅動層次化設計方法。

1 低速串行設備驅動程序設計

在VxWorks中,串行設備是一種特殊字符設備。與字符設備不同的是,串行設備的驅動程序并不是直接掛在I/O系統中,而是通過虛擬設備ttyDrv來使用[1]。ttyDrv與I/O系統以及真實驅動程序之間的關系如圖1所示。

圖1 ttyDrv與I/O系統以及真實驅動程序關系

ttyDrv和 tyLib實現了以下的功能[2]:(1)I/O 系統請求 (在驅動表中增加入口函數,創建設備描述符等);(2)管 理 I/O系 統 的 入 口 函 數 , 如 tyOpen,ttyIoctl,tyRead,tyWrite等;(3)管理 selectLib 的調用;(4)管理數據緩沖區以及緩沖區上的線程同步互斥;(5)ttyDrv處理 open 和 ioctl操 作 (ttyOpen and ttyIoctl);(6)tyLib 處理 read和write操作(tyRead and tyWrite)。

真實的低速串行設備驅動函數 (xxDrv)通過ttyDrv安裝的回調函數在I/O系統和設備之間移動數據;tyLib提供了 2個回調函數(tyITx和 tyIRd)。

1.1 標準驅動程序的構造

SIO_DRV_FUNCS結構體是串行設備驅動程序的一個重要的組成部分,它是驅動函數的入口,在串行設備的驅動程序中必須要有一個包含指向SIO_DRV_FUNCS指針的結構 (xx_CHAN),xx_CHAN包含了 xxDrv中所需要的設備特定信息,以及提供給高層函數的底層操作函數;由于系統不知道驅動函數中所使用的數據結構,VxWorks提供了一個數據結構SIO_CHAN來進行數據類型轉換[3]。SIO_CHAN結構僅定義了一個指向SIO_DRV_FUNCS結構體的指針。

FPGA實現的多個低速串行設備驅動程序的結構構造實例如下:

1.2 驅動函數和回調函數的掛接

ttyDrv通過SIO_DRV_FUNCS提供的入口對 xxDrv的服務進行訪問,xxDrv通過回調函數來訪問ttyDrv提供的服務[4]。xxDrv驅動函數在 SIO_DRV_FUNCS中的掛接實例如下:

1.3 驅動程序標準操作函數的實現

1.3.1 標準寫函數

標準的I/O系統寫函數write()調用tyWrite()函數——ttyDrv加載在驅動表中的寫入口函數,tyWrite()函數將數據放入環形緩沖隊列中并調用驅動函數fpgaTxStartup()發起一次傳輸過程。write函數的調用關系如圖2所示。

圖2 write函數的調用關系

1.3.2 標準讀函數

通過中斷方式從FPGA生成的FIFO出口地址讀取數據,通過綁定的回調函數將數據傳送到接收環形緩沖隊列中,并調用ttyDrv加載在驅動表中的讀入口函數tyRead()驅動函數,通知阻塞的I/O系統寫函數 read()函數完成一次傳輸過程。read函數的調用關系如圖3所示。

圖3 read函數的調用關系

1.3.3 I/O操作函數

標準的 I/O系統寫函數 ioctl()調用 ttyIoctl()函數,ttyIoctl()函數調用 FPGAIoctl()進行操作,根據系統的實際需要實現部分設置項。I/O操作函數的調用關系如圖4所示。

圖4 I/O操作函數調用關系

2 低速串行設備的加載

(1)根據實際需求修改config.h中NUM_TTYS宏;

(2)參照 sysSerialHwInit()函數實現 FpgaSerialHwInit(),對NUM_TTYS個低速串行設備結構體FPGA_CHAN進行初始化以及驅動函數和回調函數的掛接;

(3)參 照 sysSerialHwInit2 ()函 數 實 現FpgaSerialHwInit2(),掛接中斷處理函數 fpgaRcvInt();

(4)調用 ttyDevCreate()函數創建 tty設備,添加設備驅動表,生成環形數據緩沖區,安裝回調函數tyITx()和tyIRd()。

3 低速串行設備驅動層次化設計方法

在不同的系統設計中,PowerPC和FPGA硬件連接方式不盡相同,如不同的片選信號、總線上數據線高低位的不同接法,中斷管腳接法的不同,導致FPGA實現的寄存器映射地址及使用的中斷號存在差異;針對不同的應用程序和應用場所,外部接口對應的設備也會發生相應的變化。以上這些都會破壞程序的獨立性、設備無關性。需要對驅動程序、應用程序進行重新編譯、燒寫,不利于版本的管理以及外場設備的維護。這是在設備驅動設計中需要考慮的一個問題。

由此本文提出了一種層次化的低速串行設備驅動設計方法。將驅動程序的實現分為三層,硬件分離層、設備加載層和功能描述層,各自實現的功能如下:

(1)硬件分離層:通過XML文件實現低速串行驅動程序結構初始化和硬件設備實現差異的分離;

(2)設備加載層:實現低速串行設備在 VxWorks系統的標準I/O設備驅動的加載;

(3)功能描述層:通過XML文件實現應用程序和低速串行設備之間的映射關系以及串行設備功能的描述。

低速串行設備驅動層次化設計方法流程如圖5所示。

圖5 低速串行設備驅動層次化設計方法流程

3.1 層次化設計驅動程序的實現

嵌入式操作系統中,通常都使用Flash作為主存介質。在Flash上建立TFFS文件系統,建立文件系統后,類似于在Windows操作系統下對硬盤操作一樣,進行數據的拷貝、刪除以及文件的建立等操作。XML作為配置文件的主要優點是改變參數配置時不需要改變和重新編譯應用程序,只需在XML文件中更改就可以了。TinyXML是一個簡單小巧、且很容易集成到其他程序中的C++XML解析器。即TinyXML解析一個XML文檔并由此生成一個可讀、可修改、可保存的文檔對象模型(DOM)。本文的實現過程中使用TinyXML對XML文檔進行解析。

低速串行設備驅動層次化設計方法建立在文件系統之上,VxWorks可以動態地加載用戶程序,并在系統中加入對XML文件進行解析和存儲的功能。

硬件分離層:FpgaSerialHwInit()通過讀取設備對應的BSP_Config.xml文件,對多個低速串行設備結構體FPGA_CHAN中的各個寄存器地址進行初始化以及驅動函數和回調函數的掛接。

設備加載層:實現標準I/O設備驅動的加載。

功能描述層:應用程序通過讀取USER_Config.xml文件,獲取設備的對外連接狀態及設備提供的功能,對多個低速串行設備read、write以及ioctl等操作。

通常設備驅動人員只需要進行對BSP_Config.xml和USER_Config.xml兩個配置文件進行修改、更新。

3.2 XML配置文件的設計及實現

BSP_Config.xml文件格式示例如下:的層次化設計方法,通過驅動程序功能分層設計方式,屏蔽各層的實現細節,克服了嵌入式系統開發過程中,由于設備驅動程序的設計不受驅動體系約束帶來的程序代碼的可移植性、可讀性差,開發流程并行度不高,層次性不明確等不足之處;在實際的工程實現中節約了開發時間,極大地提高了效率。

[1]Vxworks kernel programmers guide[Z].Wind River Systems Inc,2006.

[2]Vxworks device driver developers guide[Z].Wind River Systems Inc,2006.

[3]內核示例源代碼[Z].Wind River Systems Inc,2006.

[4]陳智育,等.VxWorks程序開發實踐[M].北京:人民郵電出版社,2004.

猜你喜歡
功能設備系統
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
關于非首都功能疏解的幾點思考
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
原來他們都是可穿戴設備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 国产精品制服| 韩日免费小视频| 一本大道无码高清| 成人欧美日韩| 国产永久在线视频| 精品综合久久久久久97| 热久久这里是精品6免费观看| 日韩美毛片| 性喷潮久久久久久久久| 精品久久久久成人码免费动漫| 青草国产在线视频| 日韩高清成人| 亚洲色图欧美激情| 久久久久久午夜精品| 99ri精品视频在线观看播放| 老司机精品久久| 亚洲香蕉伊综合在人在线| 中文字幕一区二区视频| 五月天婷婷网亚洲综合在线| 国产一区自拍视频| 国产毛片高清一级国语| 日韩无码白| 一级香蕉视频在线观看| 亚洲国产成熟视频在线多多 | 国产91视频免费观看| 91在线日韩在线播放| 精品福利视频导航| 午夜精品久久久久久久无码软件| h视频在线播放| 成人a免费α片在线视频网站| AV不卡在线永久免费观看| 一区二区三区国产| 色偷偷综合网| 亚洲av日韩综合一区尤物| 国产在线精品人成导航| 美女无遮挡免费视频网站| 中文字幕在线看| 色综合中文字幕| 久久久久无码国产精品不卡| 亚洲人成网7777777国产| 国产无码制服丝袜| 久久这里只精品热免费99| 青青极品在线| 亚洲国产精品VA在线看黑人| 国模沟沟一区二区三区| 成人在线不卡| 国产91线观看| 亚洲大尺度在线| 亚洲男人在线| 又污又黄又无遮挡网站| 免费毛片全部不收费的| 天天色综网| 婷婷开心中文字幕| 国产精品永久久久久| 日韩天堂网| 精品久久久无码专区中文字幕| 国产一级精品毛片基地| 成年人国产视频| 久久公开视频| 丁香综合在线| 精品视频在线一区| 免费女人18毛片a级毛片视频| 国产精品对白刺激| 欧美三级自拍| 热99re99首页精品亚洲五月天| 国产超薄肉色丝袜网站| 日韩久草视频| 国产精品无码一二三视频| 久久精品一品道久久精品| 亚洲性视频网站| 99精品热视频这里只有精品7| 亚洲视频黄| 日本午夜影院| 久久久精品无码一二三区| 国产va免费精品观看| 国产女同自拍视频| 日韩福利在线视频| 国产成人精品免费av| 国产情精品嫩草影院88av| 精品無碼一區在線觀看 | 在线观看热码亚洲av每日更新| 国产精品黄色片|