简单说下博通ARM芯片的CFE编译方法

提到CFE,可能对于经常折腾路由器刷机的朋友们并不陌生,毕竟早在2010年左右的时候,大家就已经开始修改CFE参数来刷机了。

CFE全称叫做Broadcom Common Firmware Environment,是嵌入式系统中用来初始化硬件并引导启动固件的一个底层程序,类似于电脑的BIOS。

相比U-Boot,CFE主要使用于博通芯片组的机器,它开放性小资料少,至今很多博通机型在刷入第三方固件时,仍然需要通过命令行+tftp服务器的方式上传固件刷机,无法做到不死uboot一样操作简单直观、只需要打开浏览器上传固件就可以完成刷机。

当然,CFE也不是完全闭源的,我们还是可以找到它的一些源码,比如梅林源码里就有Broadcom SDK6和SDK7的源码。河南猫猫无线尝试编译了 CFE 部分,并做了一些研究,在这里简单记录一下。

搭建编译平台和安装环境这里就不再赘述,网上教程一抓一大把,大家可以自行搜索解决。这里仅从开始下载源码到编译来讲讲。

首先下载梅林源码。
执行命令 git clone http://github.com/RMerl/asuswrt-merlin

我的代码放在/mnt/asuswrt-merlin

然后添加环境变量:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/asuswrt-merlin/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/lib/
export PATH=$PATH:/opt/brcm/hndtools-mipsel-linux/bin:/opt/brcm/hndtools-mipsel-uclibc/bin:/opt/brcm-arm/bin
export PATH=$PATH:/mnt/asuswrt-merlin/release/src-rt-6.x.4708/ctools/

在/mnt/asuswrt-merlin/release/src-rt-6.x.4708下面新建一个.config文件,内容都是export开头的参数导入。如果没有这个文件,可以手工添加。比如

export IPV6SUPP=y
export HTTPS=y
export ARM=y
export BCM57=y
export AUTODICT=y
export BBEXTRAS=y
export USBEXTRAS=y
export EBTABLES=y
export SAMBA3=3.6.x
export MEDIASRV=y
export MODEM=y
export MODEMPIN=y
export BECEEM=y
export PARENTAL2=y
export ACCEL_PPTPD=y
export PRINTER=y
export STAINFO=y
export WEBDAV=y
export USB=USB
export GRO=y
export APP=network
export PROXYSTA=y
export JFFS2USERICON=y
export CLOUDSYNC=y
export SWEBDAVCLIENT=y
export DROPBOXCLIENT=y
export FTPCLIENT=y
export SAMBACLIENT=y
export DNSMQ=y
export SHP=y
export NVRAM_64K=y
export RTAC68U=y
export BCMWL6=y
export BCMWL6A=y
export TUNEK=n
export BCM5301X=y
export DISK_MONITOR=y
export BTN_WIFITOG=y
export LOGO_LED=y
export OPTIMIZE_XBOX=y
export ODMPID=y
export LED_BTN=y
export ROG=y
export SSD=n
export EMAIL=y
export BCMSMP=y
export XHCI=y
export SSH=y
export JFFS2=y
export NFS=y
export OPENVPN=y
export USER_LOW_RSSI=y
export TIMEMACHINE=y
export MDNS=y
export VPNC=y
export BRCM_NAND_JFFS2=y
export JFFS2LOG=y
export BCMFA=y
export BWDPI=y
export HSPOT=y
export DUMP_OOPS_MSG=y
export LINUX_MTD=64
export BCM7=n
export TEMPROOTFS=y
export DEBUGFS=y
export SNMPD=y
export TOR=y
export MULTICASTIPTV=y
export QUAGGA=y
export BCM_RECVFILE=y
export LAN50=y
export ATCOVER=y
export GETREALIP=y
export BCM5301X_TRAFFIC_MONITOR=n
export CLOUDCHECK=y
export NATNL=y
export REBOOT_SCHEDULE=y
export TFAT=y
export HFS=tuxera
export NTFS=tuxera
export IPSECMOD=n
export REPEATER=y
export DUALWAN=y
export DNSFILTER=y
export UPNPIGD2=n
export DNSSEC=y
export NANO=y
export FAKEHDR=y
export FORCE_SN=380
export FORCE_EN=1031
export BUILD_NAME=RT-AC68U

然后在/mnt/asuswrt-merlin/release/src-rt-6.x.4708/cfe/build/broadcom/bcm947xx下面执行make,稍等一会就可以在此目录下面生成cfe文件。

此条目发表在编译固件分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注