20楼#
发布于:2004-01-10 11:32
小声问:设备每一次插到USB接口时,都要经过枚举和重枚举两个步骤吗? ren兄讲的不错,你好好看看。没那么难理解吧! :D |
|
21楼#
发布于:2004-01-10 13:00
现在我对枚举和重枚举的概念:
枚举 1.主机通过地址0获得设备描述符,然后分配新地址给设备,再从新地址向设备提出获得设备描述符的请求,设备响应之; 2.然后根据PID/VID查找固件,下载到设备上 3.固件运行,设备重置取消 现在,开始重枚举 1.主机再次查询设备描述符,配置描述符等等 2.提示用户选择合适的设备驱动 这样,主机和设备间就可以进行数据传输了. 大家看看这些步骤有没有错误? 如果我不想自己编写下载器驱动程序,直接把固件用串口烧到设备上行不行? |
|
|
22楼#
发布于:2004-01-10 13:04
可以烧到设备上。
|
|
23楼#
发布于:2004-01-10 13:27
那我的步骤对不对呀?还有,下载何种固件是通过PID和VID来确定的,选择设备驱动程序也是通过他们两个决定的,前面的两个(PID 和VID)和后面的两个是一样的吗?
|
|
|
24楼#
发布于:2004-01-10 13:47
发现我很爱较真,贴个详细的:
1. 设备接上总线,开始供电(有些设备不是总线供电的); 2. 重置电路维持芯片的重置状态,EZ-USB芯片产生稳定的CLKOUT; 3. MCU检测到EEROM连接在I2C总线上,读取存放在EEPROM中的PID,VID 码,并以这个码来覆盖原来MCU中内建的 PID,VID码;这两个有什么不同? 现在开始枚举了 4. Host检测到USB设备; 5. Host通过地址0发出GetDescriptor的请求(这其中就包括了PID,VID 码); 6. 设备返回无加载固件的设备ID码来回应(固件加载前后,设备ID有什么不同吗); 7. 主机根据PID,VID 码,并知道将加载器驱动程序(估计就是让固件下载到设备的程序)加载; 8.主机配置新地址给设备 9. 主机使用新地址再次发出GetDescriptor请求,设备返回设备描述符 10. 加载器驱动程序执行固件代码,并加载到MCU中。 如果通过串行口下载固件,是不是就不必经过8,10两步了? 重枚举: 11. 释放MCU的重置,开始执行固件代码 12. 固件以电子驱动方式,将设备从总线中脱离,然后再重新连接 13. 主机发现设备连接到HUB中,发出GetDescriptor请求,设备返回描述符 14.主机查询其他描述符 至此,枚举过程全部完成,然后主机要求用户提供inf文件,并根据PID,VID 来确定该文件是否适合设备。 大伙帮我看看,这些步骤对不对? 在整个过程中,主机先后发出GetDescriptor请求三次,其中在枚举过程中发出两次,分别是通过地址0和新地址发出的,在重枚举过程中一次。在枚举开始之前,MCU内建的PID,VID被存放在EEPROM中的PID,VID,它们有什么不同? |
|
|
25楼#
发布于:2004-01-10 14:33
用户被禁言,该主题自动屏蔽! |
|
26楼#
发布于:2004-01-10 14:59
你的过程基本正确: 第二次在哪里? |
|
|
27楼#
发布于:2004-01-10 15:05
好好的一个问题贴,怎么又跑到了探讨枚举和重枚举这个几个月前的话题上去了? :(
|
|
28楼#
发布于:2004-01-10 15:08
[quote]你的过程基本正确: 第二次在哪里? [/quote] 第二次:“如果用户的固件(EZ-USB)需要重新枚举,和以上步骤一样,不同的是这一次用户一般会提供自己的VID/PID和上次不一样,就会装入不同的驱动,但是枚举过程是完全一样的。。。” ----引自pengenwen |
|
29楼#
发布于:2004-01-10 15:10
用户被禁言,该主题自动屏蔽! |
|
30楼#
发布于:2004-01-10 15:11
呵呵,不知道我的论述正不正确?在各位大虾面前见笑了 单就枚举和重枚举是没有问题的,个人总结做的还是不错的! :D |
|
31楼#
发布于:2004-01-10 15:15
用户被禁言,该主题自动屏蔽! |
|
32楼#
发布于:2004-01-10 15:17
久闻flytomoon大虾大名,久仰久仰 承蒙夸奖,小弟愧不敢当。不过不要在问题贴里聊天了,这里要抱着科学的态度回答问题的。 :D [编辑 - 1/10/04 by flytomoon] |
|
33楼#
发布于:2004-01-10 15:35
那么是这样:
枚举过程: 主机通过地址0获得设备描述符 主机给设备分配新地址 主机通过新地址再一次获取设备描述符,配置描述符,字符串描述符等 根据PID/VID来查找设备驱动,安装 主机读取描述符信息,配置设备,建立FIPE 重新枚举的过程: 主机通过发出请求,获得设备描述符表信息 主机根据PID/VID(上一个是由EEPROM提供的,这个是由什么提供的?)装入驱动------------------------- 这里我就不明白了,怎么是装入两次驱动呢? |
|
|
34楼#
发布于:2004-01-10 15:38
用户被禁言,该主题自动屏蔽! |
|
35楼#
发布于:2004-01-10 15:39
那么是这样: 这是针对已有的ez系列开发产品设计的,任何成型的usb产品在应用后不需要重枚举的过程,可以说重枚举是cy考虑到开发的便捷设计的,其实usb芯片没有重枚举过程是可以的!!! |
|
36楼#
发布于:2004-01-10 15:44
用户被禁言,该主题自动屏蔽! |
|
37楼#
发布于:2004-01-10 15:47
对,EZ-USB也可以把固件代码放到EEPROM中,或者干脆就带一块FLASH存放固件,这样就不需要重枚举了,但是要想用易于升级的软配置,重枚举就是必须的了 这样考虑还是很周到的嘛! |
|
38楼#
发布于:2004-01-10 15:55
用户被禁言,该主题自动屏蔽! |
|
39楼#
发布于:2004-01-10 15:58
这一次的枚举是你的固件来响应USB请求的,所以VID/PID就是由你的固件提供的,前一次是有USB核(或者EEPROM)提供的那两次的驱动是一个驱动文件吗? |
|
|