USB 存储、UAS、串口与常用类驱动
1. usb-storage
storage/usb.c绑定Mass Storage interface,建立 us_data并注册SCSI host。分层:
1 | SCSI command |
2. BOT
Bulk-Only Transport:
1 | CBW -> optional data -> CSW |
命令串行、错误时clear halt/reset recovery。unusual_devs.h处理大量设备quirk。
3. UAS
UAS基于USB streams和SCSI task management,支持多命令并行,通常在USB3性能更好。设备/桥接固件有缺陷时会通过quirk退回BOT。
4. 存储安全
拔盘前flush/unmount;掉电、UAS reset或VBUS不足会造成I/O错误。不要仅用峰值吞吐评估稳定性。
5. USB Serial
usb-serial.c提供core:
-usb_serial/port;
-tty driver;
-probe/attach;
-read/write URBs;
-throttle;
-termios;
-disconnect。
专用drivers处理vendor control、baud、modem status。
6. Defconfig串口
列出generic、CP210x、FTDI、Keyspan、PL2303、OTI6858、Qualcomm、Sierra和Option。Modem设备常有多个interfaces,Option/QMI/WDM需正确分工。
7. ACM
CDC ACM导出 /dev/ttyACM*,与vendor USB serial的 /dev/ttyUSB*不同。
8. WDM
CDC WDM承载management messages,常与移动宽带网络driver配合。
9. HID/UVC/UAC/Network
这些class主要位于:
- HID:
drivers/hid/usbhid/; - UVC:
drivers/media/usb/uvc/; - Audio:
sound/usb/; - USB Ethernet:
drivers/net/usb/。
它们依赖usbcore但不在 drivers/usb目录,目录分析不能遗漏这一边界。
10. Driver override
手工unbind/bind或driver_override适合调试;错误绑定可能让原class driver失去interface,量产不应依赖不稳定sysfs脚本。
正在加载留言…