乙個介面對應乙個驅動,乙個驅動往往可以支援多個介面!
蒲 松 齡 曰 , 每 個 男 人 的 心 中 都 有 一 個 狐 狸 精 , 每 個 寫 usb 驅 動 的 人 心 中 都 有 一 個
usb_driver。一般來說,我們平時所謂的編寫usb驅動指的也就是寫usb介面的驅動,需要
以乙個struct usb_driver結構的物件為中心,以裝置的介面提供的功能為基礎,開展usb
驅動的建設。
834 行,name,驅動程式的名字,對應了在/sys/bus/usb/drivers/下面的子目錄名稱。
和我們每個人一樣, 它只是彼此區別的乙個代號, 不同的是我們可以有很多人叫張三或者李
四,但這裡的名字在所有的 usb 驅動中必須是唯一的。
836 行,probe,用來看看這個 usb 驅動是否願意接受某個介面的函式。每個驅動自誕生
起,它的另一半就已經確定了,這個函式就是來判斷哪個才是她苦苦等待的那個他。當然,
這個他應該是他們,因為乙個驅動往往可以支援多個介面。
839 行,disconnect,當介面失去聯絡,或使用rmmod解除安裝驅動將它和介面強行分開時
這個函式就會被呼叫。
841 行,ioctl,當你的驅動有通過usbfs和使用者空間交流的需要的話,就使用它吧。
844 行,suspend,845 行,resume,分別在裝置被掛起和喚醒時使用。
847 行,pre_reset,848 行,post_reset,分別在裝置將要復位(reset)和已經復位後
使用。850 行,id_table,驅動支援的所有裝置的花名冊,所有的三宮六院要想受到寵幸都要在
這裡登記。驅動就靠這張表兒來識別是不是支援哪個裝置介面的,如果不屬於這張表,那就
躲一邊兒去吧。
852 行,dynids,支援動態 id 的。什麼是動態 id?本來前面剛說每個驅動誕生時她的另一
半在 id_table 裡就已經確定了,可是誰規定了女同胞就一定要從一而終了,那是封建舊思
想要打到的,聽聽她們內心的呼聲「誰說我白,瘦,漂亮~我就跟他做好朋友」 ,greg 大俠
顯然也聽到了,於是在一年多前的乙個寒風蕭蕭的日子裡平地一聲吼,加入了動態 id 的機
73也可以新增新的 id 給她, 只要新 id 代表的裝置存在,
制。即使驅動已經載入了, 對她說「你
又白又瘦又漂亮」 ,她就會和他繫結起來。
怎麼新增新的 id?到驅動所在的地方瞅瞅,也就是/sys/bus/usb/drivers 目錄下邊兒,那
裡列出的每個目錄就代表了乙個 usb 驅動,隨便選乙個進去,能夠看到乙個 new_id 檔案
吧,使用 echo 將廠商和產品 id 寫進去就可以了。看看 greg 舉的乙個例子
echo 0557 2008 > /sys/bus/usb/drivers/foo_driver/new_id
就可以將 16 進製值 0557 和 2008 寫到 foo_driver 驅動的裝置 id 表裡取。
linux那些事之我是USB
這兩天閒著沒事,就翻開這本看了一下,這裡做些筆記,幫助自己以後複習用。usb的主要 位於 driver usb storage下面,核心 在 driver usb storage core目錄下面,這幅圖是看書的過程中畫的,這就是乙個簡單的匯流排裝置模型,相信不難理解,當裝置連線上時會被新增到匯流排...
USB裝置類學習筆記
usb audio class 版本目前有3個版本 分別是1.0,2.0,3.0 1.0針對各個廠家的裝置具有不同的描述符,而2.0則將它們統一簡化,3.0則是最新的,還沒有與2.0作進一步比較 因為要寫的uvc usb video class 是同步傳輸,而官方usb 的中介軟體給出的例程只有au...
usb2 0驅動學習筆記
乙個usb裝置可以分為3層 l 最底層是傳送和接收包的匯流排介面。l 中間層是處理匯流排介面與裝置不同端點之間的資料路由。端點是資料的終端使用者和資料提供者。它可被認為是資料的信源和信宿。l 最頂層是序列匯流排裝置提供的功能,例如滑鼠或者isdn介面。當usb裝置連線到usb匯流排或者從usb匯流排...