本帖最后由 nightseas 于 2013-1-22 13:30 编辑
看到大家都在分享自己的经验,我也来打个酱油~~
对于日常的嵌入式开发来说,我们一般会把JTAG作为下载代码和调试软件的接口。有时候为了减少PCB面积或方便升级,往往使用SWI、ISP、IAP等接口或下载方式代替JTAG。
实际上,JTAG产生的最初目的是用于芯片测试,即Boundary-scan技术,常见规范有IEEE1149.1、IEEE1149.6和IEEE1532等,通过与规范兼容的设备,即可访问芯片的内部节点或I/O。在一个硬件设备完成PCB制作和器件焊接后,有些攻城狮一旦成功下载了程序就开始软件调试,而调试不通时往往无法确定是硬件问题还是软件问题。
这里我们就可以使用TopJTAG公司的开发的一款小软件JTAGProbe,通过手中的各种仿真器(如USB-Blaster、J-Link等)在软件调试前轻松实现硬件检测,保证硬件电路的正确性。比起很多专业的大型软件,Probe的功能可谓简陋,但其小巧简洁的特性,正适合作为攻城狮的手边小工具,提高工作效率。
这个工具可以在TopJTAG官网上下载: http://www.topjtag.com/files/TopProbe-Setup-1.7.5.exe
Probe为共享软件有20天使用期限,售价100刀!这让我们这些穷苦大众如何承受,于是兔子在国外网站上搜到了一个和谐工具(老外里也有很多充满了自由共享精神的高手啊)。当然了,和谐工具只用于学习,如果喜欢请支持正版云云……
安装完成后运行软件,可以看到它的界面非常简洁。
新建一个工程,选择仿真器。
Probe支持很多主流仿真器,如下图:
这里以兔子手里的USB-Blaster和EPM240开发板为例,选择USB-Blaster后,软件会自动检测当前连接的设备。
Next之后软件会自动扫描目标板的JTAG链,显示链上的设备ID和生产商。
然后我们需要为所需测试的设备指定一个BSDL文件,该文件根据IEEE规范定义了设备信息。
BSDL文件可以从芯片生产商那里获得,比如Altera MAX II的BSDL页面为: http://www.altera.com/support/devices/bsdl/11491/bsd-11491.html
ST的STM32系列BSDL下载地址为: http://www.st.com/internet/com/SOFTWARE_RESOURCES/HW_MODEL/BSDL_MODEL/stm32bsdl.zip
选则好BSDL之后可继续。
Probe已经将芯片的封装和I/O信息显示出来了。
在软件左侧一栏点击右键,将I/O添加到波形窗口中。
同时由于我们要做的是外部硬件电路的检测,需要点击工具栏的Instruction按钮,选择EXTEST模式。这里的SAMPLE模式可监测芯片状态而不干扰其正常运行,INTEST模式测试芯片内部逻辑,而对于JTAG链上一些可以忽略的设备可选择BYPASS。
在波形窗口中对引脚输出电平置0、置1或反转。
点击运行就可以查看效果了,同样的在运行中也可以改变引脚状态。
效果图如下,兔子用JTAG点亮了板子上的左边4个LED。
【Tips】 1. 关于软件的性能,我还做了个小测试,结果表明Probe的时间分辨率也就是毫秒级的,较高频率的信号难以应付,这是检测板上50MHz有源晶振的结果。>_< 这时候恐怕只能在Watch窗口中看看信号沿计数值了。
2. I/O可以手动设置名称,如果有ISE的ucf约束文件或者Quartus II的qsf文件,可以导入进来自动获取I/O名称。
3. 另外,如果JTAG链上有多个设备,不知道是否可以通过设备之间互访来检测电路,如果可以并配以自动化脚本,那就太Happy了。
|