VxWorks下的同類(lèi)USB設備管理方法
在讀寫(xiě)設備時(shí)??梢栽O備號作為設備的標識,并通過(guò)設備號在nodeld數組中得到設備的nodeId,再從設備列表中查找到具體的物理設備的描述符。從而得到設備資源并對設備進(jìn)行訪(fǎng)問(wèn)。以L(fǎng)M9833讀設備為例,其讀設備原型代碼如下:
其中,usbScanRead()是驅動(dòng)程序向用戶(hù)應用程序提供的接口函數,直接調用該函數即可讀取設備,其它的設備函數也是如此,其中設備號dev是由用戶(hù)根據不同設備的不同Product ID(PID)號制定的,這樣,當設備接入系統時(shí),驅動(dòng)程序就會(huì )根據其PID號判斷其設備號,并將該設備的nodeld值存放于數組的特定位置。由于此時(shí)設備始終處于就緒狀態(tài),用戶(hù)可以隨時(shí)對設備進(jìn)行讀寫(xiě)操作,而并不存在打開(kāi)設備的操作。
讀寫(xiě)設備時(shí),首先要根據設備號dev從設備列表中查找出設備,并將其定位到具體的設備描述符上。在查找設備時(shí),遍歷設備列表,就可找到節點(diǎn)設備描述符中nodeId與usbd_node_id[dev]相匹配的設備描述符結構體,并返回該結構體,然后再由設備描述符結構體得到設備的資源信息,從而實(shí)現對設備的讀寫(xiě)。圖6所示是查找設備的一個(gè)簡(jiǎn)單流程。
該方法屏蔽了復雜的驅動(dòng)程序列表和文件描述符表,從而提供了一種快速定位和訪(fǎng)問(wèn)設備的方法。這種方法在專(zhuān)用的系統中,對同類(lèi)USB設備的訪(fǎng)問(wèn)是非常高效的,但不具有通用性,也就是說(shuō),對于不同類(lèi)別的設備。則需要另外一套同樣的機制來(lái)實(shí)現。
3 結束語(yǔ)
本文提出了一種獨立于VxWorks I/O系統的USB設備管理方法。該方法也是一種獨立于I/O系統的USB設備驅動(dòng)程序設計模式,它對于在專(zhuān)用系統中同類(lèi)USB設備的管理是非常有效的。通過(guò)對USB設備描述符、設備列表、以及應用程序訪(fǎng)問(wèn)設備流程的設計,可以成功實(shí)現獨立于I/O系統的設備管理方法。這一種方法可以利用驅動(dòng)程序直接向應用系統提供接口函數和nodeld數組。從而摒棄了I/O系統中復雜的驅動(dòng)程序列表和文件描述符等概念。目前,這種獨立于VxWorks I/O系統的USB設備管理方法已在某大型掃描儀中得到應用,并取得了一定的經(jīng)濟效益。
評論