Platform: ROCKCHIP
OS: Android 6.0
Kernel: 3.10.92
USB Mass Storage遵循Bulk-Only协议,参见:
http://www.usb.org/developers/docs/devclass_docs/usbmassbulk_10.pdf
传输过程大概如下:
1. 插上设备之后USB Host读取描述符信息,判断是Bulk-Only的Mass Storage之后设置地址进入Bulk-Only传输模式.
2. 一开始使用控制端点,后面传输数据使用Bulk-In和Bulk-Out端点.数据传输协议如下,摘自协议文档.
传输流程图如下:
USB 总线注册:
core/usb.c:
usb_init -> bus_register
struct bus_type usb_bus_type = {
.name = "usb",
.match = usb_device_match,
.uevent = usb_uevent,
};
Mass Storage驱动:
假设已经枚举成功, 然后会调用相应驱动的probe函数.
module_usb_driver ->
storage_probe ->
unusual_dev = (id - usb_s