发布一个Broadcom芯片ADSL固件的修改方法和工具
请大家下载18楼的1.5版 自从去年第一次使用Broadcom芯片的ADSL,一年已来感觉这一系列的设备非常耐玩。最突出的特点是它们采用Linux系统,很多大厂免费提供源码,有能力的用户可以增加自己的代码支持更多的功能。w0@*yBu2Y7lhG*`pU6},g8A:H
Broadcom ADSL最常见芯片包括 6338,6348,6358,以及比较老的6345. 6338 是市场的主力,标准配置2MB Flash
和8MB的SDRAM。 6348面向中端市场,标准配置4MB Flash和16MB的SDRAM,一般加无线网卡作为无线路由一体机使用,6348支持USB1.0,加载驱动以后可以支持外置硬盘。6358面向高端市场,产品比较少见。
*pu4X"lu*zb
大多数厂家采用Broadcom的参考设计,仅根据网络端口的不同需求做简单的修改,再加上自己的软件。相同芯片的4O9K5k~(c
ADSL设备,最大的不同在于网络接口,有的使用芯片内置的以太网PHY。有的采用外接以太网交换芯片支持多个端口。ADSL主芯片和外接交换芯片有多种连接方式,造成了固件不能通用。网络接口的定义在厂家提供的源码boardparms.c中。即使硬件设计一样不同厂家的设备,固件由于有标识保护不能互刷。
最近有空分析厂家提供的源码,基本搞清楚了固件的结构,下面提供的这个工具BrFWmod,可以对大部分标准BCM6xxx
ADSL设备的固件进行拆分和组合。可以对某些固件加上特定文件标识,用于其它厂家的设备。比如我们有A厂出的
设备,原厂的固件功能有缺陷,我们得到消息B厂的固件功能完善,但由于B固件与A设备不匹配,无法直接刷在A设备上
,除非采用JTAG一类的特殊设备。现在我们用BrFWmod,从A厂的原厂固件中提取标识,然后把标识组合在B固件上,得9]F+m7cSv/L B$O;_*U5}
到了在A设备上可以直接刷新的新固件。5bbI*h$q]X
固件的定义可以从任何源码的BcmTag.h中找到,通常分成4个部分,第一部分是256字节的文件头TAG,里面定义了,厂
家,型号,附件版本,并对后面的3个部分提供文件长度的索引和校验和,保证固件的完整性,第2部分是CFE,该部
分相当与电脑中的bios,又称为Boot Loader,启动引导,CFE中提供对设备网络的简单支持,可以在固件核心部分崩溃
的时候,提供TFTP等恢复手段。CFE还提供对硬件基本参数的设置。第3部分是Root File System,根文件qIUi N[r&He-i
系统,类似于光盘的ISO文件,提供Linux系统所需的的文件系统,BrFWmod Linux版本可以把这部分进一部分解
成独立的文件,加入自己的工具以后还可以重新组合。BrFWmod Windows版本不支持对rootFS的分解。最后一部分是 X8lDG+Z,K-F2i9t$[\7Y
Kernel系统核心,即Linux系统的Kernel。0y~e ?C5hK4l