找回密码
 立即注册

QQ登录

只需一步,快速开始

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

一步一步玩转jtag

[复制链接]
发表于 2006-9-8 22:57 | 显示全部楼层 |阅读模式
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 收起 理由
tthr + 1 good
恩山无线 + 1

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2006-9-8 22:59 | 显示全部楼层
但是苦于没有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.
回复

使用道具 举报

 楼主| 发表于 2006-9-8 23:01 | 显示全部楼层
手头刚好有一条旧电脑上拆下的并口接线,于是按照下面的连接顺序,制作并口转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.
回复

使用道具 举报

 楼主| 发表于 2006-9-8 23:02 | 显示全部楼层
并口转jtag接口线,如图

本帖子中包含更多资源

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

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

使用道具 举报

 楼主| 发表于 2006-9-8 23:03 | 显示全部楼层
并口转jtag接口线,如图

本帖子中包含更多资源

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

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

使用道具 举报

 楼主| 发表于 2006-9-8 23:04 | 显示全部楼层
将路由器用刚制作好的线连接上电脑,解压缩下载的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.
回复

使用道具 举报

 楼主| 发表于 2006-9-8 23:05 | 显示全部楼层
看看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.
回复

使用道具 举报

 楼主| 发表于 2006-9-8 23:06 | 显示全部楼层
(说明:以下的方法太过于冒险,请权衡后再使用,由此带来的一切后果本人概不负责)
难道就没有其他方法?这时一个大胆的想法进入我脑海:既然不支持我的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.
回复

使用道具 举报

 楼主| 发表于 2006-9-8 23:07 | 显示全部楼层
总结:
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.
回复

使用道具 举报

 楼主| 发表于 2006-9-8 23:14 | 显示全部楼层
好了,最后附上我分离的CEF(KERNEL太大,没办法上传)

本帖子中包含更多资源

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

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

使用道具 举报

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

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

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

使用道具 举报

发表于 2006-9-9 02:44 | 显示全部楼层
好文章呀。先 顶上去。
我开始做的线有40CM左右。能用,只是速度非常缓慢(应该就算是不能用了)。
后来换成现在的8CM了。长了还是不行呀。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2006-9-9 09:46 | 显示全部楼层
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.
回复

使用道具 举报

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

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

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



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

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

使用道具 举报

 楼主| 发表于 2006-9-9 17:19 | 显示全部楼层
原帖由 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-18 19:53

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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