华为光猫HG8245H救砖笔记③探查JTAG并使能JTAG

前言

华为一些老型号光猫的JTAG接口,网上可以找的到(见链接),是10 Pin接口的JTAG,如下图:

在HG8245H上找到外观一样的接口:


根据图示连接TCK、TDO、TMS、TDI、GND后,使用zJtag尝试探测JTAG菊花链上挂了多少设备,就能看出JTAG接口是否正确了。

配置zJtag使用FT2232系列接口后,发现无法探测到JTAG菊花链的数量。但是换别的板子的JTAG接口就可以。断定HG8245H的JTAG位置不正确,或者其他原因导致芯片内部的调试逻辑部分未启用。

看走线,识接口

为了弄清楚,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。

《华为光猫HG8245H救砖笔记③探查JTAG并使能JTAG》有3条评论

  1. 博主真是仔细认真。。。NC 脚也要慢慢测,一半肉眼都能看出 NC 了吧。
    请问 JTAG 调通了吗?我现在也在搞华为猫的 JTAG。

    回复

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据