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根线做成散的, 想用什么接口自己插, 万能!
分享到:
相关推荐
ARM仿真代理软件 使用WIGGLER并口线(几块钱搞定)就可以全系列ARM7.ARM9仿真。我一直用这个。
- 将制作好的文件系统映像烧录到开发板的存储介质(如NAND Flash)中,这通常需要通过JTAG、USB或串口连接完成。 9. **启动和验证**: - 启动JZ2440开发板,如果一切顺利,开发板应该能够加载新的文件系统并运行...
通过 JIC 方式烧写 AS 芯片,可以省略掉 AS 插座,电路板上一个 JTAG 插座就搞定了,还省去了插拔 USB-Blaster 电缆的麻烦。因此实际JIC 方式几乎可以完全代替上一小节介绍的直接烧写 AS 芯片的方式。由于JTAG下载...
CPLD 在线加载技术浅谈 CPLD 在线加载技术浅谈是一种复杂可...JTAG 1149.1 是 IEEE 制定的 JTAG 原始标准,IEEE 1532 是一个符合 IEEE1149.1 标准的超级,用来对在线系统配置,主要用于对闪存、嵌入式控制器的存储器。
ISP和IAP都是不需要把芯片从板子上拔出来,就达到了用PC-MCU的编程接口(JTAG、串口、双绞线、SPI等)搞定新版本的升级的目的。ISP和IAP的实际使用非常广泛,ISP 一般是通过单片机专用的串行编程接口对单片机内部的...
【描述】"top853让你轻松搞定单片机程序烧写的问题"意味着这款烧写器设计得非常用户友好,减少了在编程和调试过程中可能遇到的复杂性。对于初学者来说,它是一条通往单片机领域的便捷通道,因为它简化了通常较为繁琐...
ISP(In System Programming)是一种在系统编程的方式,即在板级上进行编程,不...ISP 和 IAP 都是不需要把芯片从板子上拔出来,就达到了用 PC-MCU 的编程接口(JTAG、串口、双绞线、SPI 等)搞定新版本的升级的目的。
这个跟第一点也是相辅相成的,因为他们的下载接口全都是Jtag,至少10个引脚。 三、外设少,绝大多数最小系统上除了一个LED灯啥都没有,少数有蓝牙或者是OLED的,基本没有两者都有的 于是乎根据网上的原理图,做了个...