我是USB 學習筆記

2021-09-30 05:03:12 字數 1558 閱讀 6953

乙個介面對應乙個驅動,乙個驅動往往可以支援多個介面!

蒲 松 齡 曰 , 每 個 男 人 的 心 中 都 有 一 個 狐 狸 精 , 每 個 寫 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匯流排...