望穿墙 / JTAG / [转载]Mum计划之MumJTAG

0 0

   

[转载]Mum计划之MumJTAG

2018-09-04  望穿墙
距离上次更新已经3个多月了微笑
 
这段时间我工作的重点在电磁兼容测试上,这东西估计没有什么人有兴趣吧?其实通过测试很简单,对策也就是那些,就是这事情很烦琐。幸好我们公司有Schaffner的快瞬、浪涌发生器和ESD枪,在我无数次的实验轰炸下,把某个我设计的产品抗扰度,快瞬由不到1000V提高到4800V(我们公司标准比国标高多了困惑),ESD由不到1000V提高到15000V空气和8000V接触;还有另一个产品,把差模浪涌从炸机提高到1500~2000V,可惜还有待提高。累死了,光装卸时拧螺钉就拧了能有一千次,后来不行了,申请了个电动螺丝刀……做完测试,我的收获还是很大的,明白了该如何接地、如何屏蔽、如何进行内外互联;相应的,设计产品的风格也变了一些,终于自我感觉入了设计牛X产品的大门了。下一步还有个可靠性需要摸索,还需努力啊,等加速寿命试验做完了,估计就完成绝世武功目录的学习了,嘿嘿。感觉这段时间的收获就是在小公司的好处,可以接触到产品设计的每一个细节。
 
在业余时间,我启动了一个计划——Mum,这是一个用BF系列DSP进行视觉东东开发的计划,分为Mum、MumBurst和MumSW(SW for Silkworm)三个阶段微笑,哈哈,上MOP的同学们可以很快看出来含义。
MumJTAG是整个计划的第一步,这是个FT2232电缆,可以通过OpenOCD调试ARM,通过urjtag和gdbproxy调试Blackfin。MumJTAG和Hubert Hoegl的USB to JTAG Interface电缆(http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html)是兼容的,但是速度比它快,可以到6MHz,不用它的VID和PID,所以配置文件还需要修改。至于Blackfin调试,我参考了gnICE(http://blackfin.uclinux.org/gf/project/stamp/frs/?action=FrsReleaseBrowse&frs_package_id=146),但为了和ARM调试兼容,也要修改配置。不过这对开源项目来讲,不算什么难事。转载本文,请注明来自我是一只鱼的EE小站,邮件cosine@126.com
先介绍下FT2232电缆。也许有的人不知道这个电缆,但没有搞嵌入式的人不知道Wiggler的各种Clone;FT2232电缆就可以看作Wiggler的升级版本。它的特点是,便宜(批量成本大约50~60RMB),速度快(下载速度可以达到60~70KB/s),可以配置成JTAG和串口并存的模式(非常适合笔记本电脑),开源。嘿嘿,惭愧,在我写“最低成本的ARM调试解决方案”(http://xianzilu.spaces.live.com/blog/cns!4201FDC93932DDAF!485.entry)的时候,我还不看好FT2232电缆,直到我发现它可以调试Blackfin以后,兴趣才来了。
 
MumJTAG的简要信息:
  • 使用FTDI的FT2232D为USB和JTAG协议转换芯片,协议转换过程由PC上的软件控制
  • 20针ARM JTAG接口和Blackfin转换板
  • 串口一个
  • 目标板电压范围1.6V~5.5V
  • JTAG最高频率6MHz
国内其实已经有人用FT2232做出电缆来了,比如Simon的Versaloon(http://group.ednchina.com/1065/)和淘宝有售的OpenJTAG。Versaloon看起来卖得不好,我觉得主要的问题是Simon想用擅长于GDB调试的东西去占领已经被各种成熟仿真器占领的,并不需要GDB调试的单片机开发市场,而且宣传的力度又不够。至于OpenJTAG,我觉得设计者把FT2232电缆+OpenOCD拿来赚钱这一点非常失败,首先FT2232电缆完全开源的;再者170这个价格和我刚才提供的实际成本有很大差距;另外,OpenJTAG怎么面对现在只有100块钱的盗版J-Link?当然,也许OpenJTAG设计出来的时候,盗版J-Link还没有这么便宜;但现在情况已经是这样了,OpenJTAG还卖得动么?
因此,MumJTAG从诞生起就完完全全开源,原理图、Gerber、BOM、调试代理程序映像都公开,想自己做的就自己做;我可能会开淘宝店卖空板,还没有想好。目前,在AT91RM9200和AT91SAM9263上试了下,可以用;在BF531的板子上试了下,可以用Insight修改内存数值,我对Blackfin的开发还不熟悉,目前没有跑程序,所以Blackfin GDB调试的结果未知。另外说一下,Blackfin的调试工具urjtag和gdbproxy编译起来太复杂了,具体过程看我后面的文章。
经过我的努力,已经解决了MumJTAG目标板上电时OpenOCD说找不到FT2232的BUG。毕竟我是做工控设备的吐舌,MumJTAG设计时考虑了脉冲群、静电对策,并对目标板交流电源冲击采取了抗扰措施;我做了几百次电源冲击测试,还用我这个天天和铁桌腿、水龙头放静电的肉身做了几十次放电测试(对比真正的ESD枪的击穿距离,我觉得放电大概有3000~4000V,好疼啊困惑);目前来看,MumJTAG V1.1版还比较稳定,单纯从电路上看,相信MumJTAG比现有所有FT2232电缆都稳定。当然,家里的测试条件有限,不能模拟所有的情况;如果你使用MumJTAG V1.1 Gerber做的板子出现问题,欢迎与我联系:cosine@126.com。MumJTAG将不断更新,请关注EE小站。(更新日期2009年3月28日,如果你看到的是转载的文章,请从这里查看最新信息http://xianzilu.spaces.live.com/blog/cns!4201FDC93932DDAF!786.entry)。
 
请注意我在BOM中选取的元件具体型号,钽电容的耐压、ESR,磁珠绝对不能用电感或零欧姆电阻代替,否则稳定性会下降很多。串口插座我用了带共模滤波器的器件,当然也可以用不带滤波器的,但是这样会稍微降低稳定性。
 
 
先上一张做好的MumJTAG图片:
 
[转载]Mum计划之MumJTAG——ARM和Blackfin <wbr>JTAG调试电缆( 
 
梳理下制作MumJTAG需要做的事情:
  • 设计FT2232的PCB或者用我提供的Gerber
  • 焊接PCB
  • 修改FT2232板载串行EEPROM的内容
  • 修改Windows驱动
我的习惯是在Windows下用虚拟机进行Linux开发,所以,我的文章不涉及Linux下驱动,请原谅。设计焊接PCB就不说了,从修改EEPROM开始。
与FT2232配套的,有一片串行EEPROM,其作用是记录用户自定义的设备名称,USB的VID和PID。在EEPROM没有编程的时候,FT2232使用厂家默认的VID 0x0403和PID 0x6010。这个http://www.ftdichip.com/Resources/Utilities/MProg.pdf是官方的EEPROM编程工具MProg的使用说明,我下面提供的过程是这份说明的简化版。
 
在开始之前,请准备这几样东西:
FTDI的链接总有一天会失效,如果这样,请访问http://www.ftdichip.com查找。
 
先解压缩驱动程序,假设解压到E:FT2232,然后连接MumJTAG到USB,提示安驱动的时候选择E:FT2232,这部分不详细写了,相信大家都会。 
驱动安好后,打开MProg,出现如下界面:
 
[转载]Mum计划之MumJTAG——ARM和Blackfin <wbr>JTAG调试电缆(
 
 然后选择菜单Device>Scan,如果硬件正常,窗口下方应该出现:
 
[转载]Mum计划之MumJTAG——ARM和Blackfin <wbr>JTAG调试电缆( 
 
然后选择菜单File>Open,打开下载的MumJTAG EEPROM信息文件"MumJTAG USB 配置文件.ept",窗口变为:
 
[转载]Mum计划之MumJTAG——ARM和Blackfin <wbr>JTAG调试电缆( 
 
上图这些,就是需要烧写的配置。可以不用EE小站提供的这个EEPROM信息,但请注意右边的FT2232C/D Options中的设置,将FT2232设置为Side A为JTAG,Side B为串口;你也可以更改Vendor ID、Product ID、Manufacturer、Product Description为你想要的东西。然后点选菜单Device>Program,将信息下载到EEPROM中,拔掉USB插头,硬件方面的动作就完成了。
此时,MumJTAG的VID和PID已经不是FT2232默认的了,FTDI的驱动已经不可用,需要对驱动程序信息进行修改。可以重新解压缩一份驱动程序,例如解压缩到E:MumJTAG。用文本编辑器打开E:MumJTAGftdibus.inf,修改其中的FtdiHW、FtdiHW.NTamd64、Strings等几段,红色字体表示增加或有变化的部分:
...
 
[FtdiHw]
%USBVID_0403&PID_6001.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6001
%USBVID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6010&MI_00
%USBVID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NT,USBVID_0403&PID_6010&MI_01
%USBVID_0725&PID_6010&MI_00.DeviceDesc%=FtdiBus.NT,USBVID_0725&PID_6010&MI_00
%USBVID_0725&PID_6010&MI_01.DeviceDesc%=FtdiBus.NT,USBVID_0725&PID_6010&MI_01
 
[FtdiHw.NTamd64]
%USBVID_0403&PID_6001.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6001
%USBVID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6010&MI_00
%USBVID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NTamd64,USBVID_0403&PID_6010&MI_01
%USBVID_0725&PID_6010&MI_00.DeviceDesc%=FtdiBus.NTamd64,USBVID_0725&PID_6010&MI_00
%USBVID_0725&PID_6010&MI_01.DeviceDesc%=FtdiBus.NTamd64,USBVID_0725&PID_6010&MI_01
 
...
 
[Strings]
Ftdi="FTDI"
DESC="CDM Driver Package"
DriversDisk="FTDI USB Drivers Disk"
USBVID_0403&PID_6001.DeviceDesc="USB Serial Converter"
USBVID_0403&PID_6010&MI_00.DeviceDesc="USB Serial Converter A"
USBVID_0403&PID_6010&MI_01.DeviceDesc="USB Serial Converter B"
USBVID_0725&PID_6010&MI_00.DeviceDesc="JTAG Port"
USBVID_0725&PID_6010&MI_01.DeviceDesc="USB Serial Converter"

SvcDesc="USB Serial Converter Driver"
ClassName="USB"
用文本编辑器打开E:MumJTAGftdibus.inf,修改其中的FtdiHW、FtdiHW.NTamd64、Strings等几段,红色字体表示增加或有变化的部分:
...
 
[FtdiHw]
%VID_0403&PID_6001.DeviceDesc%=FtdiPort232.NT,FTDIBUSCOMPORT&VID_0403&PID_6001
%VID_0403&PID_6010.DeviceDesc%=FtdiPort2232.NT,FTDIBUSCOMPORT&VID_0403&PID_6010
%VID_0725&PID_6010.DeviceDesc%=FtdiPort2232.NT,FTDIBUSCOMPORT&VID_0725&PID_6010
 
[FtdiHw.NTamd64]
%VID_0403&PID_6001.DeviceDesc%=FtdiPort232.NTamd64,FTDIBUSCOMPORT&VID_0403&PID_6001
%VID_0403&PID_6010.DeviceDesc%=FtdiPort2232.NTamd64,FTDIBUSCOMPORT&VID_0403&PID_6010
%VID_0725&PID_6010.DeviceDesc%=FtdiPort2232.NTamd64,FTDIBUSCOMPORT&VID_0725&PID_6010
 
...
 
[Strings]
FTDI="FTDI"
DESC="CDM Driver Package"
DriversDisk="FTDI USB Drivers Disk"
PortsClassName = "Ports (COM & LPT)"
VID_0403&PID_6001.DeviceDesc="USB Serial Port"
VID_0403&PID_6010.DeviceDesc="USB Serial Port"
VID_0725&PID_6010.DeviceDesc="MumJTAG"
SvcDesc="USB Serial Port Driver"
SerEnum.SvcDesc="Serenum Filter Driver"
这样,驱动程序就修改好了。将MumJTAG的USB电缆连上,提示安装驱动的时候,将路径指向E:MumJTAG。
至此,MumJTAG就制作完成了。要验证它能不能用,我们还需要使用OpenOCD、urjtag和gdbproxy,请看我后面的文章。
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多