Linux USB的學習與記錄

2021-10-02 02:10:49 字數 1022 閱讀 2161

linux usb

四種不同的資料傳輸方式:

1.控制傳輸(control transfers)

2.中斷傳輸(interrupt data transfers)

3.批量傳輸(bulk data transfers)

4.等時傳輸(isochronous data transfers)

裝置可以有多個介面,每個介面代表乙個功能,每個介面對應著乙個驅動。

kernel/include/linux/usb.h

#define usb_major            180

檢視/proc/devices 就可以看到180 和 189主裝置號的裝置

如果usb裝置沒有與其他任何子系統關聯,就需要對應驅動的probe函式中使用usb_register_dev函式來註冊並獲得主裝置號usb_major。

如果usb裝置關聯了其他子系統,則需要在對應驅動程式的probe函式中使用相應的註冊函式,usb_major 就用不到了。

比如:usb鍵盤關聯了input子系統,驅動對應 /kernel/drivers/hid/usbhid/usbkbd.c 檔案,在它的probe函式中可以看到使用了input_register_device來註冊乙個輸入裝置。

usb描述符主要有四種:裝置描述符、配置描述符、介面描述符和端點描述符。

include/linux/usb/ch9.h

介面描述符:struct usb_host_inte***ce

端點描述符:struct usb_endpoint_descriptor

.bmattributes  [1..0] = 00    控制傳輸

01    等時傳輸

10    批量傳輸

11    中斷傳輸

裝置描述符:struct usb_device_descriptor

.idvendor    廠商id(人們常說的vid)

.idproduct    產品id(人們常說的pid)

配置描述符:usb_config_descriptor

Linux USB口的熱插拔

目前要做乙個在嵌入式平台上的usb口的熱插拔事件。經過我現在的分析總結目前有如下方法 1,定時檢查 proc scsi scsi檔案 此方法只能在pc上,但在嵌入式平台上不可用。2,netlink方式 使用netlink.include include include include include...

linux USB虛擬串列埠裝置名的修改

在linux的usb轉串列埠的驅動中,定義了乙個serial table的指標陣列,這個陣列儲存每乙個註冊的usb串列埠裝置。當usb插上時,usb serial probe會被執行,這個函式會呼叫get free serial。在get free serial中,會遍歷整個陣列,尋找第乙個沒有被賦...

學習記錄 C與C STL

注 僅 vector 和 string 支援對迭代器進行加減某個數字 it自增自減除外 迭代器.begin 指向首元素,而.end 指向尾元素的下乙個。quad 常用的容器即 變長陣列 字元陣列 字串 廣義陣列鍵值對 對映 集合 各種資料結構。優先使用迭代器來定位或遍歷,其通用操作多 quad 若想...