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 若想...