40楼#
发布于:2004-01-10 16:02
用户被禁言,该主题自动屏蔽! |
|
41楼#
发布于:2004-01-10 16:06
[quote]这一次的枚举是你的固件来响应USB请求的,所以VID/PID就是由你的固件提供的,前一次是有USB核(或者EEPROM)提供的那两次的驱动是一个驱动文件吗? [/quote] 知道了,如果EZUSB的设备要升级的话,就改变EEPROM里的PID/VID,然后可以在主机上寻找新的驱动程序。 |
|
|
42楼#
发布于:2004-01-10 16:10
用户被禁言,该主题自动屏蔽! |
|
43楼#
发布于:2004-01-10 16:33
[quote]现在关于枚举和重枚举我有以下几个疑问: 如果是自己开发,自定义PID和VID,那么通过.inf引导找到驱动中的对应来驱动啊!这样你还是要写驱动的! [/quote] 主机通过PID/VID来找到INF文件,该文件把设备的PID/VID绑定到特定的特定的USB设备驱动程序上,那我把INF文件中的产品和生产商的数据改一下,不就行了吗? |
|
|
44楼#
发布于:2004-01-10 16:37
用户被禁言,该主题自动屏蔽! |
|
45楼#
发布于:2004-01-10 16:51
和升级没有关系 :),我的工作是实现连在设备上的硬盘与主机通信,应该是个Mass Storage的通用设备,windows2000下应该有相应的设备驱动程序,所以我想我是不是不用作设备驱动了?
|
|
|
46楼#
发布于:2004-01-10 16:53
用户被禁言,该主题自动屏蔽! |
|
47楼#
发布于:2004-01-10 16:59
如果你作成Mass Storage标准设备,当然不用做驱动了,WIN2000自带他的标准驱动,和HID设备一样,随便买个鼠标键盘一插就OK 那固件还是要写的 :mad: |
|
|
48楼#
发布于:2004-01-10 17:00
用户被禁言,该主题自动屏蔽! |
|
49楼#
发布于:2004-01-10 17:33
[quote]这一次的枚举是你的固件来响应USB请求的,所以VID/PID就是由你的固件提供的,前一次是有USB核(或者EEPROM)提供的那两次的驱动是一个驱动文件吗? [/quote] 其实只要你一开始提供了PID,VID,其实一次枚举就可以了! |
|
50楼#
发布于:2004-01-10 17:34
[quote][quote]这一次的枚举是你的固件来响应USB请求的,所以VID/PID就是由你的固件提供的,前一次是有USB核(或者EEPROM)提供的那两次的驱动是一个驱动文件吗? [/quote] 知道了,如果EZUSB的设备要升级的话,就改变EEPROM里的PID/VID,然后可以在主机上寻找新的驱动程序。 [/quote] 只改固件! |
|
51楼#
发布于:2004-01-10 17:35
[quote]如果你作成Mass Storage标准设备,当然不用做驱动了,WIN2000自带他的标准驱动,和HID设备一样,随便买个鼠标键盘一插就OK 那固件还是要写的 :mad: [/quote] 这可是怎么都省不了的啊! :D |
|
52楼#
发布于:2004-01-10 17:38
用户被禁言,该主题自动屏蔽! |
|
53楼#
发布于:2004-01-10 17:44
全省了就没得做的了 ^_^,到也省事了!!! |
|
54楼#
发布于:2004-01-10 17:48
用户被禁言,该主题自动屏蔽! |
|
55楼#
发布于:2004-01-10 23:21
帮我看看这个问题:
[quote][quote]现在关于枚举和重枚举我有以下几个疑问: 如果是自己开发,自定义PID和VID,那么通过.inf引导找到驱动中的对应来驱动啊!这样你还是要写驱动的! [/quote] 主机通过PID/VID来找到INF文件,该文件把设备的PID/VID绑定到特定的特定的USB设备驱动程序上,那我把INF文件中的产品和生产商的数据改一下,不就行了吗? [/quote] |
|
|
56楼#
发布于:2004-01-10 23:31
其实只要你一开始提供了PID,VID,其实一次枚举就可以了! 第二次:“如果用户的固件(EZ-USB)需要重新枚举,和以上步骤一样,不同的是这一次用户一般会提供自己的VID/PID和上次不一样,就会装入不同的驱动,但是枚举过程是完全一样的。。。” 这两句话看上去矛盾啊! :oflytomoon的意思是不是我第一次提供的PID/VID和固件里提供的一样的情况下,一次枚举就可以了,因为即使枚举两次,装入的驱动程序也是同一个文件,重枚举就没有必要了,重枚举的意义就在于它使设备易于升级,如果没有升级的要求,可以不用. |
|
|
57楼#
发布于:2004-01-11 08:59
[quote]其实只要你一开始提供了PID,VID,其实一次枚举就可以了! 第二次:“如果用户的固件(EZ-USB)需要重新枚举,和以上步骤一样,不同的是这一次用户一般会提供自己的VID/PID和上次不一样,就会装入不同的驱动,但是枚举过程是完全一样的。。。” 这两句话看上去矛盾啊! :oflytomoon的意思是不是我第一次提供的PID/VID和固件里提供的一样的情况下,一次枚举就可以了,因为即使枚举两次,装入的驱动程序也是同一个文件,重枚举就没有必要了,重枚举的意义就在于它使设备易于升级,如果没有升级的要求,可以不用. [/quote] 就是说你的设备的VID和PID定下来以后,一次枚举就够了,不用重枚举了就。 :D |
|
58楼#
发布于:2004-01-11 10:13
那上一个问题呢? :o
|
|
|
59楼#
发布于:2004-01-12 09:15
俺也来说一说,班门弄斧,各位大侠见笑了。
枚举步骤: 1、接入USB总线,此时设备的地址为0,USB协议要求它必须为0。 2、USB控制器发现一个新设备,报告系统、同时打开该端口(硬件端口),系统通过地址0发送GetDescriptor命令,读取设备的设备描述符。如果在一瞬间有多个新设备插入(极端情况下),那么控制器通过一个一个的打开硬件端口,也就说等一个设备枚举完成后才打开另一个等待枚举的新设备,每个设备在他连接的端口没有打开前,是接受不到USB总线上的数据的。通过这种方法可以避免同时连接多个设备所有可能引来的冲突。 3、系统向新设备发送SetAddress命令,这样设备就有了新地址,后面的操作都是通过新地址进行的。 4、然后,系统会通过一系列命令从设备读取设备描述符(步骤2读取的设备描述符是不完全的只有8个字节,好像)、配置描述符(包括所有配置、接口、端点描述符)、字符串描述符。 5、此时,系统已经知道设备的一切信息,PID VID在设备描述符种返回设备,系统据此加载驱动程序。 在步骤2、3、4中,对命令的响应,如果没有使用EZ-USB系列,例如使用D12,则肯定要由MCU响应,固件固化在硬件,所以只需要一次枚举过程。 如果使用EZ-USB,则系统上电后他查找由没有连接EEPROM,如果在地址1(具体的地址极不清了)按照固定的格式联接了大容量的EEPROM(固件就在EEPROM中),芯片把其中的内容(也就是你的固件调入芯片内),有你的固件响应命令,此时只需要一次枚举; 如果没有,则如果在地址0按照固定的格式联接了一个256字节的EEPROM(其内容是设备、培植、接口、端点、字符串描述符),则把这些信息调入芯片、返回系统,此时由EZ-USB内固化的一些程序响应命令; 如果没有连接EEPROM芯片,则把芯片内固化的描述符返回系统。 对应后两种情况可能需要重枚举,重枚举的步骤为: A、从地址0读取设备描述符(此时由固化的CY固件响应); B、设置地址; C、从新地址读取设备、配置端口地址描述负; D、驱动程序(CY控制面板)下载你的固件; E、你的固件开始运行; F、断开原设备、地址回0,等一会儿后重新连接; G、从地址0读取设备描述符(此时由你的固件响应); H、设置地址; I、从新地址读取设备、配置端口地址描述负; J、加载你的驱动。 成功。 |
|
|