在同一台计算机调试EZUSB和CYUSB两种驱动
项目中用到的FX2LP 68014A配套的开发环境是suite 3.4.7,自带的调试工具是control console,可以烧写内置RAM或者外置EEPROM,但是它只支持绑定cyusb.sys驱动的设备,不支持老式的ezusb.sys驱动。
项目中的上位机界面程序是基于老的驱动ezusb.sys编写的,没有用到cyusb.lib,对调试造成了麻烦。
有两种方法可以实现方便的调试流程(烧写-测试-再烧写-再测):
1、利用FX2时代的老式的调试软件ezusb control panel来烧写固件,这样68013A可以一直绑定在ezusb.sys驱动上,设备VID&PID可以固定成一个值。
评价:可能是我不太会用ezusb control panel,几次烧写EEPROM都错误,也就懒得再试。
2、每次编译完固件,首先将设备绑定在cyusb.sys,然后利用control console烧写,再然后将设备绑定在ezusb.sys,最后打开界面程序调试。为了方便,我在cyusb.sys和ezusb.sys的安装信息文件中都定义了VID_0547&PID_1002这个设备,固件中的dscr.a51自然也规定设备为VID_0547&PID_1002。每次先吧设备的驱动程序绑定在cyusb.sys上(用手动选择的方式,那样才能制定多个匹配驱动中的一个。XP会列出所有和设备VID&PID匹配的驱动安装信息.inf文件中声明过的设备名称),然后用control console烧写固件(过程中VID&PID不变),然后更新设备的驱动到ezusb.sys(仍然手动选择),然后就可以用界面程序测试了。当需要修改固件的时候,可更新设备驱动到cyusb.sys(VID&PID相同的好处凸显出来了,不需要修改任何inf文件就可以转换驱动),然后利用control console烧写。如此可以完成”烧写-调试-烧写-调试”的循环。
评价:期间XP提示需要重启,不需要理,如果调试中发现无法发现设备的话,重新拔插就可成功枚举设备并绑定到新指定的驱动。这也算是个临时抱佛脚的法子,相比反复修改inf中的VID&PID,只需要点点鼠标,比较方便。
结论:最好的方法还是利用FX2时代的基于ezusb.sys驱动的调试软件EZUSB Control Panel,这样就省去了切换驱动的麻烦。只是我还没搞清楚如何使用,也不知道EZUSB Control Panel是否支持FX2LP系列器件的烧写。我应该花时间看看EZUSB Control Panel的使用说明,或许可以简化之后的工作量。