USB设备驱动学习记录

218 篇文章 29 订阅
8 篇文章 0 订阅

IN/OUT:  

0:EHCI主控架构

1.关于设备地址SET_ADDRESS设置的逻辑:

可以看到set_address命令最终通过USB_DRV_WriteReg8(&musb->faddr, g_udc.address);将g_udc.address设置给了硬件,而此地址来源于主机

打印输出:

可以看到主机通过EP0 断点,将地址10,设置给了寄存器0x0510098.而此地址的全称是USB Function Address Register.在pheriphal mode( usb device mode)模式下,当USB 总线复位的额时候,此值被reset为0, 并且此地址应当在主控枚举设备的时候,通过SET_ADDRESS命令由软件来设置。

经过测试

打开红色行,adb shell无法登录,怀疑可能是set_address的时序不能被打断。并且,经过测试,生命期内只要设置1次set address即可,在adb使用过程中只有开始设置了1次,后面 没有再次设置。

2.USB有四个pin脚,对应USB数据线、充电线都有四条线:

3:作为USB Device,需要提供数据传输口,也就是USB规范中的端点,其中EP0可以同时作为输入和输出,而其它的EP只能要么做输入要么做输出。并且设计中每个断电要有对应的FIFO寄存器,一般通过寄存器窗口的方式去实现。USB Device控制器里面,端点发送和接收是用同一个FIFO的? 所以无法双工么。

adbd初始化时EP0的交互。

msh />adbd
adbd version:AW-V1.1.0, compiled on: Jun 23 2021 17:58:00
adbd service init successful
msh />get device descriptor
set address
get device descriptor
get configuration descriptor
get string descriptor
get string descriptor
get string descriptor
get device descriptor
get string descriptor
get string descriptor
get string descriptor
get device descriptor
get configuration descriptor
get configuration descriptor
get status
set configuration
get string descriptor
get string descriptor
get string descriptor
get string descriptor
get string descriptor
get string descriptor
get string descriptor
get configuration descriptor
get configuration descriptor

adbd初始化时候host主机(PC)和udc(ADB 平台)之间的descriptor交互,可以看到get string descriptor交互发生过很多次,不同的index表示读取不同的string desctipror,包含设备自身的描述信息给主机。

msh />adbd
adbd version:AW-V1.1.0, compiled on: Jun 25 2021 15:34:18
[ERR]: [sunxi_udc_get_config_param:1745]:                   usbc0 usbd_irq_flag fetch error!

[ERR]: [sunxi_udc_get_config_param:1751]:                   usbc0 usbd_driver_level fetch error!

adbd service init successful
msh />get device descriptor
set address
get device descriptor
get configuration descriptor
get string descriptor 2.
get string descriptor 0.
get string descriptor 1.
get device descriptor
get string descriptor 0.
get string descriptor 2.
get string descriptor 1.
get device descriptor
get configuration descriptor
get configuration descriptor
get status
set configuration
get string descriptor 0.
get string descriptor 1.
get string descriptor 2.
get string descriptor 0.
get string descriptor 1.
get string descriptor 4.
get string descriptor 5.
get configuration descriptor
get configuration descripto

地址域里面有7位表示设备地址的,也就是说总共有128个地址用来分配给设备,但是其中0号地址是被保留作为默认地址用的,任何一个设备在set address前,都需要通过这个默认地址来响应主机的请求,所以0号地址不能分配给任何一个设备。Hub为设备选择一个地址时,只有选择到一个大于0的地址,设备才可以使用。

ADB应用的整体架构,要成为ADB设备,在UDC驱动之上需要另外一个驱动,这个就是位于Gadget Driver层的 adbd gadget drvier,称为Function驱动,同理,如果模拟U盘,在UDC驱动之上需要另外一个驱动,对于USB大容量存储器而言,这个驱动为File Storage驱动,称为Function驱动。

4:USB MSC Descriptor初始化,注意其中的sub class都是0x08

5:USB控制器的实现情况

DRD包的主控是EHCI? 还是自研的主控? 之前遇到U盘兼容性问题的时候,经常会说DRD是弱主机,独立的EHCI是强主机,U盘挂载独立的EHCI上要比挂载DRD上好一些,既然同样都是EHCI,为何有强弱之分?

现在 我们的 usb0 的DRD 都集成了 独立的EHCI是强主机 , 以前的 usb0 DRD中host,不是 EHCI使用嵌入式的自研弱主机,现在都不会使用了

DRD这块是通用的IP吗,我在STM32上也遇到过DRD驱动,名字全称和我们的一样,dual role device.DRD也是通用的?

DRD 名字是通用的,但 DRD IP不一定是通用的,即每家的寄存器可能排布不一样。

现在DRD里面包的Host还是之前的弱主机么?

不是, 是EHCI来的。

所以换了?之前DRD里面包的不是EHCI的

先前了解到从v3开始的usb ip就换成强主机了

C800是什么

ip是EHCI,但是驱动还是老的架构, 不是按照Linux上ehci架构来

F133上有一套纯EHCI Host控制器,还有一套OTG(DRD,包括EHCI Host和device 控制器). 那外面的USB接口是和 USB Host 控制器绑定的吗? 比如,一个USB接口我可以选择是接纯的EHCI 还是 OTG内部的EHCI 吗?

回答: 封装已经拉好线了,所以,接口和host之间是绑定的,比如,usb0 就是 otg,usb1 就是 纯EHCI Host控制器。记得买的小米的笔记本不也是这个样子的么,说明上会指定哪个口只是USB3.0,哪个口只支持USB2.0,可能就是支持USB3.0的口绑定的是USB3.0的控制器,而USB2.0的口只连接的是USB2.0的控制器。

6:USB Gadget是什么?

gadget说白了就是配件的意思,有些设备本身有usb设备控制器(usb device controller),可以将PC, 也就是我们的主机作为host端,将这样的设备作为slave端和主机通过USB进行通信,从主机的观点看,主机系统的USB驱动程序控制插入其中的USB设备,而USB gadget的驱动程序控制外围设备作为一个USB设备和主机通信,比如,我们的嵌入式主板上支持SD卡,如果我们希望再将主板通过USB连接到PC之后,这个SD卡被模拟成U盘,那么就要通过usb gadget 架构的驱动。

gadget大概能够分成两个模块,一个 是udc驱动,这个驱动是针对具体CPU平台的,如果找不到现成的,就要自己实现,另一个就是gadget驱动,主要有file_storeage, serial, ether,adb等.PC只有USB主机控制器硬件,他们并不能作为USB gadget存在 , 而对于嵌入式设备,USB设备控制器常被集成到处理器中,设备的各种功能,如U盘,网卡等等常常依赖这种USB设备控制器来于主机连接。并且设备的各种功能之间可以切换,比如可以选择作为U盘或者网盘,或者视频采集卡等等。

7:UDC( USB Device Controller USB设备控制器)和Gadget(小配件)驱动逻辑。

8:DRD IP的模式选择,到底是Device 呢? 还是Host呢?

9.UDC中断的逻辑

10:模拟成一个MSC 磁盘设备,device端的interface descriptor应该怎么写?

.bInterfaceClass 表征 设备是一个 MASS_STORAGE设备。

.bInterfaceSubClass=0x06

.bInterfaceProtocol = 0x50

所以上述接口描述符表征了一个使用BBB协议的SCSI存储设备。主机就可以识别了。

SCSI  do_write/do_read是从主机的角度来命名的,所以do_write对应于 usb_gadget_function_read(h->bulk_out。从机是读的角色。

对于do_read来说,是主机读,对应的从机应该执行写操作,也就是usb_gadget_function_write(h->bulk_in, bh->buf, nread << 9);

11: open backing file打开的挂载设备:

初始时刻挂载SD卡读取的磁盘块信息,可以看到都是0附近的磁盘块,估计PC这个时候郑准备读分区表,解析盘符呢。

disk E plug outUSB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offs_READ line 117, offset 0, count 8.
USB_OS_READ line 117, offset 8, count 8.
USB_OS_READ line 117, offset 17, count 8.
USB_OS_READ line 117, offset 2, count 1.
USB_OS_READ line 117, offset 0, count 16.
USB_OS_READ line 117, offset 99, count 1.
USB_OS_READ line 117, offset 0, count 1.
ekernel/subsys/msc/scsi.c 1243 do_write bh->stateUSB_OS_READ line 117, offset 0, count 16.
USB_OS_READ line 117, offset 0, count 16.
USB_OS_READ line 117, offset 0, count 16.
USB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 0, count 16.
USB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 0, count 8.
USB_OS_READ line 117, offset 8, count 8OS_READ line 117, offset 0, counUSB_OS_READ line 117, offset 99, count 1.
USB_OS_READ line 117, offset 0, count 16.
USB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 2,ish_reply residue:24
disk E plug outUSB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 0, count 16.
USB_OS_READ line 117, offset 0, count 1.
USB_OS_READ line 117, offset 0, count 8.
USB_OS_READ line 117, offset 8, count 8.
USB_OS_READ line 117, offset 17, count 8.
USB_OS_READ line 117, offset 2, count 1.
USB_OS_READ line 117, offset 99, count 1.
USB_OS_READ line 117, offset 0, count 16.
USB_OS_READ line 117, offset 0, count 16.

12:正常挂载到小机端时UDISK和SD卡的状态

MSC功能启用时的挂载状态:

小机端已经unmount

13:只挂载SD卡的改动:

popen会自定调用卸载函数。

14:esFSYS_unmount干掉layer fs,挂载MSC后会怎么样?

猜测,由于laerfs只是一个壳,所以小机端的mnt/F还是有的,但是实际的文件不存在了,已经挂载到PC上。验证一下是不是:

小机端:

PC端:

猜测是对的~!

15:挂载MSC过程中的读写设备操作,大部分都是读,对应BUILK IN,只有一次写。

USB_OS_READ line 117, offset 0, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 2, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 16, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 16, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 8, fp = 0x40182c38.
USB_OS_READ line 117, offset 2408, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2440, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2472, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2504, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2536, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2568, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2600, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2632, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2664, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2696, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2728, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2760, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2792, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2824, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2856, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2888, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2920, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2952, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 2984, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3016, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3048, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3080, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3112, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3144, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3176, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3208, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3240, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3272, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3304, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3336, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3368, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3400, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3432, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3464, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3496, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3528, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3560, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3592, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3624, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3656, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3688, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3720, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3752, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3784, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3816, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3848, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3880, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3912, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3944, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 3976, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4008, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4040, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4072, count 24, fp = 0x40182c38.
USB_OS_READ line 117, offset 4096, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4128, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4160, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4192, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4224, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4256, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4288, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4320, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4352, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4384, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4416, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4448, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4480, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4512, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4544, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4576, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4608, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4640, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4672, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4704, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4736, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4768, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4800, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4832, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4864, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4896, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4928, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4960, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 4992, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5024, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5056, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5088, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5120, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5152, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5184, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5216, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5248, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5280, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5312, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5344, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5376, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5408, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5440, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5472, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5504, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5536, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5568, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5600, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5632, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5664, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5696, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5728, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5760, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5792, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5824, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5856, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5888, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5920, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5952, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 5984, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6016, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6048, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6080, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6112, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6144, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6176, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6208, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6240, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6272, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6304, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6336, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6368, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6400, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6432, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6464, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6496, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6528, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6560, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6592, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6624, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6656, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6688, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6720, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6752, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6784, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6816, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6848, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6880, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6912, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6944, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 6976, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7008, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7040, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7072, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7104, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7136, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7168, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7200, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7232, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7264, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7296, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7328, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7360, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7392, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7424, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7456, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7488, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7520, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7552, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7584, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7616, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7648, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7680, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7712, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7744, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7776, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7808, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7840, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7872, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7904, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7936, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 7968, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8000, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8032, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8064, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8096, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8128, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8160, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8192, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8224, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8256, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8288, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8320, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8352, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8384, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8416, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8448, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8480, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8512, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8544, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8576, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8608, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8640, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8672, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8704, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8736, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8768, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8800, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8832, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8864, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8896, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8928, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8960, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 8992, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9024, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9056, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9088, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9120, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9152, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9184, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9216, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9248, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9280, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9312, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9344, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9376, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9408, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9440, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9472, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9504, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9536, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9568, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9600, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9632, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9664, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9696, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9728, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9760, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9792, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9824, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9856, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9888, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9920, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9952, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 9984, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10016, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10048, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10080, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10112, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10144, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10176, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10208, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10240, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10272, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10304, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10336, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10368, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10400, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10432, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10464, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10496, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10528, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10560, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10592, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10624, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10656, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10688, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10720, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10752, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10784, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10816, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10848, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10880, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10912, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10944, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 10976, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11008, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11040, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11072, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11104, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11136, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11168, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11200, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11232, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11264, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11296, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11328, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11360, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11392, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11424, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11456, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11488, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11520, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11552, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11584, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11616, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11648, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11680, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11712, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11744, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11776, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11808, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11840, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11872, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11904, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11936, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 11968, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12000, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12032, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12064, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12096, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12128, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12160, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12192, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12224, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12256, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12288, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12320, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12352, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12384, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12416, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12448, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12480, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12512, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12544, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12576, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12608, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12640, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12672, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12704, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12736, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12768, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12800, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12832, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12864, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12896, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12928, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12960, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 12992, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13024, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13056, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13088, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13120, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13152, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13184, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13216, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13248, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13280, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13312, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13344, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13376, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13408, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13440, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13472, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13504, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13536, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13568, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13600, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13632, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13664, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13696, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13728, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13760, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13792, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13824, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13856, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13888, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13920, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13952, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 13984, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14016, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14048, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14080, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14112, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14144, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14176, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14208, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14240, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14272, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14304, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14336, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14368, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14400, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14432, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14464, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14496, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14528, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14560, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14592, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14624, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14656, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14688, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14720, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14752, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14784, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14816, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14848, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14880, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14912, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14944, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 14976, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15008, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15040, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15072, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15104, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15136, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15168, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15200, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15232, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15264, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15296, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15328, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15360, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15392, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15424, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15456, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15488, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15520, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15552, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15584, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15616, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15648, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15680, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15712, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15744, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15776, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15808, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15840, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15872, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15904, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15936, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 15968, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16000, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16032, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16064, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16096, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16128, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16160, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16192, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16224, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16256, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16288, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16320, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16352, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16384, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16416, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16448, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16480, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16512, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16544, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16576, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16608, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16640, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16672, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16704, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16736, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16768, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16800, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16832, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16864, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16896, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16928, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16960, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 16992, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17024, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17056, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17088, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17120, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17152, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17184, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17216, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17248, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17280, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17312, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17344, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17376, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17408, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17440, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17472, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17504, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17536, count 32, fp = 0x40182c38.
USB_OS_READ line 117, offset 17568, count 24, fp = 0x40182c38.
USB_OS_READ line 117, offset 32768, count 8, fp = 0x40182c38.
USB_OS_READ line 117, offset 2, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 32784, count 8, fp = 0x40182c38.
USB_OS_READ line 117, offset 32816, count 1, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 16, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 16, fp = 0x40182c38.
USB_OS_READ line 117, offset 0, count 16, fp = 0x40182c38.
USB_OS_READ line 117, offset 32832, count 1, fp = 0x40182c38.
USB_OS_WRITE line 151, offset 0, count 0, fp = 0x40182c38.
open_backing_file line 240, filename F:\.
open_backing_file line 240, filename F:\.
livedesk/beetles/init/ui/init_server.c 2209 disk_manager_add_and_plugin path:E:\
livedesk/beetles/init/ui/init_server.c 2213 disk_manager_add_and_plugin disk_manager[0].used:0
livedesk/beetles/init/ui/init_server.c 2218 disk_manager_add_and_plugin device_name:UDISK0
livedesk/beetles/init/ui/init_server.c 2209 disk_manager_add_and_plugin path:F:\
livedesk/beetles/init/ui/init_server.c 2213 disk_manager_add_and_plugin disk_manager[0].used:1
livedesk/beetles/init/ui/init_server.c 2213 disk_manager_add_and_plugin disk_manager[1].used:0
livedesk/beetles/init/ui/init_server.c 2218 disk_manager_add_and_plugin device_name:SDMMC-DISK:00
open_backing_file line 240, filename E:\.
open_backing_file line 240, filename F:\.

16:移植MSC需要的最小代码:

17:关于device挂在后描述字符串的来历:

iManufacturer/iProduct/iSerialNumber表征了这些字符串在字符串表中的索引。

18:经过下列的的SCSI Command响应后,PC端必定会mount上msc 磁盘。

fsg->cmnd[0]=0x12 SC_INQUIRY
fsg->cmnd[0]=0x12 SC_INQUIRY
fsg->cmnd[0]=0x23 SC_READ_FORMAT_CAPACITIES
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x23 SC_READ_FORMAT_CAPACITIES
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x23 SC_READ_FORMAT_CAPACITIES
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x12 SC_INQUIRY
fsg->cmnd[0]=0x25 SC_READ_CAPACITY
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x1a SC_MODE_SENSE_6
fsg->cmnd[0]=0x1a SC_MODE_SENSE_6
fsg->cmnd[0]=0x1a SC_MODE_SENSE_6
fsg->cmnd[0]=0x15 SC_MODE_SELECT_6
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x15 SC_MODE_SELECT_6
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x25 SC_READ_CAPACITY
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x25 SC_READ_CAPACITY
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x25 SC_READ_CAPACITY
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x12 SC_INQUIRY
fsg->cmnd[0]=0x25 SC_READ_CAPACITY
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x25 SC_READ_CAPACITY
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x25 SC_READ_CAPACITY
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x25 SC_READ_CAPACITY
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x25 SC_READ_CAPACITY
fsg->cmnd[0]=0x3  SC_REQUEST_SENSE
fsg->cmnd[0]=0x1a SC_MODE_SENSE_6

18:EHCI是一个寄存器级的标准,这和做软件开发经常看到的软件标准是不同的。

19:Linux USB Storage 主控端U盘驱动

Makefile, Kconfig犹如Linux这座宏伟城市的地图,根据这张地图,知道了和U盘相关的只有几个文件,其它的都是特定公司的设备驱动,并非U盘驱动。

典型的主控发送CBW控制字的逻辑:

驱动注册

20:啥叫LUN,一个device中的一个drive,比如一个读卡器有四个卡槽,这里读卡器是device,卡槽是drive,所以有四个LUN.

21:sd card format to 2 parts methods:

czl@czl-RedmiBook-14:~$ sudo fdisk /dev/sdb 

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
No partition is defined yet!
Could not delete partition 94624964271897

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-31116287, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-31116287, default 31116287): +4G

Created a new partition 1 of type 'Linux' and of size 4 GiB.

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor      
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary  
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE 
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT            
Hex code (type L to list all codes): b
Changed type of partition 'Linux' to 'W95 FAT32'.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 
First sector (8390656-31116287, default 8390656): 
Last sector, +sectors or +size{K,M,G,T,P} (8390656-31116287, default 31116287): 

Created a new partition 2 of type 'Linux' and of size 10.9 GiB.

Command (m for help): t
Partition number (1,2, default 2): b
Value out of range.
Partition number (1,2, default 2): t
Value out of range.
Partition number (1,2, default 2): 
Hex code (type L to list all codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor      
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary  
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE 
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT            
Hex code (type L to list all codes): b

Changed type of partition 'Linux' to 'W95 FAT32'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

czl@czl-RedmiBook-14:~$ 

这样之后,无论在平台端还是PC上,挂载此SD卡都出现两个磁盘:

mnt/F,mnt/G

当MAX_LUNS = 1的时候,PC端和平台端的挂载情况如下:

可以看到平台端的mnt/F不见了,被挂载到PC上成了F盘。注意这个时候MAX_LUNS=1

MAX_LUNS=2的时刻,观察挂载情况:

可以看到,当LUNS为2的时候,平台端的mnt/F, mng/G不见了,全部都挂载到了PC 上成为了F和 G盘。

这样来看,LUNS不但和Device上的drive数目有关,也和每个drive的分区数目有关。

 这里貌似和USB那些事儿上讲的有出入,书上说的是只算slot,不算分区,但实际测试发现,单张SD卡格式化两个分区后,虽然只占用一个SLOT,却需要设置MAX_LUNS=2才能全部挂载,所以还是以实践为准把,LUNS指的是SLOT和分区数目的总合。所以不止读卡器这种具备多个卡槽的设备有LUN,连U盘这种独立的设备,也可以通过建立多个分区伪装成多个LUN的设备。

进一步,两个LUN时候device端处理scsi command 的流程(直到挂载成功)

do_scsi_command line 1636, lun 0, command SC_INQUIRY.
do_scsi_command line 1636, lun 0, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_INQUIRY.
do_scsi_command line 1636, lun 1, command SC_INQUIRY.
do_scsi_command line 1636, lun 1, command SC_INQUIRY.
do_scsi_command line 1636, lun 1, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_MODE_SELECT_6.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_MODE_SELECT_6.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_INQUIRY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_MODE_SELECT_6.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_MODE_SELECT_6.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_INQUIRY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, EAD_CAPACITY.
do_scsi_command lSC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_REand line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACD_10.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10un 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_1standard req:0x6,wValue:0x301,bRequestType=0x80
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_cdo_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsido_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1,d SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_INQUIRY.
do_scsi_command line 1636, lun 0, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_INQUIRY.
do_scsi_command line 1636, lun 1, command SC_INQUIRY.
do_scsi_command line 1636, lun 1, command SC_INQUIRY.
do_scsi_command line 1636, lun 1, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_FORMAT_CAPACITIES.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_MODE_SELECT_6.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_MODE_SELECT_6.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_INQUIRY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_MODE_SELECT_6.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_MODE_SELECT_6.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_INQUIRY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_REQUEST_SENSE.
disk F plug outdisk G plug outdo_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_REQUEST_SENSE.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, EAD_CAPACITY.
do_scsi_command lSC_MODE_SENSE_6.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_REand line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACD_10.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10un 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_1standard req:0x6,wValue:0x301,bRequestType=0x80
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_cdo_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_MODE_SENSE_6.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsido_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1,d SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_READ_10.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 1, command SC_READ_CAPACITY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 0, command SC_TEST_UNIT_READY.
do_scsi_command line 1636, lun 1, command SC_TEST_UNIT_READY.

22:主机是如何知道设备有几个LUNS呢?

hal_udc_ep_set_buf处理很巧妙,先吧buffer 设置给ep0端点,然后设置EP0状态机为DATA_PHASE,这样在下个中断中处理EP0端点的流程中,就可以写回HOST了。

对应的Linux内核HOST端在probe阶段获取max_lun信息的函数调用。

23:挂载成功:

PC端读到的usb descriptor信息:

czl@czl-VirtualBox:~/WorkSpace/debug$ lsusb -d 0x1F3A:0x1000 -v

Bus 001 Device 005: ID 1f3a:1000 Onda (unverified) 
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x1f3a Onda (unverified)
  idProduct          0x1000 
  bcdDevice           ff.ff
  iManufacturer           0 
  iProduct                1 
  iSerial                 2 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              5 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
czl@czl-VirtualBox:~/WorkSpace/debug$ 

和程序中给出的描述符信息是完全匹配的:

24:向MSC中拷贝文件时平台端的打印:

CBW声明每笔要传`128个sector.

25:打开MSC磁盘,获取磁盘信息的流程

26:对于FIFO来说,最大只有512字节,这个信息在主机枚举阶段主机已经获得,所以每笔传输512字节是没有问题的。

但是对于外部的API来说,可以定义每次API调用传输更多的字节,比如API定义传输32个 512字节才返回,这可以由应用决定。

内部的实现方式,是通过is_last变量来判断是否需要上报并唤醒调用API的线程,如果当前非EP0端点并且FIFO中的数据小于一笔512字节大小,则认为是最后一笔,或者传输数据达到API设定给data_len的大小,也认为是一笔结束,is_last生效

生效后的is_last会控制用户层面callback的调用。

这个调用最终会调用notifier唤醒调用API的睡眠线程:

写MSC,平台端会读FIFO,而且是在中断上下文中

读MSC, 平台端会写FIFO,在中断上下文

27:USB分析工具 USBTreeView下载:

https://www.uwe-sieber.de/files/UsbTreeView_x64.zip

28:USB Bushund.

Bus Hound

29:最重要的几个SCSI命令及其意义:

30:挂载MSC后,同一个磁盘下的文件,拷贝到本目录下,读/写操作执行的过程如下:

可以看到,并不是通过硬连接的方式,而是实打实的先读到PC上,在写回到设备上。

ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
do_read line 1020, file ekernel/subsys/msc/scsi.c.
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write
ekernel/subsys/msc/scsi.c 1374 do_write

Linux CONFIGFS的安装:

 

czl@czl-VirtualBox:/sys/kernel/config$ cat /proc/mounts |grep configfs
configfs /sys/kernel/config configfs rw,relatime 0 0
czl@czl-VirtualBox:/sys/kernel/config$ tree
.
└── pci_ep
    ├── controllers
    └── functions

3 directories, 0 files
czl@czl-VirtualBox:/sys/kernel/config$ 

关于UAC设备和USB声卡的关联,可以以下的函数中添加调用栈打印信息

31:USB的几大传输包括控制、批量、中断、等时传输,无论哪种传输,第一个包都是由主机先发起的,包括中断传输。前面我们调用 usb_fill_int_urb()填充好了一个 urb,这会儿就该提 交了,然后主机控制器就知道了,然后如果一切顺利的话,主机控制器就会定期来询问 Hub, 问它有没有中断,有的话就进行中断传输。

32:关于USB设备配置,接口,端点之间的关系,USB驱动那些事总结如下:

同一时刻,我们只能选择一种配置,但是可以选择一个配置里面的多个接口,端点从属于某个接口。同一个接口也可以由多个接口描述符描述,通过alt setting区分。

USB storage Driver int in linux

usb storage disk driver use config CONFIG_USB_STORAGE=m. compile to ko module by default. compile the usb-storage driver in linux

make M=drivers/usb/storage

driver intialize, systemd called insmod usb-storage.ko if device has been pluged.call stack.

PC Linux envionment PCI XHCI Controller emulated:

USB XHCI domain bdf is 0000:00:14.0.

xhci device add:

pci xhci driver add:

register flow:

xhci_pci_init->pci_register_driver-->...->driver_register->....->bus_add_driver->...>bus_for_each_device->...->_driver_attach->...>device_driver_attach->....->really_probe->pci_device_probe->....->xhci_pci_probe.

上面的storage注册是从驱动注册开始,此时设备已经注册好了,如果从HUB发现设备开始,这个时候驱动是OK的,设备从0开始发现,则需要经历USB的DEVICE PROBE阶段和INTERFACE PROBE节点,所有会有两层PROBE。发生这种情况比如PCI REMOVE/RESCAN 抖动时候。

echo 1 > /sys/devices/pci0000\:00/0000\:00\:14.0/remove
sleep 1
echo 1 > /sys/devices/pci0000\:00/0000\:00\:00.0/rescan

no matter usb device or usb interface device, all they are in the usb_bus_type bus.

usb bus type method support usb dvice and usb interface device type recongnition match.

XHCI和USB关系的chatgpt答复:

XHCI就是USB3.0

XHCI(USB 3.0)->EHCI(USB 2.0)->OHCI(USB 1.1)

usb_skelton测试

./drivers/usb/usb-skeleton.c是内核提供的HOST 接口驱动样板,将其拷贝出来单独作为一个模块编译是可以编译过的:

 注意挂载成功后,并不会出现/dev/skel0设备,这是因为驱动虽然挂载了,但是并没有对应的USB设备,总线没有执行PROBE流程。

如果想PROBE成功,需要修改USB下面的两个ID为你存在的USB设备的ID。

USB设备默认预留了两个主设备号,189和180.

用户态可以通过如下设备节点操作USB,主设备号为189.

189设备号对应的file_operations是&usbdev_file_operations:

通过usbdev_ioctl->usbdev_do_ioctl->USBDEVFS_SUBMITURB->proc_submiturb....

提交URB。

CH341串口模块的LINUX驱动支持框架

网购的USB转串口CH341模块,插入PC USB后:

cat /proc/devices

ch341模块默认的驱动在内核的./drivers/usb/serial/ch341.c文件中:

卸载方式,可以直接rmmod/modprobe ch341驱动。

 卸载掉CH341模块后,我们可以用内核自带的usb_skeleton驱动CH341模组,首先找到VENDER和DEV ID:

然后将usb-skeleton.c中的设备ID信息设置为图中所示:

之后编译,挂载模块后,设备目录将会出现/dev/skel0节点,DMESG现实设备节点创建成功。

USB341驱动编译时去选选项为CONFIG_USB_SERIAL_CH341.

EHCI_PLATFROM

PCI EHCI主控一般在服务器和家用PC上,SOC芯片上的EHCI主控一般以平台设备的方式挂载平台总线上。

对应驱动文件

对应的平台设备定义一般以如下形式给出:

只不过,PC上不会执行ehci_platform_probe,因为EHCI没有接到平台总线上。

sunxi usb EHCI 探测

最后由DTS中的compatible字段进行匹配。

平台设备驱动和设备的匹配逻辑有多种匹配条件,具体可以参考

Linux设备驱动模型与 sysfs实现分析以及设计模式应用_papaofdoudou的博客-CSDN博客

参考资料

usb驱动开发5之总线设备与接口_知秋贺的博客-CSDN博客

zero与usb-skeleton结合测试_luckywang1103的博客-CSDN博客

https://www.cnblogs.com/mmlovememm/articles/4105659.html

usb设备驱动入门usb-skeleton之一-dzlhappy123-ChinaUnix博客

usb设备驱动入门usb-skeleton之二-zhanglong71-ChinaUnix博客

ARM Linux下安装CH341串口驱动_兲行健的博客-CSDN博客

CONFIG_USB_SERIAL

结束!

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值