U-Link神奇复活记

技术分类: 嵌入式系统  | 2009-04-14
作者:computer00: EDN China

  EDN博客精华文章  作者:computer00

  圈圈有一个山寨版的Ulink,昨天还用得好好的,可中午回来用时却发现不行了!连上电脑,提示发现新硬件,使用自动安装驱动却装不上。开始还怀疑是驱动文件丢失了,于是重装了一回Keil UV3,结果还是不行。重新启动一下计算机吧,还是不行,这回郁闷了……

  这个Ulink用的是EZ-USB AN2131芯片做的,旁边还有一个24C04,它可能存储的是程序,也可能仅仅是VID和PID而已。于是怀疑是不是这个24C04已经坏了或者程序丢失了。于是拔下这个24C04,放到编程器上读回来一看,没问题呀,数据是正确的(圈圈手头有这个Ulink的制作资料,里面有这个24C04的数据,其实里面就存的ID而已)。

  后来怀疑是不是芯片没焊好,断开了?用万用表测量,SDA和SCL都是通的呀,晕。再通电,测量SDA和SCL引脚电压,发现SDA脚的电压仅有零点几V,正常情况应该是电源电压(即3.3V)才对。然后断电测量SDA对地的电阻,只有200来欧姆,晕,应该是AN2131这个芯片的SDA脚被烧坏了(奇怪,这个脚怎么会被烧坏)。那咋办啊,芯片引脚坏了,得换个芯片吧!可是圈圈不甘心啊,这么好一个芯片,就坏了一个脚而已,换掉多可惜啊。碰碰运气吧,也许把上拉电阻减小可能会工作吧,于是并了个100欧姆的上拉电阻上去,用表一测,电压是上去了,有2.8V。但是还是无法找到驱动啊。看来这个办法不行。

  郁闷极了!冷静下来,仔细想了想这个芯片的工作过程,它首先读取24C04里面VID和PID来识别驱动的,程序并不在24C04里面,所以SDA坏了并不会影响程序的运行,而是由驱动通过USB口将固件加载到AN2131的RAM中的。所以只要想办法将驱动装上,那就好办了!于是,圈圈找到系统盘下windows/inf文件夹下的keilul.inf文件,复制了一份,将里面的“USB\VID_c251&PID_2710”修改成了“USB\VID_0547&PID_2131”,并将日期“DriverVer=09/09/2005,2.10.0.0”里面的2005改成了2009,然后连上Ulink,自动搜索驱动,安装驱动,装完后去Keil里面,哈哈,居然成功了!下载程序、调试一切正常。现在这个24C04不插也照样可以工作了。

  VID_0547和PID_2131是AN 2131芯片的默认ID号,当没有外接EEPROM或者数据不正确时,它就会使用这个默认的ID号枚举。这时候使用CYPRESS提供的开发工具应该能够操作它的,包括下载程序等等。因此,被圈圈这么一改驱动之后,就不能再使用CYPRESS的开发工具来对AN2131操作了,包括其它的AN2131开发板。如果你又要用AN2131的开发板,可以考虑换个USB口试试,或者使用时卸载驱动重新安装开发工具的驱动。

  由于是通过驱动来加载固件的,因此我们可以使用bus hound来捕捉这个过程的数据,从而可以把keil Ulink的固件搞到。然后通过CYPRESS的开发工具加载这个固件进去,或许也能够成功,但是这样使用就麻烦了,每次重新上电都要使用工具加载一次。另外,还可以对这个固件进行反汇编玩玩哦……

  总之,圈圈的Ulink死而复活了,圈圈很开心,哈哈~~~~~~~~~

2
0
免责声明:以上内容凡注明署名的,其版权属于署名者所有,转载请注明署名;所有转载的内容,EDN China发布该内容都是出于传递更多信息之目的,如果有侵犯版权事宜,请通知edneditor@gmail.com 或 010-66422242-213,我们将在第一时间删除该信息。
加载中

对文章的评论

更多评论

剩余字数:  

Google提供的广告

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组