找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 63238|回复: 89

一步一步玩转jtag

[复制链接]
jtag是什么东西?我只知道是一种通信标准,具体自己去google!
因为自己的buffalo whr2-a54g54 在一次使用telnet中nvram命令参数输入错误,重起后无法ping通,也进不了WEB界面,无线网卡也找不到路由器!
用tftp 重刷DD-WRT,提示刷新成功,但故障依旧。准备发回恩山救急!
还是先到恩山论坛看看有什么其他解救方法!
在这里首先感谢Albert,正是那篇《JTAG牛刀小试--unbrick my WHR2-G54》,让我接触到jtag,并一步一步学习下去。
第一次看这篇文章,感觉是一头雾水(以前从来没有看过及听说过jtag,我相信第一次接触的人感觉跟我类似)不过不要紧,多看几次,慢慢就看出了一些端倪。我一共看了六遍,并将http://www.ranvik.net/prosjekter ... ick_Utility_v45.zip下载下来(解压缩后,里面有软件及说明文档),好好看了两篇。(还好,学了一点点英文,想不到在这里派上用场了),基本了解了一下jtag。
拆开路由器,首先就看到了串口接口(那个4针的接口,另外那个就是JTAG接口了),如图:

[ 本帖最后由 lyy9801318 于 2006-9-8 23:10 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 2贡献 +1 恩山币 +1 收起 理由
tt*** + 1 good
恩山*** + 1

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| | 显示全部楼层
但是苦于没有SP3220EC芯片,也没有手机数据线,且Albert文中提及不用串口一样可以玩jtag,干脆先就玩jtag.根据文中介绍找到jtag接口,为16针接口CN2,就在串口旁边,上面有一端标有数字1,就是第一针,3,5,7,9针分别连接有上拉电阻R86 R87 R88 R89 ,为了便于连接,为它加上插座(手头只有10针的插座,呵呵,旧电脑主板上拆下的,且刚好与我一条旧并口线配套,反正jtag也只用到第九针),如图。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
手头刚好有一条旧电脑上拆下的并口接线,于是按照下面的连接顺序,制作并口转jtag接口线,如图
PC并口     电阻           JTAG插头        功能
2            200欧姆       3               TDI
3            200             9               TCK
4            200             7               TMS
13          200             5               TDO
20/25      直连            6               地线

[ 本帖最后由 lyy9801318 于 2006-9-17 22:32 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
并口转jtag接口线,如图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
并口转jtag接口线,如图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
将路由器用刚制作好的线连接上电脑,解压缩下载的HairyDairyMaid_WRT54G_Debrick_Utility_v45.zip后拷贝windows目录到C(系统装D盘就用d)盘下面,改个名叫jtag,拷贝WINDOWS目录里面的giveio.sys到c:\\windows\\system32\\drivers\\(你装D盘就改d了,win2K的话这个目录c:\\winnt\\system32\\drivers\\),双击下面的loaddrv.exe,加载2k,xp的并口驱动把框框里面输入c:\\windows\\system32\\drivers\\giveio.sys)依次点击install ,start,你点两次start的话,会提示你已经在运行了。
开始-运行,输入cmd回车。Dos窗口出现输入 cd  c:\\jtag回车
输入wrt54g –backup:nvram回车显示:
c:\\jtag>wrt54g.exe -backup:nvram

====================================
WRT54G/GS EJTAG Debrick Utility v4.5
====================================

Probing bus ... Done
Instruction Length set to 5   
CPU Chip ID: 00000100011100000100000101111111 (0470417F)   
*** Unknown or NO CPU Chip ID Detected ***               

*** Possible Causes:
    1) WRT54G/GS is not Connected.
    2) WRT54G/GS is not Powered On.
    3) Improper JTAG Cable.
    4) Unrecognized CPU Chip ID.
正如Albert所说,不认识我的4704,强制使用/skipdetect /instrlen:8这两条参数,显示:
C:\jtag>wrt54g.exe -backup:nvram  /skipdetect /instrlen:8
====================================
WRT54G/GS EJTAG Debrick Utility v4.5
====================================
Probing bus ... Done
Instruction Length set to 8
CPU Chip ID: 00000100011100000100000101111111 (0470417F)
*** CHIP DETECTION OVERRIDDEN ***
    - EJTAG IMPCODE ....... : 00000000100000000000100100000100 (00800904)
    - EJTAG Version ....... : 1 or 2.0
    - EJTAG DMA Support ... : Yes
Issuing Processor / Peripheral Reset ... Done
Enabling Memory Writes ... Done
Halting Processor ... <Processor Entered Debug Mode!> ... Done
Clearing Watchdog ... Done
Probing Flash at (Flash Window: 0x1fc00000) ... Done
*** Unknown or NO Flash Chip Detected ***
*** REQUESTED OPERATION IS COMPLETE ***

不会吧,不认识我的flash芯片!还是我的flash芯片坏了?Albert文章里面没有提及。在网上求救,Albert及jnjn告诉我要找DATASHEET,把我的flash芯片参数写进去,重新编译wrt54g.exe文件,天呐,我哪知道DATASHEET是什么东西?又如何将flash芯片参数写进去?用VC编译?,那VC又怎么用?还要用 /FC:XX,太复杂了!
再仔细看看我的flash芯片,为ST M29DW324DB,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
看看wrt54g.exe帮助显示如下:
            /fc:XX = Optional (Manual) Flash Chip Selection
            -----------------------------------------------
            /fc:01 ............. AMD 29lv160DB 1Mx16 BotB   (2MB)
            /fc:02 ............. AMD 29lv160DT 1Mx16 TopB   (2MB)
            /fc:03 ............. AMD 29lv320DB 2Mx16 BotB   (4MB)
            /fc:04 ............. AMD 29lv320DT 2Mx16 TopB   (4MB)
            /fc:05 ............. AMD 29lv320MB 2Mx16 BotB   (4MB)
            /fc:06 ............. AMD 29lv320MT 2Mx16 TopB   (4MB)
            /fc:07 ............. AMD 29lv320MT 2Mx16 TopB   (4MB)
            /fc:08 ............. Intel 28F128J3 8Mx16       (16MB)
            /fc:09 ............. Intel 28F160B3 1Mx16 BotB  (2MB)
            /fc:10 ............. Intel 28F160B3 1Mx16 TopB  (2MB)
            /fc:11 ............. Intel 28F160C3 1Mx16 BotB  (2MB)
            /fc:12 ............. Intel 28F160C3 1Mx16 TopB  (2MB)
            /fc:13 ............. Intel 28F160S3/5 1Mx16     (2MB)
            /fc:14 ............. Intel 28F320B3 2Mx16 BotB  (4MB)
            /fc:15 ............. Intel 28F320B3 2Mx16 TopB  (4MB)
            /fc:16 ............. Intel 28F320C3 2Mx16 BotB  (4MB)
            /fc:17 ............. Intel 28F320C3 2Mx16 TopB  (4MB)
            /fc:18 ............. Intel 28F320J3 2Mx16       (4MB)
            /fc:19 ............. Intel 28F320J5 2Mx16       (4MB)
            /fc:20 ............. Intel 28F320S3/5 2Mx16     (4MB)
            /fc:21 ............. Intel 28F640B3 4Mx16 BotB  (8MB)
            /fc:22 ............. Intel 28F640B3 4Mx16 TopB  (8MB)
            /fc:23 ............. Intel 28F640C3 4Mx16 BotB  (8MB)
            /fc:24 ............. Intel 28F640C3 4Mx16 TopB  (8MB)
            /fc:25 ............. Intel 28F640J3 4Mx16       (8MB)
            /fc:26 ............. Intel 28F640J5 4Mx16       (8MB)
            /fc:27 ............. MBM29LV320BE 2Mx16 BotB    (4MB)
            /fc:28 ............. MBM29LV320TE 2Mx16 TopB    (4MB)
            /fc:29 ............. MX29LV320B 2Mx16 BotB      (4MB)
            /fc:30 ............. MX29LV320B 2Mx16 BotB      (4MB)
            /fc:31 ............. MX29LV320T 2Mx16 TopB      (4MB)
            /fc:32 ............. MX29LV320T 2Mx16 TopB      (4MB)
            /fc:33 ............. SST39VF320 2Mx16           (4MB)
            /fc:34 ............. ST 29w320DB 2Mx16 BotB     (4MB)
            /fc:35 ............. ST 29w320DT 2Mx16 TopB     (4MB)
            /fc:36 ............. Sharp 28F320BJE 2Mx16 BotB (4MB)
            /fc:37 ............. TC58FVB321 2Mx16 BotB      (4MB)
            /fc:38 ............. TC58FVT321 2Mx16 TopB      (4MB)
            /fc:39 ............. AT49BV/LV16X 2Mx16 BotB    (4MB)
            /fc:40 ............. AT49BV/LV16XT 2Mx16 TopB   (4MB)
            /fc:41 ............. MBM29LV160B 1Mx16 BotB     (2MB)
            /fc:42 ............. MBM29LV160T 1Mx16 TopB     (2MB)
            /fc:43 ............. MX29LV161B 1Mx16 BotB      (2MB)
            /fc:44 ............. MX29LV161T 1Mx16 TopB      (2MB)
            /fc:45 ............. ST M29W160EB 1Mx16 BotB    (2MB)
            /fc:46 ............. ST M29W160ET 1Mx16 TopB    (2MB)
            /fc:47 ............. SST39VF1601 1Mx16 BotB     (2MB)
            /fc:48 ............. SST39VF1602 1Mx16 TopB     (2MB)
            /fc:49 ............. SST39VF3201 2Mx16 BotB     (4MB)
            /fc:50 ............. SST39VF3202 2Mx16 TopB     (4MB)
            /fc:51 ............. SST39VF6401 4Mx16 BotB     (8MB)
            /fc:52 ............. SST39VF6402 4Mx16 TopB     (8MB)
            /fc:53 ............. K8D1716UTC  1Mx16 TopB     (2MB)
            /fc:54 ............. K8D1716UBC  1Mx16 BotB     (2MB)
果然不支持我的flash芯片。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
(说明:以下的方法太过于冒险,请权衡后再使用,由此带来的一切后果本人概不负责)
难道就没有其他方法?这时一个大胆的想法进入我脑海:既然不支持我的flash芯片,那我就任意指定一个flash芯片类型看看!这两个flash芯片类型与我的flash芯片有点相似(我的flash是4M的,当然不会去指定一个其他容量的flash芯片了,这个可是技巧哦!)于是我就用
c:\\jtag\wrt54g.exe -backup:nvram /skipdetect /instrlen:8 /fc:27
哈哈,竟然备份成功了!干脆备份整个flash
c:\\jtag\wrt54g.exe -backup:wholeflash /skipdetect /instrlen:8 /fc:27
半个多小时过去后,终于提示成功了!再备份CFE和KERNEL,又是半个多小时!用UE(还好,这个软件我以前就用过)打开刚才备份的文件,逐渐发现在整个flash中,分布如下:(注意,它的地址都是加了0x1FC00000)
area_name       area_start          area_length        area_size(kb)
CFE          0x1FC00000       0x40000            256k
KERNEL      0x1FC40000       0x3B0000           3776k
NVRAM       0x1FFF0000        0x10000            64k
再仔细看NVRAM 中,从0x1FFF0000到0x1FFF8000为空白,从0x1FFF8000到0x1FFFFFFF才是真正的NVRAM(这里应该是mian nvram)。在KERNEL中,从0x1FC40000到0x1FE87000为一段程序代码,(估计就是DD-WRT),从0x1FE90000到0x1FE97000为另一段程序代码①(不清楚是什么,还请高手指教)。从0x1FEE8000到0x1FFF000为另一段NVRAM!(这里就是sub nvram了)。
下一步看看能不能往里面写nvram.bin。将刚才备份的nvram改名为:nvram.bin,输入
c:\\jtag\wrt54g.exe -flash:nvram /skipdetect /instrlen:8 /fc:27
提示操作成功!成功写入!于是,将从恩山论坛下载的好的nvram.bin写入flash中,操作成功后重起路由器,很失败,故障依旧。于是决定清空NVRAM,输入
c:\\jtag\wrt54g.exe -erase:nvram /skipdetect /instrlen:8 /fc:27
操作成功后重起路由器,还是失败!!!
奇怪了,为了弄清楚重起路由器后,NVRAM中到底发生了什么,于是erase nvram,重起路由器,在backup nvram发现NVRAM中写入了配置参数,且与KERNEL中的 sub nvram内容一致!看来重起路由器后系统从KERNEL中将sub nvram写入了NVRAM中了!
既然如此,干脆将KERNEL中的sub nvram更换!想用指定地址功能将好的nvram写入KERNEL中,于是输入
c:\\jtag\wrt54g.exe -flash:custom /start: 0x1FEE8000  /length: 0x8000 /skipdetect /instrlen:8 /fc:27
提示参数不对,搞不懂哪里出错了,请大家赐教!②(已将nvram.bin.bak改为:custom.bin)
既然KERNEL中是由DD—WRT和NVRAM组成,于是就用UE将dd-wrt.bin和nvram.bin按照KERNEL中的位置将其合并成一个新的kernel.bin。
先将FLASH中KERNEL以及NVRAM全部erase掉,此时重起路由器后出现一个有趣的现象:竟然可以ping通路由器了,IP地址:192.168.11.1,注意不是“192.168.1.1”了,但是仍然进不了WEB界面,也连不上无线网卡。此时路由器就加载了CFE,它到底做了些什么?在等什么?留待以后研究了。③
为了加快速度,用TFTP将kernel.bin上传到flash中,如下:
c:\\tftp –i 192.168.11.1 put kernel.bin
提示传送成功,重起路由器后故障依旧!且奇怪的是此时备份KERNEL后发现KERNEL中其实什么也没有!tftp提示传送成功,可实际根本就没有将kernel.bin写入KERNEL中!为什么?请大家赐教④。没办法,只有老老实实用JTAG了!
c:\\jtag\wrt54g.exe -flash:kernel /skipdetect /instrlen:8 /fc:27
经过漫长的2个多小时的等待之后,终于传送成功。为了安全起见,将NVRAM清空:
c:\\jtag\wrt54g.exe -erase:nvram /skipdetect /instrlen:8 /fc:27
重起路由器后,终于,进入了久违的DD-WRT PANEL设置页面,而且无线网卡也找到了我的路由器了!一切都好了。只是,路由器名字由原来的buffalo whr2-a54g54 变成了wrtsl54gs了!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
总结:
1对路由器所有焊接操作均拔下电烙铁插头使用余热焊接,防止静电击穿芯片;
2切忌任何对路由器的操作的时候请记得先作backup操作,以防万一;
3不同的flash芯片内的参数不同,最好去查DATASHEET,不可盲目用/FC:XX;
4备份和檫写kernel和wholeflash时,时间特别长,请耐心等待,事先作好心理准备
5文中①②③④四处疑问到现在一直没有弄明白,请高手指教;
6将dd-wrt.bin和nvram.bin合并成一个新的kernel.bin中相比原来的kernel.bin中少了一段代码,即从0x1FE90000到0x1FE97000的程序代码,但实际使用中没有任何影响。
7由于本人没有其他类型的路由器,所以本文介绍的方法没有在其他路由器上实验过,请大家共同研究。
8我的QQ:20672018 TEL:0733—6388332,希望与大家一起研究。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
好了,最后附上我分离的CEF(KERNEL太大,没办法上传)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

写的很好啊,我很幸运,那片flash正好支持。

你的线看起来有些长哦,居然也能用。

看来我不能用长线因为我的并口驱动能力不行,或者周围干扰大了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

好文章呀。先 顶上去。
我开始做的线有40CM左右。能用,只是速度非常缓慢(应该就算是不能用了)。
后来换成现在的8CM了。长了还是不行呀。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

kernel整个部分就是固件,我备份后比较过的,完全相同。
你用fc:27可能不对,因为fc:27是  /fc:27 ............. MBM29LV320BE 2Mx16 BotB    (4MB),Boot区在底部,而buffalo路由器用的flash的Boot区在顶部,我觉得可能用 /fc:28 ............. MBM29LV320TE 2Mx16 TopB    (4MB)更好些。

先将FLASH中KERNEL以及NVRAM全部erase掉,此时重起路由器后出现一个有趣的现象:竟然可以ping通路由器了,IP地址:192.168.11.1,注意不是“192.168.1.1”了,但是仍然进不了WEB界面,也连不上无线网卡。此时路由器就加载了CFE,它到底做了些什么?在等什么?留待以后研究了。③
这里你获得的ip是192.168.11.1是非常正常的,这个ip是从CFE区得到的,和nvram区无关,这也就是buffalo大部分的路由器的默认ip是192.168.11.1的原因。

提示传送成功,重起路由器后故障依旧!且奇怪的是此时备份KERNEL后发现KERNEL中其实什么也没有!tftp提示传送成功,可实际根本就没有将kernel.bin写入KERNEL中!为什么?请大家赐教④。没办法,只有老老实实用JTAG了!


你要是有串口线的话,会看到这时候显示CRC error,所以固件其实并没有tftp成功,所以也就没有更新。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
原帖由 Albert 于 2006-9-9 00:41 发表
写的很好啊,我很幸运,那片flash正好支持。

你的线看起来有些长哦,居然也能用。

看来我不能用长线因为我的并口驱动能力不行,或者周围干扰大了



线是用的现成的一段,所以没有做长度修改,用的很好!备份整个FLASH用时30多分钟,重写FLASH用时2个多小时,不知道算不算慢啊?

[ 本帖最后由 lyy9801318 于 2006-9-9 17:14 编辑 ]
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
原帖由 awingbird 于 2006-9-9 09:46 发表
kernel整个部分就是固件,我备份后比较过的,完全相同。

不对,KERNEL是固件+nvram,这个我仔细看了。
你用fc:27可能不对,因为fc:27是  /fc:27 ............. MBM29LV320BE 2Mx16 BotB    (4MB),Boot区在底部,而buffalo路由器用的flash的Boot区在顶部,我 ...

今天我看了ST M29DW432DB的datasheet,它的Boot区确实在底部,好幸运哦!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 05:40

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表