AronChu
驱动牛犊
驱动牛犊
  • 注册日期2001-08-01
  • 最后登录2002-01-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:9196回复:26

谁能说一说 USB 枚举的过程?枚举时Firmware的流程是怎么样的?

楼主#
更多 发布于:2001-10-22 09:47
调试Firmware时,枚举总是不成功。
谁能提供枚举时Firmware的完整流程(详细一点),送200分。
谢谢谢谢...
Best Regards/Aron Chu
[AronChu 编辑于 2001-10-22 17:08]

最新喜欢:

wangminwangmi...
Best Regards/Aron Chu 拉拉拉,拉拉拉,我是个失业的流浪汉!
qiuzhenqing
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2009-11-09
  • 粉丝0
  • 关注0
  • 积分610分
  • 威望62点
  • 贡献值0点
  • 好评度61点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-08-30 15:56
当UBS设备被取走时,集线器同样会通知主机,断开一个设备连接会使得设备所连接的端口无效,一收到断开通知后,主机就会更新的拓扑信息。
这个探测时间是多久?
zjy3411
驱动牛犊
驱动牛犊
  • 注册日期2005-07-20
  • 最后登录2007-03-22
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望14点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-07-26 16:58
GetDescriptor这一步都到不了.该怎么办,有复位中断请求和挂起中断.用USB HOUND 也看不到GetDescriptor,只有很多个GET STATUS和CLEAR FEATURE.后来就不知道怎么拉?请指教.
zjy3411
驱动牛犊
驱动牛犊
  • 注册日期2005-07-20
  • 最后登录2007-03-22
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望14点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-07-26 16:53
GetDescriptor
appleman4000
驱动牛犊
驱动牛犊
  • 注册日期2005-07-07
  • 最后登录2008-02-16
  • 粉丝0
  • 关注0
  • 积分78分
  • 威望16点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-07-22 01:34
ddd
sjlou1126
驱动牛犊
驱动牛犊
  • 注册日期2005-03-04
  • 最后登录2006-09-25
  • 粉丝0
  • 关注0
  • 积分112分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
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设备被取走时,集线器同样会通知主机,断开一个设备连接会使得设备所连接的端口无效,一收到断开通知后,主机就会更新的拓扑信息。
win86
驱动牛犊
驱动牛犊
  • 注册日期2003-08-26
  • 最后登录2007-08-31
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-01 08:08
受益匪浅,感激不尽! :)
win86
cikus
驱动牛犊
驱动牛犊
  • 注册日期2001-11-05
  • 最后登录2002-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-11-07 14:32
我用的是823的usb控制器,已经产生传输中断,表明数据已传送,为何pc的usb host没有收到呢?

我还有问题要请教
如果823当host ,如何来完成一个setup事务处理,setup和数据包是连续发送还是分开发送?
如何去复位设备(无hub)?

[cikus 编辑于 2001-11-07 14:39]
usb11
驱动小牛
驱动小牛
  • 注册日期2001-09-17
  • 最后登录2009-04-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-11-07 12:10
是的,你的主机没有收到。
助人乃快乐之本! 共同进步是我的本意!
cikus
驱动牛犊
驱动牛犊
  • 注册日期2001-11-05
  • 最后登录2002-03-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-11-07 11:27
我用的是823的USB控制器,连上主机后的情况是这样:
RESET
收到8006 0001 0000 4000
发送描述符
结果还有
RESET中断,反复三次?
是不是因为主机没有收到描述符?
abelli
驱动牛犊
驱动牛犊
  • 注册日期2001-10-07
  • 最后登录2001-12-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2001-10-31 18:28
没问题,枚举和设备的初始化是两个概念。但是那位老弟的问题是:在枚举的过程中firmware(我想是USB设备的firmwae吧^_^)的工作流程,你说除了设备的初始化还有什么? :P
我不聪明,因为...... 智慧比聪明更重要。
singwoo
驱动牛犊
驱动牛犊
  • 注册日期2001-09-10
  • 最后登录2002-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2001-10-31 09:34
usb 1.1 specification
singwoo
lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2001-10-30 20:06
   我现在正在找这有关枚举的文章,我用的也是EZ-USB,
现在大概两个方面要用到枚举流程来解决,一个是写inf,
总是有点问题,一时装上,一时又必须先做删除,才能装上。
 还有一个问题是firmware中的,关于断开的语句,看来还是
得通过理解这枚举流程,才能彻底弄清楚。
  以前好像有篇英文写的枚举流程,不知现在是否能找到。
lvgx
usb11
驱动小牛
驱动小牛
  • 注册日期2001-09-17
  • 最后登录2009-04-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2001-10-26 20:28
应该是总线驱动程序根据外设决定的吧!
助人乃快乐之本! 共同进步是我的本意!
madiwy
驱动牛犊
驱动牛犊
  • 注册日期2001-10-25
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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 读全部配置描述字
   返回无数……
......
以后的动作由设备驱动程序接管.
我想这是总线驱动程序决定的,不同厂家略有不同吧。

dahello
驱动中牛
驱动中牛
  • 注册日期2001-06-16
  • 最后登录2004-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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个字节可能就给设备分配地址了
不过你在固件中都做好了肯定能通过祝你好运!谢谢!
多交流!
不懂就问 :D
AronChu
驱动牛犊
驱动牛犊
  • 注册日期2001-08-01
  • 最后登录2002-01-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2001-10-25 08:39
谢谢usb11!
哪位熟悉HID的大侠可给我看一看这个Report Descriptor?
Regards/AronChu
Best Regards/Aron Chu 拉拉拉,拉拉拉,我是个失业的流浪汉!
usb11
驱动小牛
驱动小牛
  • 注册日期2001-09-17
  • 最后登录2009-04-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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使用情况确认设备的哪一个配置有效,告诉其怎样工作,设备收到后调整有关信息,使设备能被客户软件利用。

助人乃快乐之本! 共同进步是我的本意!
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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),它也不需要我关心这些。好象有好几个帖子讲这个的。
AronChu
驱动牛犊
驱动牛犊
  • 注册日期2001-08-01
  • 最后登录2002-01-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2001-10-23 14:21
To sunkai,
您就不要谦虚啦,您都作过完整的产品,哪会不明白呢。
我的意思是当插入USB Device时,
1. host 会发什么信号,Firmware(如是HID最好) 作什么响应。
2. 枚举什么时候算完,可以进行正常通信。
这问题比较麻烦请不吝赐教。
谢谢!
Best Regards
Aron Chu

Best Regards/Aron Chu 拉拉拉,拉拉拉,我是个失业的流浪汉!
上一页
游客

返回顶部