阅读:9196回复:26
谁能说一说 USB 枚举的过程?枚举时Firmware的流程是怎么样的?
调试Firmware时,枚举总是不成功。
谁能提供枚举时Firmware的完整流程(详细一点),送200分。 谢谢谢谢... Best Regards/Aron Chu [AronChu 编辑于 2001-10-22 17:08] |
|
最新喜欢:![]()
|
沙发#
发布于:2007-08-30 15:56
当UBS设备被取走时,集线器同样会通知主机,断开一个设备连接会使得设备所连接的端口无效,一收到断开通知后,主机就会更新的拓扑信息。
这个探测时间是多久? |
|
板凳#
发布于:2005-07-26 16:58
GetDescriptor这一步都到不了.该怎么办,有复位中断请求和挂起中断.用USB HOUND 也看不到GetDescriptor,只有很多个GET STATUS和CLEAR FEATURE.后来就不知道怎么拉?请指教.
|
|
地板#
发布于:2005-07-26 16:53
GetDescriptor
|
|
地下室#
发布于:2005-07-22 01:34
ddd
|
|
5楼#
发布于:2005-05-28 23:41
我也再跟一段吧 忘了从哪本书上抄过来的 希望对初学者有点帮助:
1.USB设备所连的集线器通过其通向主机的状态改变通道向主机,汇报本USB设备已连接上。此时,USB设备处于加电状态,它所连接的端口是无效的。 2.主机通过寻问集线器决定此次状态改变的确切含义。 3.主机一旦得知新设备已连上以后,它至少等待100ms以使得插入操作的完成以及设备电源稳定工作。然后主机发出端口使能及复位命令给那个端口。 4.集线器将发向端口的复位信号持续10ms。当复位信号撤消后,端口已经有效了。这时USB设备处于缺省状态,并且可从VBUS汲取小于100mA的电能,所有设备寄存器及状态已经被复位,设备可对缺省地址产生响应。 5.主机给设备分配一个唯一的地址,设备转向编址状态。(Address state)。 6.在USB设备接受设备地址之前,它的缺省控制通道(Default Control Pipe)在缺省地址处自然是可寻址的,主机通过读取设备描述表,判决设备缺省通道的实际净数据负载。 7.主机从设备读取配置信息要从配置0读到配置n-1,其中n为配置个数,此操作须花费几个毫秒。 8.基于从设备取来的配置信息及设备如何被使用的信息,主机给设备一个配置值,此刻,设备就处于配置状态(Configured state)并此配置有关的所有端节点,都按照配置各就各位,USB设备现在可以从VBUS得到描述中所要求的电量了。从设备的角度来讲,它已经准备就绪了。 当UBS设备被取走时,集线器同样会通知主机,断开一个设备连接会使得设备所连接的端口无效,一收到断开通知后,主机就会更新的拓扑信息。 |
|
6楼#
发布于:2004-09-01 08:08
受益匪浅,感激不尽! :)
|
|
|
7楼#
发布于:2001-11-07 14:32
我用的是823的usb控制器,已经产生传输中断,表明数据已传送,为何pc的usb host没有收到呢?
我还有问题要请教 如果823当host ,如何来完成一个setup事务处理,setup和数据包是连续发送还是分开发送? 如何去复位设备(无hub)? [cikus 编辑于 2001-11-07 14:39] |
|
8楼#
发布于:2001-11-07 12:10
是的,你的主机没有收到。
|
|
|
9楼#
发布于:2001-11-07 11:27
我用的是823的USB控制器,连上主机后的情况是这样:
RESET 收到8006 0001 0000 4000 发送描述符 结果还有 RESET中断,反复三次? 是不是因为主机没有收到描述符? |
|
10楼#
发布于:2001-10-31 18:28
没问题,枚举和设备的初始化是两个概念。但是那位老弟的问题是:在枚举的过程中firmware(我想是USB设备的firmwae吧^_^)的工作流程,你说除了设备的初始化还有什么? :P
|
|
|
11楼#
发布于:2001-10-31 09:34
usb 1.1 specification
|
|
|
12楼#
发布于:2001-10-30 20:06
我现在正在找这有关枚举的文章,我用的也是EZ-USB,
现在大概两个方面要用到枚举流程来解决,一个是写inf, 总是有点问题,一时装上,一时又必须先做删除,才能装上。 还有一个问题是firmware中的,关于断开的语句,看来还是 得通过理解这枚举流程,才能彻底弄清楚。 以前好像有篇英文写的枚举流程,不知现在是否能找到。 |
|
|
13楼#
发布于:2001-10-26 20:28
应该是总线驱动程序根据外设决定的吧!
|
|
|
14楼#
发布于:2001-10-26 19:32
我看到的是这样的:
1. 80 06 00 01 00 00 40 00 读设备描述字 实际返回0x12个; 2. RESET 3. 00 05 ** ** 00 00 00 00 分配设备地址 ACK 4. 80 06 02 00 00 00 09 00 读配置描述字的头 返回9个 5. 80 06 02 00 00 00 ff 00 读全部配置描述字 返回无数…… ...... 以后的动作由设备驱动程序接管. 我想这是总线驱动程序决定的,不同厂家略有不同吧。 |
|
15楼#
发布于:2001-10-25 21:17
老兄谢谢你给分先 ,这两天没来,今天以来发现多了100分,还纳闷呢?谢谢你
主机枚举过程setup包如下: 1。80 06 00 01 00 00 12 00得到设备描述字 2。00 05 ** ** 00 00 00 00给设备分配地址 3。80 06 02 00 00 00 2E 00读配置描述子 4。00 09 01 00 00 00 00 00激活设备的一个配置 大体的过程就是这样不同的芯片可能会又不同 比如主机得到设备描述字的前8个字节可能就给设备分配地址了 不过你在固件中都做好了肯定能通过祝你好运!谢谢! 多交流! |
|
|
16楼#
发布于:2001-10-25 08:39
谢谢usb11!
哪位熟悉HID的大侠可给我看一看这个Report Descriptor? Regards/AronChu |
|
|
17楼#
发布于:2001-10-23 15:04
请参考nigx对PDIUSBD12的描述:
PDIUSBD12芯片全速模式下的枚举调试过程: 1) 单片机上电后立即初始化所有的接口、存储区、定时器和中断服务程序指针,按USB协议要求把PDIUSBD12芯片中的Soft_Connect位寄存器置为“1”,把D+线变为高电平,此时D-为低电平,信号为差分1。设备插入USB集线器后,集线器的状态寄存器发生变化,主机软件查询到变化后,发送一系列请求使能集线器的端口中。 2) 如果PDIUSBD12配置为总线供电方式,则外设一连接到集线器上,端口使能后便被提供100mA 总线电流,外设处于上电状态,芯片所有的寄存器清零并指向默认地址。如果用自供电方式,芯片的EOT_N管脚通过一个上拉电阻接到USB的V_BUS上。 3) 单片机第一次接收到主机的GetDescriptor请求中断响应,主机要求外设发送设备描述符,确定外设缺省管道控制端点的每次数据包大小。单片机程序中通过控制端点回送设备描述符,这次只需要保证设备描述符中前8个字节发送正确。 4) 主机发送SetAddree请求到外设,给USB外设分配唯一的地址。单片机把PDIUSBD12芯片的SetAddressEnable寄存器置为1。这时外设被分配唯一地址,此时设备才是真正的外设,只有这以后的USB设备才能进行数据传送。 5) 外设再一次接收到GetDescriptor请求。单片机再一次向主机传送设备描述符,主机分析描述符的信息。操作系统此时才有足够信息来寻找设备的驱动程序。 6) 操作系统会继续发出GetConfiguration请求,读取设备的配置信息。单片机程序中要把PDIUSBD12芯片的各个端点的配置情形回送到主机中。如果有多个配置信息,有多次请求发生。 7) 在设备能通讯前,主机给PDIUSBD12 一个SetConfiguration请求,主机根据整个系统的USB使用情况确认设备的哪一个配置有效,告诉其怎样工作,设备收到后调整有关信息,使设备能被客户软件利用。 |
|
|
18楼#
发布于:2001-10-23 15:00
[QUOTE]原本由 AronChu 发表
[B]To sunkai, 您就不要谦虚啦,您都作过完整的产品,哪会不明白呢。 我的意思是当插入USB Device时, 1. host 会发什么信号,Firmware(如是HID最好) 作什么响应。 2. 枚举什么时候算完,可以进行正常通信。 这问题比较麻烦请不吝赐教。 谢谢! Best Regards Aron Chu [/B][/QUOTE] 不是谦虚,说起来我倒真的不懂了,用的片子比较简单(EZUSB),它也不需要我关心这些。好象有好几个帖子讲这个的。 |
|
19楼#
发布于:2001-10-23 14:21
To sunkai,
您就不要谦虚啦,您都作过完整的产品,哪会不明白呢。 我的意思是当插入USB Device时, 1. host 会发什么信号,Firmware(如是HID最好) 作什么响应。 2. 枚举什么时候算完,可以进行正常通信。 这问题比较麻烦请不吝赐教。 谢谢! Best Regards Aron Chu |
|
|
上一页
下一页