usb ccid 枚举分析

Bus Hound 5.00 capture. Complements of www.perisoft.net
  Device - Device ID (followed by the endpoint for USB devices)
            (27) USB Smart Card reader
  Phase  - Phase Type
            CTL   USB control transfer      
            DI    Data in                   
            DO    Data out                  
  Data   - Hex dump of the data transferred
  Descr  - Description of the phase
  Cmd... - Position in the captured data

Device  Phase  Data                                                                                                    Description       Cmd.Phase.Ofs(rep)
------  -----  ------------------------------------------------------------------------------------------------------  ----------------  ------------------
  27.0  CTL    80 06 00 01  00 00 12 00                                                                                GET DESCRIPTOR           1.1.0       
  27.0  DI     12 01 10 01  00 00 00 08  e6 08 37 34  00 01 01 02  00 01                                               ..........74....         1.2.0       
  27.0  CTL    80 06 00 02  00 00 09 00                                                                                GET DESCRIPTOR           2.1.0       
  27.0  DI     09 02 5d 00  01 01 00 a0  32                                                                            ..].....2                2.2.0       
  27.0  CTL    80 06 00 02  00 00 5d 00                                                                                GET DESCRIPTOR           3.1.0       
  27.0  DI     09 02 5d 00  01 01 00 a0  32 09 04 00  00 03 0b 00  00 00 36 21  00 01 00 07  03 00 00 00  a0 0f 00 00  ..].....2.......         3.2.0       
               a0 0f 00 00  00 00 2a 00  00 16 40 05  00 00 fe 00  00 00 00 00  00 00 00 00  00 00 30 02  01 00 0f 01  ......*...@.....         3.2.32      
               00 00 00 00  00 00 00 01  07 05 02 02  40 00 00 07  05 82 02 40  00 00 07 05  81 03 08 00  18           ............@...         3.2.64      
  27.0  CTL    00 09 01 00  00 00 00 00                                                                                SET CONFIG               4.1.0       
  27.0  CTL    80 06 01 03  09 04 04 00                                                                                GET DESCRIPTOR           5.1.0       
  27.0  DI     10 03 47 00                                                                                             ..G.                     5.2.0       
  27.0  CTL    80 06 01 03  09 04 10 00                                                                                GET DESCRIPTOR           6.1.0       
  27.0  DI     10 03 47 00  65 00 6d 00  70 00 6c 00  75 00 73 00                                                      ..G.e.m.p.l.u.s.         6.2.0       
  27.0  CTL    80 06 02 03  09 04 04 00                                                                                GET DESCRIPTOR           7.1.0       
  27.0  DI     2a 03 55 00                                                                                             *.U.                     7.2.0       
  27.0  CTL    80 06 02 03  09 04 2a 00                                                                                GET DESCRIPTOR           8.1.0       
  27.0  DI     2a 03 55 00  53 00 42 00  20 00 53 00  6d 00 61 00  72 00 74 00  43 00 61 00  72 00 64 00  20 00 52 00  *.U.S.B. .S.m.a.         8.2.0       
               65 00 61 00  64 00 65 00  72 00                                                                         e.a.d.e.r.               8.2.32      
  27.0  CTL    80 06 00 03  09 04 04 00                                                                                GET DESCRIPTOR           9.1.0(2)    
  27.0  DI     04 03 09 04                                                                                             ....                     9.2.0       
  27.1  DI     50 03                                                                                                   P.                      11.1.0       
  27.2  DO     63 00 00 00  00 00 01 00  00 00                                                                         c.........              12.1.0       
  27.2  DI     81 00 00 00  00 00 01 01  00 00                                                                         ..........              13.1.0       
  27.2  DO     62 00 00 00  00 00 02 03  00 00                                                                         b.........              14.1.0       
  27.2  DI     80 00 00 00  00 00 02 41  fe 00                                                                         .......A..              15.1.0       
  27.2  DO     62 00 00 00  00 00 03 02  00 00                                                                         b.........              16.1.0       
  27.2  DI     80 0f 00 00  00 00 03 00  00 00 3b 7a  18 00 00 86  88 01 02 03  04 05 06 07  08                        ..........;z....        17.1.0       

1. 第一次接收到主机的GetDescriptor请求中断响应,主机要求外设发送设备描述符,确定外设缺省管道控制端点的每次数据包大小。通过控制端点回送设备描述符,第一次只需要保证设备描述符中前8个字节发送正确。
2. 主机发送SetAddree请求到USB 设备,给USB设备分配唯一的地址。这时外设被分配唯一地址,此时的USB设备成为被主机承认的合理外设,可以进行正常的数据传送。
3 .外设再一次接收到GetDescriptor请求。主机分析描述符的信息。主机操作系统根据描述符信息寻找相应的设备驱动程序。
4 .操作系统会继续发出GetConfiguration请求,读取设备的配置信息。要把外设的各个端点的配置情形回送到主机中。如果有多个配置信息,有多次请求发生。
5 .在设备能通讯前,主机给外设一个SetConfiguration请求,主机根据整个系统的USB使用情况确认设备的哪一个配置有效,告诉其怎样工作,设备收到后调整有关配置,使设备能合理使用。
经过上面的调试后,USB外设可以发送和接收数据,设备如果不立即使用则会进入挂起状态,直到使用。
1、主机使用默认地址0读取设备描述符,主机向D12发送第一个Setup包,每个Setup包都是8个字节,第一个包Get Descriptor的内容为:80 06 00 01 00 00 40 00
2、地址分配。主机向D12发送第二个Setup包,这是一个含有指定地址的数据包,其内容一般为:00 05 02 00 00 00 00 00 ,其中的02就表示主机为设备分配的地址为0x02
3、然后主机向D12发送第三个Setup包,再次要求获取设备描述符。这个Setup包的内容一般是:80 06 00 01 00 00 12 00
4、主机读取配置描述符。成功得到18字节的设备描述符后,主机向D12发送第四个Setup包,要求得到设备的配置描述符。这个Setup包的数据为:80 06 00 02 00 00 09 00
5、读取描述符集合。成功得到9字节的配置描述符后,主机向D12发送第五个Setup包,要求得到设备的配置描述符、接口描述符、端点描述符的集合。
 这次Setup包的内容是:80 06 00 02 00 00 FF 00 。由于不知道描述符集合的真实长度,因此它要求得到256字节
6、数值配置。主机得到各种描述符之后,认为设备的信息已经齐全,便对设备进行配置,使设备从地址状态进入配置状态。主机向D12发送第六个Setup包,其数据为:00 09 01 00 00 00 00 00 。程序中需要调用Set Configuration()函数处理此事件,允许所有端点进入工作状态。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值