嵌入式系統串列設備管理的研究與實現

《嵌入式系統串列設備管理的研究與實現》是一篇論文。

引言 隨著微電子技術的發展,嵌入式系統的功能越來越強大,像UART口、IrDA、USB、I2C以及SPI這些串列接口或設備同時存在於一個嵌入式系統中,實現對它們的統一管理將能極大地提高整個嵌入式系統的可移植性、易用性以及開發效率。本文通過對嵌入式系統串列設備管理技術的研究,提出了“帶USB的串列管理”模型,並詳細闡述了串列設備管理的實現過程。 串列設備管理 串列設備管理是指對COM,IrDA、I2C、modem等流設備和接口的統一管理。具體說,就是通過統一的上層套用層接口和下層驅動層接口實現對串列設備的統一管理和透明化處理,從而提高整個系統的易用性和可移植性。USB作為一種新型的高速串列匯流排,由於具有複雜性和高速性等特點,在嵌入式作業系統中一般專門為其建立一個USB模型而不放入串列設備管理中。雖然這樣有利於全面地管理USB主機、USBHub以及USB設備,但整個模型實現代碼大而難,且在嵌入式系統下位機中多是USB設備而沒有USB主機和USBHub。針對這一特點,本文把對USB設備的管理加入到串列管理中,使得對USB設備的訪問如同對一個串口的訪問一樣方便,從而提出了帶USB的串列管理模型。 帶USB的串列管理模型 整個管理模型由兩層構成,上層為作業系統套用層接口函式集,主要是統一化的串列流接口函式,如OpenFile等;下層為硬體驅動程式層對象和函式。串列管理的設備對象由虛擬化的HWOBJ結構體來定義,虛擬對象的登記和管理則是通過對DEVICE_LIST結構體的管理來實現。HWOBJ結構體定義為: typedefstruct_HWOBJ{
void*device_parent;//指向DEVICE_LIST結構
unsignedshortdevice_index;//物理設備號,指向實際的串列設備或接口
unsignedlongbind_flags;//中斷服務執行緒處理標誌位,預留
unsignedlongIntID;//指定中斷類型,預留
void*reserved;
PHW_VTBLfunc_tbl;//硬體驅動函式對象表
}HWOBJ,*PHWOBJ;
DEVICE_LIST結構體定義為:
typedefstruct_DEVICE_LIST{
char*DllName;//設備DLL檔案名稱,預留
unsignedlongNumberOfDevices;//設備數量
void*DeviceArray;//設備佇列
}DEVICE_LIST,*PDEVICE_LIST; 為了解決USB的高速緩衝問題,專門採用了兩個單獨的循環佇列,一個用於緩衝USB的IN傳輸數據,一個用於緩衝USB的OUT傳輸的數據。 帶USB的串列管理的實現 為了便於給套用層編程人員和驅動程式編程人員提供良好的編程接口,接口函式採用了與Windows作業系統中提供的API函式一致的函式名和參數。整個帶USB的串列管理的實現包括名字解析與套用層接口函式的實現、串列設備低層驅動接口、套用層接口函式與低層驅動接口的數據傳輸通道的實現。 名字解析與套用層接口函式 這一層的主要任務是實現設備檔案到對應設備指針的映射。套用層主要接口函式有CreateFile、OpenFile、WriteFile、ReadFile、CloseFIie等。具體實現上主要是設備名的登記和設備命名空間的管理。設備名的登記是指通過設備登記表來註冊設備檔案名稱所對應的物理設備檔案名稱、函式操作指針和設備命名空間等。其中設備命名空間是指檔案系統的統一檔案與設備的訪問接口表,應用程式通過檔案系統里的特殊入口(設備檔案名稱設備句柄)訪問外圍設備。 串列設備低層驅動接口函式 串列設備低層驅動接口通過提供以函式指針為成員的結構體來實現,每一個結構體函式指針成員對應一個具體的硬體驅動函式。 帶USB的串列管理的數據傳輸通道 USB的管理 由於相對於其它串列設備來說,USB是高速設備,且為典型的主從式設備,因此,除了專門為USB採用了兩個循環佇列外,還針對USB是主控制設備的情況,採取通過自定義雙向訪問協定包來解決下位機主動發起訪問的情況。 串列設備的單道訪問

相關詞條

熱門詞條

聯絡我們