转载请注明原帖链接和作者!
最近重新入手WNDR4300v1进行折腾,主要是为了测试完全重写了 flash 驱动框架的 breed 的功能是否正常。因为已经入手 TRACE32,因此就想把 JTAG 功能用上。
根据 WNDR4300v1 的 GPIO 定义可知,JTAG 所在的 4 个 GPIO, 0~3 已经全部被 LED 占用了,因此第一步就是断开 GPIO 到 LED 的连接,改为到 JTAG 插座的连接。
经过一番测量,最终找出了 4 个连接 LED 的电阻,和 4 个连接 JTAG 的空电阻焊盘:
4 个连接 LED 的电阻分别是 R26/R27/R30/R31
4 个连接 JTAG 插座的电阻则是 R22/R23/R24/R25,挨在一起的。只需要将连接 LED 电阻挪到这里就行。
接下来是连接 JTAG 焊盘的另一组电阻焊盘,要全部焊上 0Ω 电阻,才能保证 JTAG 信号全部连通:
R831 – TDI
R833 – TDO
R835 – TMS
R837 – TCK
R830 – nSRST
但是即使信号全部通了,GPIO pinmux 也设定为了 JTAG,TRACE32 还是连不上。读取出来的 IDCODE 是 00000000,而非 MIPS EJTAG 常见的 00000001。
这个问题折腾了我很久,直到我看 AR9344 datasheet 时,看到 Bootstrap 才想起来,Atheros 的 JTAG 有两种模式,JTAG 和 EJTAG。通过一个 GPIO 来确定的:
于是将 GPIO18 设置为 input 模式,并读取了电平,果然是 0。这显然不对,必须要找到这个 GPIO 所连接的电阻位置。然后经过一番测量,才找到了对应的电阻:
R397,在屏蔽罩里面,AR9344 芯片的上方。但奇怪的是,经过测量,发现这是个上拉电阻,一端是 GPIO18,一端是跟 JTAG 的 VRef 和串口 (TTL) 的 VCC 直连的。更奇怪的是,通电测量电压,发现这个电阻上只有 2.6V 的电压, JTAG 插座 VRef 上也是 2.6V,JTAG 4 个信号也全都是 2.6V,只有串口 VCC 才是 3.3V的。
当我尝试将 GPIO18 直连到串口的 3.3V 上后,GPIO 寄存器才认为 GPIO18 处于高电平状态,而这时 TRACE32 才能顺利连上 JTAG。
我不知道为什么串口 VCC 跟 JTAG 的 VRef 的电压会不一致,因为使用电阻档进行通断测量时,蜂鸣器会响,证明这两个引脚是短接的。但是我也没有别的办法了,能用就行。因此最终就是用飞线,将串口 VCC 直接跟 GPIO18 接在一起。万事大吉。
使用电阻档进行通断测量时,电阻阻值在0~50欧姆(有些是0~100)之间时蜂鸣器会响。
查了下,确实是。但是能飞线大法解决的就不另外再折腾了。何况我也不想折腾古董了
看看能不能补充到
https://openwrt.org/toh/netgear/wndr4300
简单看了下netgear 4300的资料相对比较全。
H大有是可以远程帮忙看下 QQ15220709 指导下 在恩山好几个人都不行 也开始SSH 但是刷不了
breed 我想刷但是UBOOT 被锁了 想问下有什么强刷办法吗 7621 TTL 也是无法终止的