DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 7057|回复: 4
打印 上一主题 下一主题

[转载] Mum计划之MumJTAG——ARM和Blackfin JTAG调试电缆(FT2232电缆)硬件制作

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-14 09:43:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原网址http://blog.sina.com.cn/s/blog_70bb32080100lx1h.html
距离上次更新已经3个多月了

这段时间我工作的重点在电磁兼容测试上,这东西估计没有什么人有兴趣吧?其实通过测试很简单,对策也就是那些,就是这事情很烦琐。幸好我们公司有Schaffner的快瞬、浪涌发生器和ESD枪,在我无数次的实验轰炸下,把某个我设计的产品抗扰度,快瞬由不到1000V提高到4800V(我们公司标准比国标高多了),ESD由不到1000V提高到15000V空气和8000V接触;还有另一个产品,把差模浪涌从炸机提高到1500~2000V,可惜还有待提高。累死了,光装卸时拧螺钉就拧了能有一千次,后来不行了,申请了个电动螺丝刀……做完测试,我的收获还是很大的,明白了该如何接地、如何屏蔽、如何进行内外互联;相应的,设计产品的风格也变了一些,终于自我感觉入了设计牛X产品的大门了。下一步还有个可靠性需要摸索,还需努力啊,等加速寿命试验做完了,估计就完成绝世武功目录的学习了,嘿嘿。感觉这段时间的收获就是在小公司的好处,可以接触到产品设计的每一个细节。

在业余时间,我启动了一个计划——Mum,这是一个用BF系列DSP进行视觉东东开发的计划,分为Mum、MumBurst和MumSW(SWfor Silkworm)三个阶段,哈哈,上MOP的同学们可以很快看出来含义。
MumJTAG是整个计划的第一步,这是个FT2232电缆,可以通过OpenOCD调试ARM,通过urjtag和gdbproxy调试Blackfin。MumJTAG和HubertHoegl的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的开发还不熟悉,目前没有跑程序,所以BlackfinGDB调试的结果未知。另外说一下,Blackfin的调试工具urjtag和gdbproxy编译起来太复杂了,具体过程看我后面的文章。
经过我的努力,已经解决了MumJTAG目标板上电时OpenOCD说找不到FT2232的BUG。毕竟我是做工控设备的,MumJTAG设计时考虑了脉冲群、静电对策,并对目标板交流电源冲击采取了抗扰措施;我做了几百次电源冲击测试,还用我这个天天和铁桌腿、水龙头放静电的肉身做了几十次放电测试(对比真正的ESD枪的击穿距离,我觉得放电大概有3000~4000V,好疼啊);目前来看,MumJTAGV1.1版还比较稳定,单纯从电路上看,相信MumJTAG比现有所有FT2232电缆都稳定。当然,家里的测试条件有限,不能模拟所有的情况;如果你使用MumJTAGV1.1 Gerber做的板子出现问题,欢迎与我联系:cosine@126.com。MumJTAG将不断更新,请关注EE小站。(更新日期2009年3月28日,如果你看到的是转载的文章,请从这里查看最新信息http://xianzilu.spaces.live.com/blog/cns!4201FDC93932DDAF!786.entry)。

请注意我在BOM中选取的元件具体型号,钽电容的耐压、ESR,磁珠绝对不能用电感或零欧姆电阻代替,否则稳定性会下降很多。串口插座我用了带共模滤波器的器件,当然也可以用不带滤波器的,但是这样会稍微降低稳定性。

MumJTAG原理图:http://cid-4201fdc93932ddaf.skydrive.live.com/self.aspx/Mum%e8%ae%a1%e5%88%92/MumJTAG/MumJTAG%201.1.pdf
MumJTAG Gerber:http://cid-4201fdc93932ddaf.skydrive.live.com/self.aspx/Mum%e8%ae%a1%e5%88%92/MumJTAG/MumJTAG%201.1%20Gerber.rar
MumJTAG BOM:http://cid-4201fdc93932ddaf.skydrive.live.com/self.aspx/Mum%e8%ae%a1%e5%88%92/MumJTAG/MumJTAG%201.1%20BOM.xls
Blackfin转接板原理图:http://cid-4201fdc93932ddaf.skydrive.live.com/self.aspx/Mum%e8%ae%a1%e5%88%92/MumJTAG/ARM2Blackfin%201.0.pdf
Blackfin转接板Gerber:http://cid-4201fdc93932ddaf.skydrive.live.com/self.aspx/Mum%e8%ae%a1%e5%88%92/MumJTAG/ARM2Blackfin%201.0%20Gerber.rar
Blackfin转接板BOM:http://cid-4201fdc93932ddaf.skydrive.live.com/self.aspx/Mum%e8%ae%a1%e5%88%92/MumJTAG/ARM2Blackfin%201.0%20BOM.xls

先上一张做好的MumJTAG图片:

JTAG调试电缆(FT2232电缆)硬件制作" title="Mum计划之MumJTAG——ARM和Blackfin JTAG调试电缆(FT2232电缆)硬件制作">

梳理下制作MumJTAG需要做的事情:
  • 设计FT2232的PCB或者用我提供的Gerber
  • 焊接PCB
  • 修改FT2232板载串行EEPROM的内容
  • 修改Windows驱动
我的习惯是在Windows下用虚拟机进行Linux开发,所以,我的文章不涉及Linux下驱动,请原谅。设计焊接PCB就不说了,从修改EEPROM开始。
与FT2232配套的,有一片串行EEPROM,其作用是记录用户自定义的设备名称,USB的VID和PID。在EEPROM没有编程的时候,FT2232使用厂家默认的VID0x0403和PID 0x6010。这个http://www.ftdichip.com/Resources/Utilities/MProg.pdf是官方的EEPROM编程工具MProg的使用说明,我下面提供的过程是这份说明的简化版。

在开始之前,请准备这几样东西:
FTDI的链接总有一天会失效,如果这样,请访问http://www.ftdichip.com查找。

先解压缩驱动程序,假设解压到E:\FT2232,然后连接MumJTAG到USB,提示安驱动的时候选择E:\FT2232,这部分不详细写了,相信大家都会。
驱动安好后,打开MProg,出现如下界面:

JTAG调试电缆(FT2232电缆)硬件制作" title="Mum计划之MumJTAG——ARM和Blackfin JTAG调试电缆(FT2232电缆)硬件制作">
然后选择菜单Device>Scan,如果硬件正常,窗口下方应该出现:

JTAG调试电缆(FT2232电缆)硬件制作" title="Mum计划之MumJTAG——ARM和Blackfin JTAG调试电缆(FT2232电缆)硬件制作">

然后选择菜单File>Open,打开下载的MumJTAGEEPROM信息文件"MumJTAG USB 配置文件.ept",窗口变为:

JTAG调试电缆(FT2232电缆)硬件制作" title="Mum计划之MumJTAG——ARM和Blackfin JTAG调试电缆(FT2232电缆)硬件制作">

上图这些,就是需要烧写的配置。可以不用EE小站提供的这个EEPROM信息,但请注意右边的FT2232C/DOptions中的设置,将FT2232设置为Side A为JTAG,Side B为串口;你也可以更改Vendor ID、ProductID、Manufacturer、ProductDescription为你想要的东西。然后点选菜单Device>Program,将信息下载到EEPROM中,拔掉USB插头,硬件方面的动作就完成了。
此时,MumJTAG的VID和PID已经不是FT2232默认的了,FTDI的驱动已经不可用,需要对驱动程序信息进行修改。可以重新解压缩一份驱动程序,例如解压缩到E:\MumJTAG。用文本编辑器打开E:\MumJTAG\ftdibus.inf,修改其中的FtdiHW、FtdiHW.NTamd64、Strings等几段,红色字体表示增加或有变化的部分:
...

[FtdiHw]
%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6001
%USB\VID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6010&MI_00
%USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6010&MI_01
%USB\VID_0725&PID_6010&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0725&PID_6010&MI_00
%USB\VID_0725&PID_6010&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0725&PID_6010&MI_01


[FtdiHw.NTamd64]
%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6001
%USB\VID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6010&MI_00
%USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6010&MI_01
%USB\VID_0725&PID_6010&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0725&PID_6010&MI_00
%USB\VID_0725&PID_6010&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0725&PID_6010&MI_01


...

[Strings]
Ftdi="FTDI"
DESC="CDM Driver Package"
DriversDisk="FTDI USB Drivers Disk"
USB\VID_0403&PID_6001.DeviceDesc="USB SerialConverter"
USB\VID_0403&PID_6010&MI_00.DeviceDesc="USBSerial Converter A"
USB\VID_0403&PID_6010&MI_01.DeviceDesc="USBSerial Converter B"
USB\VID_0725&PID_6010&MI_00.DeviceDesc="JTAGPort"
USB\VID_0725&PID_6010&MI_01.DeviceDesc="USBSerial Converter"

SvcDesc="USB Serial Converter Driver"
ClassName="USB"

用文本编辑器打开E:\MumJTAG\ftdibus.inf,修改其中的FtdiHW、FtdiHW.NTamd64、Strings等几段,红色字体表示增加或有变化的部分:
...

[FtdiHw]
%VID_0403&PID_6001.DeviceDesc%=FtdiPort232.NT,FTDIBUS\COMPORT&VID_0403&PID_6001
%VID_0403&PID_6010.DeviceDesc%=FtdiPort2232.NT,FTDIBUS\COMPORT&VID_0403&PID_6010
%VID_0725&PID_6010.DeviceDesc%=FtdiPort2232.NT,FTDIBUS\COMPORT&VID_0725&PID_6010


[FtdiHw.NTamd64]
%VID_0403&PID_6001.DeviceDesc%=FtdiPort232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6001
%VID_0403&PID_6010.DeviceDesc%=FtdiPort2232.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6010
%VID_0725&PID_6010.DeviceDesc%=FtdiPort2232.NTamd64,FTDIBUS\COMPORT&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 SerialPort"
VID_0403&PID_6010.DeviceDesc="USB SerialPort"
VID_0725&PID_6010.DeviceDesc="MumJTAG"
SvcDesc="USB Serial Port Driver"
SerEnum.SvcDesc="Serenum Filter Driver"

这样,驱动程序就修改好了。将MumJTAG的USB电缆连上,提示安装驱动的时候,将路径指向E:\MumJTAG。
至此,MumJTAG就制作完成了。要验证它能不能用,我们还需要使用OpenOCD、urjtag和gdbproxy,请看我后面的文章。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏1 分享分享 支持支持 反对反对
沙发
发表于 2014-10-14 09:54:42 | 只看该作者
这个FT2232功能强大,就是价格贵了些
板凳
发表于 2014-12-24 13:25:02 | 只看该作者
很好,感谢分享!
地板
发表于 2015-1-13 19:31:33 | 只看该作者
ft2232 好像可以转2个串口
5#
发表于 2015-1-13 19:38:53 | 只看该作者
Simon的Versaloon 我也有一个,现在还在用.有时对avr编程
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-23 02:12 , 耗时 0.096799 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表