|
发表于 2006-4-28 13:42:00
|
显示全部楼层
<P>usb spec charpter9并没有详细阐述过这个东西,不过说法A和说法B都是对的,说法A的步骤4和步骤5就是说法B中的步骤4;因此,综合说法A和说法B,下面是一个真正的usb枚举的全过程.</P><P>1. 第一次接收到主机的GetDescriptor请求中断响应,主机要求外设发送设备描述符,确定外设缺省管道控制端点的每次数据包大小。通过控制端点回送设备描述符,第一次只需要保证设备描述符中前8个字节发送正确。<FONT color=#ffffff>[52RD.com]</FONT>
2. 主机发送SetAddree请求到USB 设备,给USB设备分配唯一的地址。这时外设被分配唯一地址,此时的USB设备成为被主机承认的合理外设,可以进行正常的数据传送。 3 .外设再一次接收到GetDescriptor请求。主机分析描述符的信息。主机操作系统根据描述符信息寻找相应的设备驱动程序。 <FONT color=#ffffff>[52RD.com]</FONT>
4 .</P><P>step1:Get Configuration Descriptor。接着主机要求得到设备的配置描述符(80,06,00,02,00,00,09,00),包中数据“09”指定设备发送9个字节,这正是设备配置描述符的长度。 <FONT color=#ffffff>[52RD.com]</FONT>
step2:读取全部Configuration Descriptor。接着主机要求得到设备全部的配置描述符、接口描述符和节点描述符(80,06,00,02,00,00,FF,00),由于主机不知道设备描述符的真实长度,因此它要求得到256个字节,实际上本系统中的D12发送46个字节就完成了此任务。<FONT color=#ffffff>.com]</FONT>
5 .在设备能通讯前,主机给外设一个SetConfiguration请求,主机根据整个系统的USB使用情况确认设备的哪一个配置有效,告诉其怎样工作,设备收到后调整有关配置,使设备能合理使用。 <FONT color=#ffffff>[52RD.com</FONT></P> |
|