a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > VxWorks下的同類USB設備管理方法

VxWorks下的同類USB設備管理方法

作者: 時間:2013-10-08 來源:網絡 收藏
  引言

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

  1 VxW0rks的I/O子系統

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


  2 USB方案設計

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

  2.1 USB設備描述符

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


  其中,USB_DL_NODE是一個鏈表節點,它由兩個鏈表節點指針域組成。分別指向前一個和下一個設備的鏈表節點。其數據結構如下:


  這樣,就可以把USB設備的描述符劃分為兩部分,其中一部分與具體設備無關,稱為設備頭:另外一部分是與具體設備相關的設備特殊數據,設備相關部分包括USB設備的Node ID、USB管道句柄、端點地址、狀態等信息。其結構如圖2所示。設備無關部分主要用于設備管理,而設備相關部分則用于對設備的訪問。


上一頁 1 2 3 下一頁

評論


相關推薦

技術專區

關閉