www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件

引言

VxWoAs是美國Wind River System(WRS)公司開發(fā)的嵌入式實時操作系統(tǒng)。VxWorks中的I/O子系統(tǒng)為應(yīng)用程序提供了簡單、統(tǒng)一、與設(shè)備無關(guān)的訪問接口。I/O系統(tǒng)內(nèi)部采用設(shè)備列表、驅(qū)動程序列表和文件描述符表來實現(xiàn)對不同設(shè)備的管理與訪問,從而為開發(fā)通用外部設(shè)備驅(qū)動程序提供了便利。然而在一些專用系統(tǒng)上,為了縮短設(shè)備的響應(yīng)時間,提高設(shè)備的讀取速度,有必要將設(shè)備與I/O系統(tǒng)獨(dú)立起來。由于VxWorks屬于微內(nèi)核,所有的程序均運(yùn)行在同一線性地址空間,這也為設(shè)備與I/O系統(tǒng)的獨(dú)立提供了條件?;赩xWorks的I/O子系統(tǒng)設(shè)備管理的思想,本文提出了一種在VxWorks下對多個同類USB設(shè)備進(jìn)行管理的設(shè)計方案。該方案可使得對設(shè)備的訪問獨(dú)立于I/O子系統(tǒng)。

1 VxW0rks的I/O子系統(tǒng)設(shè)備管理

VxWorks I/O系統(tǒng)內(nèi)部對設(shè)備的管理主要通過三張表來實現(xiàn),即驅(qū)動程序列表、設(shè)備列表和文件描述符表。其中驅(qū)動程序列表用來管理已注冊的設(shè)備驅(qū)動程序,它的大小是固定的,有NUM DRIVERS項,每一項對應(yīng)驅(qū)動程序的入口點(diǎn),當(dāng)應(yīng)用程序調(diào)用標(biāo)準(zhǔn)I/O接口函數(shù)時,I/O子系統(tǒng)便可通過驅(qū)動程序列表檢索到設(shè)備的驅(qū)動程序,從而實現(xiàn)對指定設(shè)備的訪問、發(fā)送、接收等操作。系統(tǒng)可利用iosDrvInstall()注冊設(shè)備驅(qū)動程序,并將設(shè)備的人口函數(shù)加入到驅(qū)動程序列表。同時返回一個drvnum驅(qū)動程序號,并將其作為設(shè)備描述符的一部分,從而以此把設(shè)備與其驅(qū)動程序聯(lián)系起來。I/O子系統(tǒng)采用鏈表對所有設(shè)備進(jìn)行管理,該鏈表稱之為設(shè)備列表。調(diào)用iosDevAdd ()可向系統(tǒng)添加設(shè)備,添加設(shè)備時,應(yīng)指明設(shè)備名稱及驅(qū)動程序索引號,該索引號就是iosDrvInstall ()返回的索引號。在VxWorks中,一個設(shè)備可以被多次打開,但對于每一次打開,系統(tǒng)將利用一個文件描述符來區(qū)分,本系統(tǒng)將會維持一張文件描述符表,該表的每一項記錄了與設(shè)備對應(yīng)的驅(qū)動程序號和設(shè)備ID,這樣,就會文件描述符與驅(qū)動程序、以及設(shè)備之間建立一種聯(lián)系。這樣,在利用標(biāo)準(zhǔn)I/O函數(shù)進(jìn)行讀寫時,就可以根據(jù)文件描述符從文件描述符表中找到對應(yīng)的驅(qū)動程序的人口與設(shè)備ID。VxWorks中的這三張表的關(guān)系如圖1所示。


2 USB設(shè)備管理方案設(shè)計

設(shè)計獨(dú)立于I/O系統(tǒng)的USB設(shè)備驅(qū)動程序的設(shè)計思想主要基于兩點(diǎn),第一是用戶自己管理設(shè)備。第二是通過驅(qū)動程序直接向應(yīng)用程序提供可用于讀寫設(shè)備的接口函數(shù)。由于設(shè)備獨(dú)立于I/O系統(tǒng),用戶需要自己設(shè)計一種設(shè)備管理方法,以便對多個接入的USB設(shè)備進(jìn)行合理的管理。然而由于不存在設(shè)備驅(qū)動程序列表,故在設(shè)計時還需要有一種方法來解決設(shè)備的訪問問題。

2.1 USB設(shè)備描述符

設(shè)備描述符實際上是一個數(shù)據(jù)結(jié)構(gòu),可在系統(tǒng)中作為一個邏輯結(jié)構(gòu)體。它是一個具體設(shè)備的抽象??膳c一個物理設(shè)備相對應(yīng),是參與設(shè)備管理、訪問的主要結(jié)構(gòu)體。鑒于I/O子系統(tǒng)對設(shè)備的管理,在對多個USB設(shè)備進(jìn)行管理時,對于設(shè)備的存儲,可采用雙向鏈表來進(jìn)行管理,稱之為設(shè)備列表。鏈表對USB設(shè)備的管理主要通過設(shè)備頭(USB_BEV_HDR)來實現(xiàn)。USB設(shè)備頭是一個與具體設(shè)備無關(guān)的數(shù)據(jù)結(jié)構(gòu),它由一個鏈表節(jié)點(diǎn)和設(shè)備名稱組成。節(jié)點(diǎn)中包含指向有前一個和下一個USB設(shè)備的設(shè)備頭的鏈表節(jié)點(diǎn)。實際上,每一個USB設(shè)備都會有更多的數(shù)據(jù)存儲在更大的數(shù)據(jù)結(jié)構(gòu)中。這個結(jié)構(gòu)就是設(shè)備描述符,而USB設(shè)備頭只是做為USB設(shè)備描述符的起始部分。設(shè)備頭的數(shù)據(jù)結(jié)構(gòu)(USB_DEV_HDR)如下:


其中,USB_DL_NODE是一個鏈表節(jié)點(diǎn),它由兩個鏈表節(jié)點(diǎn)指針域組成。分別指向前一個和下一個設(shè)備的鏈表節(jié)點(diǎn)。其數(shù)據(jù)結(jié)構(gòu)如下:


這樣,就可以把USB設(shè)備的描述符劃分為兩部分,其中一部分與具體設(shè)備無關(guān),稱為設(shè)備頭:另外一部分是與具體設(shè)備相關(guān)的設(shè)備特殊數(shù)據(jù),設(shè)備相關(guān)部分包括USB設(shè)備的Node ID、USB管道句柄、端點(diǎn)地址、狀態(tài)等信息。其結(jié)構(gòu)如圖2所示。設(shè)備無關(guān)部分主要用于設(shè)備管理,而設(shè)備相關(guān)部分則用于對設(shè)備的訪問。


2.2設(shè)備列表設(shè)計

為了方便對設(shè)備的管理,USB設(shè)備列表可采用雙向鏈表結(jié)構(gòu),其作用是將所有USB設(shè)備的有關(guān)信息組織起來,從而實現(xiàn)對多個設(shè)備的鏈?zhǔn)焦芾?。前面提到的設(shè)備描述符就是一個存儲了設(shè)備信息的數(shù)據(jù)結(jié)構(gòu)。而所有USB設(shè)備描述符都是以設(shè)備頭數(shù)據(jù)結(jié)構(gòu)開始的,這樣,就可以很方便地將設(shè)備描述符組成一個鏈表形式的設(shè)備列表。通常鏈表的數(shù)據(jù)結(jié)構(gòu)如下:


圖3所示是一個空設(shè)備列表,而非空設(shè)備列表則如圖4所示。


對于同類USB設(shè)備,通常程序只維護(hù)一張設(shè)備列表,在注冊該USB設(shè)備驅(qū)動程序時,初始化設(shè)備列表為空,驅(qū)動程序只能被真正的注冊一次,因此,設(shè)備列表也只初始化一次。當(dāng)驅(qū)動程序中的回調(diào)函數(shù)檢測到有設(shè)備動態(tài)接人時,系統(tǒng)會在創(chuàng)建設(shè)備、分配設(shè)備資源的同時將設(shè)備描述符加入到設(shè)備列表,而且只將其加入到設(shè)備列表的尾部。而在有設(shè)備動態(tài)移除時,驅(qū)動程序回調(diào)函數(shù)會捕獲移除動作,并根據(jù)設(shè)備的標(biāo)識遍歷設(shè)備列表,以查找出移除的設(shè)備,然后將其描述符從設(shè)備列表中刪除。遍歷設(shè)備列表其實就是一個查找設(shè)備的過程。查找設(shè)備時,每一個設(shè)備都需要用唯一的一個標(biāo)識來與其它設(shè)備區(qū)別,從而引出了設(shè)備的唯一標(biāo)識問題。

2.3 USB設(shè)備的標(biāo)識問題

同I/O系統(tǒng)標(biāo)識設(shè)備一樣,對于USB設(shè)備的標(biāo)識。也可以采用設(shè)備名來標(biāo)識。這樣可以給用戶一個直觀的概念,而且便于記憶。利用設(shè)備頭(USB_DEV_HDR)中的name指針域可以為每一個接入的設(shè)備起一個名字。這樣,對于不同的設(shè)備,就可以用名字字符串來唯一區(qū)分,但這不利于快速訪問設(shè)備,因為在每次查找設(shè)備的時候?qū)τ诿恳粋€設(shè)備鏈表節(jié)點(diǎn)都要進(jìn)行一次字符串比較,這樣便延長了查找設(shè)備的時間。針對USB設(shè)備及VxWorks下USB協(xié)議棧的特點(diǎn),充分利用USBD對USB設(shè)備的標(biāo)識,在設(shè)計中可采用USBD_NODEjD來標(biāo)識設(shè)備。在VxWorks中的USB協(xié)議棧中。對每一個USB設(shè)備為其分配一個唯一的USBD_NODE_ID號。事實上,VxWorks USBD并不關(guān)心設(shè)備與哪一個USB主控制器相連,也不關(guān)心物理設(shè)備的連接細(xì)節(jié)以及地址分配,USBD通常只是采用USBD_NODE_ID來定位設(shè)備。因此,基于USBD對USB設(shè)備的定位方法,在采用鏈表對USB設(shè)備進(jìn)行管理時,也可以采用USBD_NODE_ID來唯一標(biāo)識一個USB設(shè)備。在用該方法標(biāo)識設(shè)備時,可將USBD_NODE_ID nodeld作為USB設(shè)備描述符結(jié)構(gòu)體的一個成員,其設(shè)備描述符結(jié)構(gòu)改造如下:


由于USBD_NODE_ID是一個32位無符號整型數(shù),因此,在查找設(shè)備時,可以用switch case語句來完成。

2.4設(shè)備訪問技術(shù)

由于設(shè)備是獨(dú)立于I/O系統(tǒng)的,因此不存在驅(qū)動程序列表和文件描述符表。設(shè)計時,可采用驅(qū)動程序直接向應(yīng)用程序提供可訪問設(shè)備的接口函數(shù),以替代驅(qū)動程序列表,而采用USBD_NODE_ID數(shù)組來存放多個USB設(shè)備的標(biāo)識,以替代文件描述符表,如:USBD_NODE_ID usbd_node_id[MAX_DEV_NUM]。

對于同類USB設(shè)備,根據(jù)其Product ID的不同,可將其記為O、l、2……MAX_DEV_NUM號設(shè)備,并分別將其USBD_NODE_ID存放于數(shù)組的對應(yīng)位置。這樣,在訪問設(shè)備時,就可利用設(shè)備號來代替文件描述符,例如在讀取0號設(shè)備時,由其索引值0,就可得到其USBD_NODE_ID為USBD_NODE_ID usbd_node_id[O],再從設(shè)備列表中查找出nodeld為usbd_node_id[O]的設(shè)備結(jié)構(gòu)體,就可最終得到設(shè)備資源。通過USBD_NODE_ID數(shù)組來管理多個設(shè)備的nodeld如圖5所示。


在讀寫設(shè)備時??梢栽O(shè)備號作為設(shè)備的標(biāo)識,并通過設(shè)備號在nodeld數(shù)組中得到設(shè)備的nodeId,再從設(shè)備列表中查找到具體的物理設(shè)備的描述符。從而得到設(shè)備資源并對設(shè)備進(jìn)行訪問。以LM9833讀設(shè)備為例,其讀設(shè)備原型代碼如下:


其中,usbScanRead()是驅(qū)動程序向用戶應(yīng)用程序提供的接口函數(shù),直接調(diào)用該函數(shù)即可讀取設(shè)備,其它的設(shè)備函數(shù)也是如此,其中設(shè)備號dev是由用戶根據(jù)不同設(shè)備的不同Product ID(PID)號制定的,這樣,當(dāng)設(shè)備接入系統(tǒng)時,驅(qū)動程序就會根據(jù)其PID號判斷其設(shè)備號,并將該設(shè)備的nodeld值存放于數(shù)組的特定位置。由于此時設(shè)備始終處于就緒狀態(tài),用戶可以隨時對設(shè)備進(jìn)行讀寫操作,而并不存在打開設(shè)備的操作。

讀寫設(shè)備時,首先要根據(jù)設(shè)備號dev從設(shè)備列表中查找出設(shè)備,并將其定位到具體的設(shè)備描述符上。在查找設(shè)備時,遍歷設(shè)備列表,就可找到節(jié)點(diǎn)設(shè)備描述符中nodeId與usbd_node_id[dev]相匹配的設(shè)備描述符結(jié)構(gòu)體,并返回該結(jié)構(gòu)體,然后再由設(shè)備描述符結(jié)構(gòu)體得到設(shè)備的資源信息,從而實現(xiàn)對設(shè)備的讀寫。圖6所示是查找設(shè)備的一個簡單流程。


該方法屏蔽了復(fù)雜的驅(qū)動程序列表和文件描述符表,從而提供了一種快速定位和訪問設(shè)備的方法。這種方法在專用的系統(tǒng)中,對同類USB設(shè)備的訪問是非常高效的,但不具有通用性,也就是說,對于不同類別的設(shè)備。則需要另外一套同樣的機(jī)制來實現(xiàn)。

3 結(jié)束語

本文提出了一種獨(dú)立于VxWorks I/O系統(tǒng)的USB設(shè)備管理方法。該方法也是一種獨(dú)立于I/O系統(tǒng)的USB設(shè)備驅(qū)動程序設(shè)計模式,它對于在專用系統(tǒng)中同類USB設(shè)備的管理是非常有效的。通過對USB設(shè)備描述符、設(shè)備列表、以及應(yīng)用程序訪問設(shè)備流程的設(shè)計,可以成功實現(xiàn)獨(dú)立于I/O系統(tǒng)的設(shè)備管理方法。這一種方法可以利用驅(qū)動程序直接向應(yīng)用系統(tǒng)提供接口函數(shù)和nodeld數(shù)組。從而摒棄了I/O系統(tǒng)中復(fù)雜的驅(qū)動程序列表和文件描述符等概念。目前,這種獨(dú)立于VxWorks I/O系統(tǒng)的USB設(shè)備管理方法已在某大型掃描儀中得到應(yīng)用,并取得了一定的經(jīng)濟(jì)效益。



lele

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉