圈圈有一个山寨版的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文件,复制了一份, 将里面的“USBVID_c251&PID_2710”修改成了“USBVID_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死而复活了,圈圈很开心,哈哈~~~~~~~~~ |