《嵌入式系統串列設備管理的研究與實現》是一篇論文。
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是主控制設備的情況,採取通過自定義雙向訪問協定包來解決下位機主動發起訪問的情況。 串列設備的單道訪問