總線驅動是不用改的,內核都幫我們做好了,為了了解整個USB驅動的體系,我們來分析一下總線驅動程序。
一.總線框圖
總線的圖畫的已經非常清楚了,這篇博客我們分析的是左邊的程序,在下篇我們想通過USB鍵盤這一實際例子來講解。
二.程序實現
1. 由于代碼太多且關系復雜這里只列出調用的函數(沒有寫參數)。從插入USB設備,到調用USB設備驅動程序,這一過程。
2.總線驅動程序都做了什么
a. 識別USB設備
1. 分配地址
2. 并告訴USB設備(set address)
3. 發出命令獲取描述符(描述符的信息可以在include\linux\usb\Ch9.h看到)
b. 查找并安裝對應的設備驅動程序
c. 提供USB讀寫函數
盡管USB本身所屬設備驅動的結構與不掛在USB總線上時完全相同,但是在訪問方式上卻發生了很大的變化。例如,對于字符設備驅動而言,盡管仍然是write(), read(), ioctl()這些函數,但是在這些函數中,與USB設備通信時不再是I/O內存和I/O端口的訪問,而貫穿始終的是稱為URB的USB請求塊,這些請求塊通過USB總線驅動提供的讀寫等接口進行操作。
-
總線
+關注
關注
10文章
2881瀏覽量
88077 -
USB驅動
+關注
關注
1文章
136瀏覽量
20197
原文標題:看完就會是不可能的,USB驅動之總線驅動程序
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論