Jtag一直是传说中的神器. 以前刷dd-wrt变砖的时候就想用它玩玩,结果当时把无线路由忙刷好了, 买回来的线就一直在抽屉中沉睡. 这几天玩嵌入系统, 把那根简陋的线找出来, 看看原理, 准备施展一番, 没想到居然左右连不上设备...今天终于连接成功, 整理一下遇到的问题. 因为是公司的设备, 还好能找到电路图.
1. JTAG插座引脚标准混乱, 每个厂家板上的接口都不一样, 有5脚的, 有10针, 14针, 20针, 脚距也有2.5和2.0之分, 更要命的针数一样了, 每个针的定义还不一样, 吐血啊. 一定要找来电路图看看清楚再接. 虽然都是弱信号(没电源)烧不坏, 接错了还是挺费神的.
2. 别相信电路板的上JTAG标志. 有的设备有两个三个JTAG接口,有的Jtag结构被隐藏到很多排线中间. 一开始看到一个口就插, 结果后来问问专家, 那个不是cpu的.
3. 别相信网上的软件, 很可能他们对驱动的支持不好. 比如h-jtag就不能识别我的mips设备, 又没log, 报个错误就退出, 看不出哪里的问题. h-jtag可以自定义并口管脚, 但还是不行. 最后还是openocd帮忙搞定, 因为还有源码可以看.
4. 用并口线, 我的因为是当初刷路由用的, 非常简陋, 能肉眼看出接线方法:
TDI: 2
TDO: 13
TCK: 3
TMS: 4
bin\openocd-0.6.0-rc2.exe -f parport.cfg 运行提示如下:
引用
Warn : Adapter driver 'parport' did not declare which transports it allows; assuming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
parport port = 0x378
adapter speed: 3 kHz
Info : clock speed 3 kHz
Warn : There are no enabled taps. AUTO PROBING MIGHT NOT WORK!!
Error: JTAG scan chain interrogation failed: all ones
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Warn : Bypassing JTAG setup events due to errors
Warn : gdb services need one or more targets defined
反正看到all ones就是没连接成功.
配置文件如下:
引用
interface parport
parport_port $_PARPORTADDR
parport_cable wiggler
adapter_khz 3
通过openocd文档可以看到它支持很多类型的并口, 但是并未给出这些并口的接线图.
网上做wiggler的电路图找来看看, 居然跟我不一样, 但是我这个鸟接法属于神马接法呢?
看看源码: http://openocd.sourceforge.net/doc/doxygen/html/parport_8c_source.html
这里面用二维数组定义了设备引脚, 但是这些1/2/4/0x10/0x40/0x80都代表什么脚呢? 特别是TDO, 我接在13脚, 怎么看都没有. 再往后看源码, 原来这些数字代表了IO操作中的bit位.
看这里: http://www.elecfans.com/baike/computer/taishiji/20100309183757.html
第二脚是并口的D0, 是电脑数据寄存器的0位, 掩码是1, 所以tck掩码2, tms掩码4, 并口13脚是select输入信号,对应状态寄存器的bit4, 掩码0x10. 所以去源码里面对应一下, 就tmd是DLC5, 这就是broadcom无线路由常用jtag连线的引脚. 上网一搜, 果然tjtag这个软件支持dlc5和wiggler, 估计早期版本缺省就是dlc5, 所以大家都用这种线救砖. 国内bjtag是不是说也是它?
现在改改配置文件:
parport_cable dlc5
然后认真的把线按照机器电路图接上去, 运行openocd, 成功:
引用
Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -expected-id 0x....... ..."
Warn : AUTO auto0.tap - use "... -irlen 5"
Warn : gdb services need one or more targets defined
好了, 后面可以慢慢把玩jtag命令, 然后加载cpu配置, 用gdb调试.
折腾了半天, 最好去淘宝买个标准的wiggler接口, 输出5根线做成散的, 想用什么接口自己插, 万能!
分享到:
相关推荐
jtag.tar.bz2
通过jtag为CPLD做软件升级
JTAG的头文件,与JTAG.c一起配合使用
ARM.JTAG.调试原理 ARM.JTAG.调试原理 ARM.JTAG.调试原理
JTAG 开发源程序,超经典。 希望对大家学习有帮助
H-JTAG.zip 驱动 与H-JTAG.zip 驱动 配套的驱动
为ARM板的flash下载工具H-JTAG。
2.6 JTAG调试接口\JTAG.Sch
AVR JTAg.pdf有利于研究JTAG
如题~~ 接口 , 下载 Xilinx_JTAG.rar
三星公司的S3C2416芯片的bsdl文件
嵌入式系统开发工具,为单步调试,映像文件下载等提供便捷
H-JTAG.rar JTAG调试 试试吧
H-JTAG V0.6.2.EXE H-JTAG V0.6.2.EXE H-JTAG V0.6.2.EXE H-JTAG V0.6.2.EXE
msp430系列文档,之JTAG的技术文档 标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 相关JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入...
Xilinx_parallel_cable_jtag.rar
JTAG 20pin封装的3D模型,可以在AD软件的PCB封装中导入这个STP文件,然后调整位置,这样PCB就可以在三维下有实体模型了。
verilog语言编写的jtag(边界扫描模块),初学的时候可以看看
这篇文章主要介绍 ARM JTAG 调试的基本原理。基本的内容包括了 TAP (TEST ACCESS PORT) 和 BOUNDARY-SCAN ARCHITECTURE 的介绍,在此基础上,结合 ARM7TDMI 详细 介绍了的 JTAG 调试原理。