asslittle
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1463回复:8

一个固件问题,很奇怪

楼主#
更多 发布于:2004-05-09 08:48
我的驱动是用ds写的,
固件是由cypress提供的.

在SetupCommand中,  
switch(SETUPDAT[1]),      
诸如case SC_GET_DESCRIPTOR等等的case都进不去,
但我自己定义了一个case VR_SET_FREQUENCY(为0f),却可以进去.

不知道是哪里的问题,还请高手们指点!
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-09 12:40
用户被禁言,该主题自动屏蔽!
asslittle
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-09 13:23
枚举应该是在我插上板子的时候就完成了.

然后我用keil调试我的固件程序(是cypress提供的,我改了一些),应用程序发出DeviceIoControl后,可以得到设备描述信息,配置描述信息,但就是没进入固件的case SC_GET_DESCRIPTOR中,很奇怪.

之前我向板子里先后down了loader和monitor2个固件程序(也是cypress开发包带的).
难道是发出get descriptor的请求都让monitor这个固件执行了(我只能看到16进制的内容,不知道原码都实现了什么功能)?

keil在调试固件的时候,是不是把这些程序down到片子里去?如果是,那先前已经down到片子里的固件还在不在?会不会被覆盖掉?
asslittle
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-10 09:52
asslittle
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-13 11:06
我现在换回cypress的驱动与control panel,然后调cypress提供的例子,发get descriptor等请求后,仍然进不去固件相应的代码中,就没产生中断!

有人遇到过这种情况吗?
kobebasket
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-13 15:58
我遇到过,你用get descriptor得到的只是默认设备的描述符而并非你的设备描述符,你的固件根本就没有下载进去怎么可能跑起来,也就是说没有进行重枚举只是进行了枚举啊!还有就是下得例程有问题,例程里面没有需要的对RAM进行读写操作这个请求,当然就下不进去啦!
kobebasket
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-13 16:05
keil在调试固件的时候,是不是把这些程序down到片子里去?如果是,那先前已经down到片子里的固件还在不在?会不会被覆盖掉?


回复:1)是
      2)不在了,因为被覆盖掉了,但是如果你插拔器件,你会发现,又会回到原来默认设备的固件,这些是芯片设计人搞的,你不用搞那么清
    

asslittle
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-13 22:52
感谢!

原来我以为一开始外接eeprom时,才需要重举,看来还是理解错误。

但改过后,仍然不对。重举没成功,设备变为了unknown device。
我已经把dscr.a51中的vid、pid改了,为什么还会没重举成功呢?

kobe,你以前是怎么改成功的?
kobebasket
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-14 09:33
无论你的固件在主机里,还是EEPROM里面,最终都需要被引导到RAM的程序区,也只有此固件程序执行完之后才算真正得到了自己的设备,然后进行重枚举吧!
游客

返回顶部