Ulink神奇复活记

[复制链接]
3461|2
 楼主| computer00 发表于 2009-4-14 20:11 | 显示全部楼层 |阅读模式
圈圈有一个山寨版的Ulink,昨天还用得好好的,可中午回来用时却发现不行了!<br />连上电脑,提示发现新硬件,使用自动安装驱动却装不上。开始还怀疑是驱动文件<br />丢失了,于是重装了一回Keil&nbsp;UV3,结果还是不行。重新启动一下计算机吧,还是<br />不行,这回郁闷了……<br /><br />这个Ulink用的是EZ-USB&nbsp;AN2131芯片做的,旁边还有一个24C04,它可能存储的是程序,<br />也可能仅仅是VID和PID而已。于是怀疑是不是这个24C04已经坏了或者程序丢失了。<br />于是拔下这个24C04,放到编程器上读回来一看,没问题呀,数据是正确的(圈圈<br />手头有这个Ulink的制作资料,里面有这个24C04的数据,其实里面就存的ID而已)。<br /><br />后来怀疑是不是芯片没焊好,断开了?用万用表测量,SDA和SCL都是通的呀,晕。<br />再通电,测量SDA和SCL引脚电压,发现SDA脚的电压仅有零点几V,正常情况应该是<br />电源电压(即3.3V)才对。然后断电测量SDA对地的电阻,只有200来欧姆,晕,应该<br />是AN2131这个芯片的SDA脚被烧坏了(奇怪,这个脚怎么会被烧坏)。那咋办啊,芯片<br />引脚坏了,得换个芯片吧!可是圈圈不甘心啊,这么好一个芯片,就坏了一个脚而已,<br />换掉多可惜啊。碰碰运气吧,也许把上拉电阻减小可能会工作吧,于是并了个100欧姆<br />的上拉电阻上去,用表一测,电压是上去了,有2.8V。但是还是无法找到驱动啊。看来<br />这个办法不行。<br /><br />郁闷极了!冷静下来,仔细想了想这个芯片的工作过程,它首先读取24C04里面VID和<br />PID来识别驱动的,程序并不在24C04里面,所以SDA坏了并不会影响程序的运行,而是<br />由驱动通过USB口将固件加载到AN2131的RAM中的。所以只要想办法将驱动装上,那就好<br />办了!于是,圈圈找到系统盘下windows/inf文件夹下的keilul.inf文件,复制了一份,<br />将里面的“USBVID_c251&PID_2710”修改成了“USBVID_0547&PID_2131”,并将日期<br />“DriverVer=09/09/2005,2.10.0.0”里面的2005改成了2009,然后连上Ulink,自动<br />搜索驱动,安装驱动,装完后去Keil里面,哈哈,居然成功了!下载程序、调试一切<br />正常。现在这个24C04不插也照样可以工作了。<br /><br />VID_0547和PID_2131是AN&nbsp;2131芯片的默认ID号,当没有外接EEPROM或者数据不正确时,<br />它就会使用这个默认的ID号枚举。这时候使用CYPRESS提供的开发工具应该能够操作它<br />的,包括下载程序等等。因此,被圈圈这么一改驱动之后,就不能再使用CYPRESS的开发<br />工具来对AN2131操作了,包括其它的AN2131开发板。如果你又要用AN2131的开发板,可以<br />考虑换个USB口试试,或者使用时卸载驱动重新安装开发工具的驱动。<br /><br />由于是通过驱动来加载固件的,因此我们可以使用bus&nbsp;hound来捕捉这个过程的数据,<br />从而可以把keil&nbsp;Ulink的固件搞到。然后通过CYPRESS的开发工具加载这个固件进去,<br />或许也能够成功,但是这样使用就麻烦了,每次重新上电都要使用工具加载一次。<br />另外,还可以对这个固件进行反汇编玩玩哦……<br /><br />总之,圈圈的Ulink死而复活了,圈圈很开心,哈哈~~~~~~~~~
icecut 发表于 2009-4-14 21:04 | 显示全部楼层

很详细.
古道热肠 发表于 2009-4-15 15:54 | 显示全部楼层

哈哈,有趣,照您这法,还能省成本

哈哈,Ulink2似乎是用的LPC214X.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

247

主题

14716

帖子

213

粉丝
快速回复 在线客服 返回列表 返回顶部