找回密码
 注册

QQ登录

只需一步,快速开始

查看: 109645|回复: 112

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

  [复制链接]
发表于 2007-1-11 17:03:27 | 显示全部楼层 |阅读模式
[ADMINOPE=kellson|hugebird|奖励积分 1|提供完整BCM修复教程~~~|1169326591][这个贴子最后由hugebird在 2007/01/11 05:34pm 第 1 次编辑]

[watermark]近期购入上海贝尔的BCM6338芯片的ADSL猫一只,原版固件性能很差。于是自制JTAG线写入Dynalink RTA1335固件,终于使这款高级芯片性能得到充分发挥。因为BCM芯片的刷机过程并没有太详细的教程可以直接拷贝,摸索刷机过程破费周折。在此介绍一些我的经验,供有条件愿意动手的兄弟姐妹参考。
任何对原始设备进行硬件的改造,会使你的设备失去包修,在动手之前请三思
故事的起因可以参考 http://www.516600.com/cgi-bin/lb5000/topic.cgi?forum=54&topic=15888&show=0
2楼提供刷机软件,JTAG电缆和RS232接口板的制作,引脚定义。象征性收费5元。
从网上搜索的数据看,大部分厂家使用BroadCom推荐的引脚排列,尽管插座的针数可能不同,但排列都有规律。[br][br]-=-=-=- 以下内容由 hugebird2007年01月12日 03:24am 时添加 -=-=-=-
故事的起因在这里
http://www.516600.com/cgi-bin/lb5000/topic.cgi?forum=59&topic=425&show=0
 楼主| 发表于 2007-1-12 03:12:39 | 显示全部楼层

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

前言,JTAG线的制作
BroadCom芯片的路由器或者ADSL调制解调器,被改造最多是LinkSys的WRT54G无线路由器。

大家也许已经发现,信号线的排列顺序与12针的完全一样,只是多了一根地线引出脚。我们可以举一反三。
关键要找到地线脚。然后是SW_RST,这个信号是通过外部复位开关复位路由器的信号,引线通常会拉到后面板的复位开关处,所以也比较好判断。其余的按顺序排列即可。或者找到第一脚作为J_RST,然后其余信号线依次排列。最好使用万用表量一下对地的电压。我从板上测的电压是J_RST(2.1V),J_TDI(3.3V), J_TDO(0V), J_TMS(3.3V), J_TCK(2.76V), SW_RST(2.1V) 。

把JTAG线与路由器电路版联起来。我不建议大家直接把线焊在板子上,这不利于日后的升级。可以找几条光驱上用的4针音频线,留3公分剪断,焊接在路由器的板子上,两个头正好8条线。实际焊5个点即可。JTAG线也可以采用这种音频线,用的时候中间用排针连接。这样工作完成之后,接头可以留在盒子里面,不需要清除。
JTAG线做好以后,下一步是制作TTL到RS232的电平转换板。
 楼主| 发表于 2007-1-11 17:04:01 | 显示全部楼层

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

LBSALE[5]LBSALE[这个贴子最后由hugebird在 2007/01/11 05:16pm 第 1 次编辑]

软件第1部分

GetCFE.bat用于从厂家提供的固件中提取CFE.bin
echo ==== get 256KB CFE image from a tagged file...
redim 1 -i %1 -o %1.tmp -h 262399
redim ,1 ,1 -i %1.tmp -o %1.cfe -s 256
del %1.tmp /q /f
 楼主| 发表于 2007-1-12 03:15:26 | 显示全部楼层

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

RS232转换板的制作
RS232是PC上的串行通信接口,Broadcom芯片传输的是TTL电平,必须经过RS232收发器进行电平转换才可以连接电脑,否则显示的是乱码。接口板的材料也不困难:需要1块在电子市场可以买到的试验版(具有很多标准的过孔,用于简单焊接),一个16针DIP插座,1片MAXIM MAX3232CPE 芯片, DIP封装,5个0.1uf的无极性电容(可以用1206封装的贴片电容),2个100欧姆电阻,1个DB9母头,一些导线。按图连接即可。需要注意的只有两点,芯片一定要3232才可以兼容3.3V TTL逻辑;另外一点针对新手,注意把所有的接地点连接在一起:).

联机采用windows自带的超级终端,串口参数设置为波特率115200bps,8个数据位,无校验,1个停止位,无流控(115200bps,8-N-1, None)。
 楼主| 发表于 2007-1-12 03:16:43 | 显示全部楼层

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

DeBrick 刷机软件的使用
现在我们终于开始讨论Broadcom的强力芯片BCM6338, 这个芯片的优点无需我再做介绍,大家只要记住这个芯片作为家庭路由处理器,处理能力绰绰有余。HairyDairyMaid_WRT54G_Debrick_Utility工具尽管不是为BCM6338开发的,但做为同一公司的同系列处理器,接口一致的可能性极大。现在看是完全相同,否则就不会有现在的这个教程。这个工具现在已经更新到v4.8, 但不支持BCM6338。 我们可以直接把6338的Chip ID加到源程序中进行编译得到可以和6338配合使用的程序。不过编译需要在Linux环境下,我直接改了windows执行程序,把其中的一个CPU替换成6338的ID,这样不用进行编译,程序是BCM6338.exe .
在winxp下使用这个工具,需要安装通讯口驱动程序GiveIO. 首先把GiveIO.sys拷贝到Windows安装目录下的X:\Windows\System32\Drivers子目录,然后运行loaddrv.exe 在输入框中填入“c:\windows\system32\drivers\giveio.sys” 点 install, 再选 start。
然后打开设备管理器,右键选择显示隐藏设备,在非即插即用列表下找到GiveIO, 打开它的属性窗口,把Driver的启动类型改为自动。
下面需要在PC的BIOS中设置并口的类型以便增加与JTAG线的兼容性,我的设置是ECP模式。另外Windows 下并口不使用中断。 这个设置我试过3台机器都比较稳定。唯一不足的是在写flash的时候不能使用DMA,速度很慢。这个问题我一直没有解决。
DeBrick工具主要有4个操作,1. 检测 ProbeOnly;2. 备份 Backup;3. 擦除 Erase;4. 写入 Flash
在我们改造的Modem中,标准版本Flash容量应该是2MB。我的芯片是MX16LV160CBTC-70G。如果低于这个容量,那么说明你的设备是简化版。需要换掉flash才可以进行标准固件的升级工作,但成功与否只能靠运气,我无法保证是否一定成功。
Flash分成CFE, NVRAM, Kernel 三个区,软件可以对这3个区分别操作,完整的Flash取名WholeFlash.
我们敢兴趣的只有CFE和WholeFlash.
CFE启动引导区相当与PC的BIOS,里面含有一些固件升级的基本工具。因为JTAG线写完整Flash的速度太慢,2MB需要写15个小时,所以我们通常是只写CFE,然后通过CFE写入完整的Flash.
WholeFlash是对整个Flash数据进行备份,相当于使用编程器进行位拷贝。我们在进行任何操作之前对整个Flash进行一次备份,以便还有恢复最初状态的可能。
备份命令:
BCM6338 –backup:cfe /fc:43 /silent
BCM6338 –backup:wholeflash /fc:43 /silent
这里用了两个开关。/fc:43 对应Flash的类型MX29LV160CB (Bottom Boot sector) ,不同的设备需要根据具体设备上的Flash类型进行选择。虽然软件有自动检测功能,但并不好使。/silent关闭数据显示,可以加快速度。
擦除命令:
BCM6338 –erase:cfe /fc:43
BCM6338 –erase:wholeflash /fc:43
擦除过程很快,可以不用/silent开关。
写入命令:
BCM6338 –flash:cfe /fc:43 /nodma /silent
BCM6338 –flash:wholefalsh /fc:43 /nodma /silent
JTAG写入速度非常慢,出于兼容性方面的考虑,我使用了/nodma开关,即不使用DMA方式通信。
实际上DeBrick工具的开关选择是非常丰富的,我列出的是最基本的,其它的不做介绍主要考虑不太清楚它的原理,以免防止误导大家,造成不必要的麻烦。
操作步骤如下:关闭路由器电源,连接好电缆,PC上敲好准备执行的命令,一手打开路由器电源,另一只手在延迟0.5秒的时候按回车键执行命令。这样做的目的是防止6338软件狗引起的设备复位,中断数据的通信。
软件使用过程中还有一些技巧,请参考固件写入一节。
[br][br]-=-=-=- 以下内容由 hugebird2007年01月21日 07:47pm 时添加 -=-=-=-
BCM6338芯片似乎不支持DMA写入Flash的传输模式,同样的JTAG线在BCM4702芯片上就可以通过DMA写入Flash。
如果出现DMA不兼容的情况,可以用/nodma开关使用保守模式进行写入,不过写入速度非常慢。

点评

MARK ADSL猫  发表于 2013-11-4 18:10
 楼主| 发表于 2007-1-12 03:19:14 | 显示全部楼层

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

固件的准备
固件的来源有两个,一是厂家提供的固件,一是网友通过JTAG备份下来进行交流的固件。对于第2种来源只有通过JTAG口整芯片进行复制,目前别无它法。无法通过CFE对自己备份的固件进行升级,我未做过多的研究。
对于厂家提供的固件,Broadcom提供两种格式,标记(tagged)和非标记(untagged)。一般我们从厂家得到的是第1种,第2种以.w作为扩展名,我还未见过。这两种格式的固件都可以从CFE里进行升级。
在这一结里面我们重点讨论如何得到CFE。CFE是Broadcom Common Firmware Environment 通用固件环境的缩写,和PC BIOS完成类似的功能,CFE提取有2种途径,1,备份的CFE.BIN  2,从厂家固件中抽取。
CFE.BIN文件长度为262144字节(256KB)。
原始设备上的CFE备份方法前面已经介绍,可以直接运行命令实现
BCM6338 –backup:cfe /fc:43 /silent
从厂家固件中抽取CFE需要使用一个小工具ReDim,这是一个对文件中字节排列顺序进行调整的小程序,后面还会用到。首先我们新建一个名为getall.bat的批处理文件,输入命令如下并保存
Rem ======================
echo ==== get 256KB CFE image from a tagged file...
redim 1 -i %1 -o %1.tmp -h 262399
redim ,1 ,1 -i %1.tmp -o %1.cfe -s 256
del %1.tmp /q /f
rem ==========================================
CFE从0x100h开始,长度为0x40000h。我们找到CFE的特征进行举一反三

从厂家提供的固件中提取CFE的命令:已知固件明为rta1335 那么在命令行窗口下执行命令
getcfe rta1335
注意把redim.exe,rta1335以及getcfe.bat(前面和getall.bat是同一个文件)。运行结束后会得到一个rta1335.cfe文件。这个就是提取的CFE。再执行命令
reok2fl rta1335.cfe
就可以得到用于Flash的文件rta1335.cfe.fl.reok2fl.bat就是本节最后的那个批处理程序的后半部分。
把rta1335.cfe.fl改名为CFE.BIN即可用于后面的写入。
 楼主| 发表于 2007-1-12 03:20:20 | 显示全部楼层

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

写入Flash
这一步按照前面指令执行就可以了。 首先把调整字节顺序后的.fl文件改名,CFE.bin。 如果写入的是完整的flash,改名为wholeflash.bin. 写入命令别忘了/nodma /silent
这一节只透露一些技巧,在写入过程中有时候程序会突然出现错误,而且屡试屡错。尽管CFE比较小,完全写入也需要2个小时,Debrick出现错误的概率非常大。下面我提供两个问题的解决技巧。
1:Q:写入过程中,程序锁住,很久进度不变化。
A:并口兼容性问题,调整BIOS里面并口类型为ECP模式。写入时加入/silent开关,减少锁死的概率。
2:Q:写入过程中,突然跳出一个窗口说Debrick出现致命错误。
A:我也不知道为什么,需要进行一些全Flash备份操作,以便触发6338芯片的正常工作。
BCM6338 –backup:wholeflash /fc:43 /silent
这个操作最好等待整个过程执行完毕,最少也要完成40%以后再中断程序的执行。
重新试试刚才的写入指令吧,也许没问题了。
一旦写入完成,最困难的工作即告结束。
 楼主| 发表于 2007-1-12 03:21:35 | 显示全部楼层

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

通过CFE载入完整的新固件
请插上RS232接口板,重新打开路由器电源,你在超级终端上看到如下的信息。按我的注释进行吧。
CFE version 1.0.37-0.6.7 for BCM96338 (32bit,SP,BE)
Build Date: Thu Aug  3 17:27:19 CST 2006 (michaelc)
Flash Config: CS0(1fc00008,1f),Base(bfc00000),Size(2MB)
Ethernet Network Device: External PHY
bank 0 invalid
** Image information not found. **
*** Board is not initialized properly ***
Press:  <enter> to use current value
Board Id Name (A-H)
RTA1320          -------- A
RTA1320B         -------- B
RTA1320_16M      -------- C
RTA1320B_16M     -------- D
RTA1330          -------- E
V210             -------- F
V210_BB          -------- G
V190_AOL         -------- H     :[]:A          大写A,选择RTA1320这是选择固件的标签,以后你的设备就会被识别成这个ID,其它固件不能互刷。对Broadcom固件的签名进行破解相当麻烦。
Number of MAC Addresses (1-32)  :[0]:  11       输入11
Ethernet MAC Address            :[]:00:74:04:e4:38:1a       设备的原始MAC地址
Save and Exit  (y/n):y
Save your new configuration to nvram........done
Press any key to reset the board:               重启设备
CFE version 1.0.37-0.6.7 for BCM96338 (32bit,SP,BE)
Build Date: Thu Aug  3 17:27:19 CST 2006 (michaelc)
Flash Config: CS0(1fc00008,1f),Base(bfc00000),Size(2MB)
Ethernet Network Device: External PHY
bank 0 invalid
** Image information not found. **
Board IP address                : 192.168.1.1  
Host IP address                 : 192.168.1.2  
Gateway IP address              :   
Run from flash/host (f/h)       : f  
Default host run file name      :   
Default host flash file name    : bcmModelName_fs_kernel  
Boot delay (1-9 seconds)        : 1  
Board Id Name                   : RTA1320  
Psi size in KB                  : 24
Number of MAC Addresses (1-32)  : 11  
Ethernet MAC Address            : 00:74:04:e4:38:1a  
Memory size in MB               : 8
CFE> c                     终于出现CFE>提示符了, “c” 命令重新配置启动脚本
Press:  <enter> to use current value
Board IP address                :[192.168.1.1]:         路由器的LAN地址
Host IP address                 :[192.168.1.2]:  192.168.1.10          计算机的IP地址,作为TFTP server时会用到
Gateway IP address              :[]:
Run from flash/host (f/h)       :[f]:  f             h选择启动时进入CFE系统,f选择启动flash文件系统,是路由器正常工作时的启动模式
Default host run file name      :[]:
Default host flash file name    :[bcmModelName_fs_kernel]:  bcm96xxx_fs_kernal     固件在TFTP Server上存放的文件名
Boot delay (1-9 seconds)        :[1]:  2          启动系统时的等待用户交互的时间,2秒比较合适。
*** command status = 0
CFE> c
Press:  <enter> to use current value
Board IP address                :[192.168.1.1]:  
Host IP address                 :[192.168.1.10]:  
Gateway IP address              :[]:
Run from flash/host (f/h)       :[h]:  
Default host run file name      :[]:
Default host flash file name    :[bcm96xxx_fs_kernal]:  bcm96xxx_fs_kernel
Boot delay (1-9 seconds)        :[2]:  
*** command status = 0
CFE> f                    Flash 命令 CFE 从1902.168.1.10的TFTP Server上抓取完整的固件。在x.x.x.10上运行TFTPServer.exe, 把固件拷贝到同一目录并改名为bcm96xxx_fs_kernel
Loading 192.168.1.10:bcm96xxx_fs_kernel ...
Finished loading 1864654 bytes
Flashing CFE: ....                这个过程一定要耐心等待,写完以后会重启
Flashing root file system and kernel: ............................
Resetting board...
。。。。。。。。
==== Press space key to stop auto run (2 seconds) ====
Auto run second count down(before hit space key): 2 2 1 0
Code Address: 0x80010000, Entry Address: 0x80187018
Decompression OK!
Entry at 0x80187018

除了采用TFTP进行升级,还可以采用CFE Web升级。在x.x.x.10上,IE中输入http://192.168.1.1 , 后面的更新大家都会了。
固件升级完毕以后,重新开关电源,路由器正常启动,再选择IE中输入http://192.168.1.1 ,你就可以进入令人激动的设备管理界面,用户密码admin/admin
发表于 2007-1-13 14:25:24 | 显示全部楼层

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

支持一下,不错的研究。
发表于 2007-1-14 14:28:03 | 显示全部楼层

[原创]BCM6338ADSL固件升级完全解决方案(砖块恢复教程)

虽然很多不太理解,不过也是我学习的目标。。。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|宽带技术网 |网站地图

粤公网安备 44152102000001号

GMT+8, 2024-5-10 06:43 , Processed in 0.027938 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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