choce
驱动牛犊
驱动牛犊
  • 注册日期2006-04-24
  • 最后登录2007-08-02
  • 粉丝0
  • 关注0
  • 积分590分
  • 威望60点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
阅读:1257回复:3

修改firmware后找不到USB驱动了!

楼主#
更多 发布于:2007-02-05 14:56
  我用CYPRESS的ez-usb fx2开发板做一个项目,随板子附带有几个例子,其中有一个是测试bulk传输的,用过fx2的都应该知道安装完开发包后在Cypress\USB\Examples\FX2有一个bulkloop例子,我这个例子的firmware部分跟这个bulkloop完全一样,只是多了一个PC端的application方便测试。
    在原firmware中2,4,6,8四个endpoint都用到了,2,4作为out endpoint,6,8作为 in endpoint,然后2和6,4和8互相传递数据。
    现在我想只用2和6,我在TD_init()中作了如下修改:
  SYNCDELAY;                    // see TRM section 15.14
  EP2CFG = 0xA0;//原来为 0xA2;
  SYNCDELAY;                    
  EP4CFG = 0x20;//原来为 0xA0;
  SYNCDELAY;                    
  EP6CFG = 0xE0;//原来为 0xE2;
  SYNCDELAY;                    
  EP8CFG = 0x60;//原来为 0xE0;

   在TD_poll()中我注销掉了4和8作交换的代码:
/*if(!(EP2468STAT & bmEP4EMPTY))
  { // check EP4 EMPTY(busy) bit in EP2468STAT (SFR), core set's this bit when FIFO is empty
     if(!(EP2468STAT & bmEP8FULL))
     {  // check EP8 FULL(busy) bit in EP2468STAT (SFR), core set's this bit when FIFO is full
        APTR1H = MSB( &EP4FIFOBUF );
        APTR1L = LSB( &EP4FIFOBUF );

        AUTOPTRH2 = MSB( &EP8FIFOBUF );
        AUTOPTRL2 = LSB( &EP8FIFOBUF );

        count = (EP4BCH << 8) + EP4BCL;

        // loop EP4OUT buffer data to EP8IN
        for( i = 0x0000; i < count; i++ )
        {
           // setup to transfer EP4OUT buffer to EP8IN buffer using AUTOPOINTER(s)
           EXTAUTODAT2 = EXTAUTODAT1;
        }
        EP8BCH = EP4BCH;  
        SYNCDELAY;  
        EP8BCL = EP4BCL;        // arm EP8IN
        SYNCDELAY;                    
        EP4BCL = 0x80;          // re(arm) EP4OUT
     }
  }*/
剩下的我就只改动了dscr.a51:将number of endpoint由4改为2,并注销掉了4和8的endpoint descriptor

这就是所有的改动,但是编译后刷到板子上就找不到驱动了,我实在想不到还要修改那里,或是改的不对,还请高人指教!
SEIZE THE DAYS!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-02-06 15:02
没有用的端点必须关掉
choce
驱动牛犊
驱动牛犊
  • 注册日期2006-04-24
  • 最后登录2007-08-02
  • 粉丝0
  • 关注0
  • 积分590分
  • 威望60点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-02-06 16:46
可我已经关掉了阿:EP4CFG = 0x20;//原来为 0xA0;         EP8CFG = 0x60;//原来为 0xE0;
并且dscr.a51中也删除了4和8的描述
SEIZE THE DAYS!
onizuka2070
驱动牛犊
驱动牛犊
  • 注册日期2006-10-18
  • 最后登录2007-08-07
  • 粉丝0
  • 关注0
  • 积分430分
  • 威望44点
  • 贡献值0点
  • 好评度43点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-02-06 20:25
你可以试试
EP2CFG=0x21;具体你可以看手册,那个1是invalid的意思

还有既然你不用端点4、8,那你就该不能对4、8端点的寄存器进行访问,包括设置。
游客

返回顶部