前言
华为一些老型号光猫的JTAG接口,网上可以找的到(见链接),是10 Pin接口的JTAG,如下图:
在HG8245H上找到外观一样的接口:
根据图示连接TCK、TDO、TMS、TDI、GND后,使用zJtag尝试探测JTAG菊花链上挂了多少设备,就能看出JTAG接口是否正确了。
配置zJtag使用FT2232系列接口后,发现无法探测到JTAG菊花链的数量。但是换别的板子的JTAG接口就可以。断定HG8245H的JTAG位置不正确,或者其他原因导致芯片内部的调试逻辑部分未启用。
看走线,识接口
为了弄清楚,JTAG连接不上的原因到底是找错了位置,还是其他原因导致芯片内部的调试逻辑部分未启用。需要观察JTAG引脚走线,如果走线不正常,那也就不必浪费时间在这个假JTAG接口上了。
正面JTAG接口过孔图:
简单梳理下数据:
- TCK对应①;TDO对应②;TMS对应③;Pin 7 (未知引脚)对应④;TDI对应⑤、⑥
- ⑦、⑧号过孔,直连vRef即VCC(3.3 V)。
- ③、⑤号过孔通过R1523(4.7 KΩ)、R1522(4.7 KΩ),上拉到VCC。
- ①、④号过孔通过R1590(1 KΩ)、R1586(1 KΩ),下拉到GND。
查阅相关资料,在百度百科JTAG词条下面发现一段话:
根据相关数据手册中的说明,TRST、TDI、TMS引脚上需要接一个10KΩ的上拉电阻,而TCK需要接一个10KΩ的下拉电阻。
虽然以上内容,并不适用于所有JTAG接口的配置,但至少指明了一种情况。
这里HG8245H的TMS、TDI的确是上拉到VCC的,TCK也是下拉到GND。
这样看来,JTAG接口似乎没有找错。那问题可能是其他原因导致芯片内部的调试逻辑部分未启用。
搜索了下相关的资料,得知某些产品的JTAG,还存在一个DBGSEL的引脚,该引脚在CPU复位时需要上拉到VCC,才能使能JTAG调试逻辑。
HG8245H的10 Pin接口,排除掉2个GND,1个VCC,4个JTAG引脚,还剩3个。
使用万用表测量了下这3个引脚的电压,Pin 7的电压在0.12 V左右,Pin 6,Pin 8没有电压。并且用万用表的电流档,短接VCC与Pin 6、Pin 8后发现没有电流通过。断定Pin 6、Pin 8为NC。
尝试将Pin 7直接连到VCC,然后给HG8245H上电。UART里只输出了一遍HuaWei StartCode的报错信息,并且zJtag也成功检查到了JTAG菊花链。至此使能HG8245H的JTAG调试逻辑成功实现。
整理后的10 Pin定义图:
后记:
实际上要想通过JTAG调试HG8245H,不光需要上拉DBGSEL,还需要CPU内部使能JTAG调试,因为我的HG8245H搞坏了UBoot。所以当StartCode找不到UBoot引导,并且检测到DBGSEL上拉时,才使CPU进入调试状态。以上为本人推测,可能不一定准确。
补充(2017/03/04):
经过一段时间的调试分析,得出结论,CPU上电后JTAG应该是默认启用的。StartCode也不会关闭JTAG。关闭JTAG是UBoot干的。通过往一个内存地址写入1来实现禁用JTAG。
博主真是仔细认真。。。NC 脚也要慢慢测,一半肉眼都能看出 NC 了吧。
请问 JTAG 调通了吗?我现在也在搞华为猫的 JTAG。
通了啊,你看后续的文章。
博主的帖子写的非常仔细,需要认真阅读(个人还在理解中)。
另外能不能帮我看下帖子。
https://www.right.com.cn/forum/thread-1786304-1-1.html
看看怎么加wndr 4300 v1 gpio口的电阻
先谢了