USB 存储、UAS、串口与常用类驱动

USB 存储、UAS、串口与常用类驱动

1. usb-storage

storage/usb.c绑定Mass Storage interface,建立 us_data并注册SCSI host。分层:

1
2
3
4
SCSI command
-> protocol handler
-> transport BOT/CBI
-> USB bulk/control URB

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脚本。

文章互动

阅读 --

留言

0 条留言

正在加载留言…