以未修改的原梅林源码为例,git地址为https://github.com/RMerl/asuswrt-merlin
型号以RT-AC68U为例。
CFE的源码主的目录为下:
$(源码置放目录)/asuswrt-merlin/release/src-rt-6.x.4708/cfe
说明一下各文件夹作用:
build为编译目录,编译配置等内容在这个目录
cfe目录为cfe的源代码目录
docs为文档目录
主要在需要修改的配置文件在build文件夹里,cfe的源码在cfe文件夹里,下面浏览下
可以看到里面的txt文件都是各型号的CFE配置文件,各种sdram定义,gpio接口定义就在这,网上的CFEEDIT工具,修改的大部分也是这里面的配置,在十六进制文件查看器中可以用ASCI码查看的.
然后还是看
$(源码置放目录)/asuswrt-merlin/release/src-rt-6.x.4708/cfe/build/broadcom/bcm947xx/compresse 目录下的Makefile文件,可以看到引用配置文件是有条件的,具体就是要将两个变量赋值
RTAC68U=1
PATYPE=0
现在就得到编译CFE的方法:
cd $(源码置放目录)/asuswrt-merlin/release/src-rt-6.x.4708/cfe
make RTAC68U=1 PATYPE=0
以上两条命令即编译了RT-AC68U的CFE,再次编译前记得执行make clean
西窗浪人首发,转载附初始地址
老大,可有rt-ac3200的cfe,方便的话邮箱一个,392517728@qq.com非常感谢!!!
没有那个设备呀,华硕官方找不到么
你好,知道CFE Edit怎么把参数保存回去的吗?也就是CFE里面”FLSH”标志后面的校验算法是怎么实现的吗?
目前已经知道的是FLSH,接下来四个字节是参数的长度,接下来的是CRC算法和版本,请问这个CRC算法怎么实现的?谢谢!
百度crc32
肯定不是CRC32算法,因为只占有2个字节,可能是CRC16或者CRC8,问题是不知道用的那个公式
跟我争辩有意思吗,又要来问,又不相信。
/* Do CRC check */
if (len > *insize ||
len > flashinfo.flash_size ||
len < sizeof(struct trx_header)) { xprintf("\nTRX file size error!"); return CFE_ERR; } calccrc = flash_crc32(ptr + 12, len-12); if (calccrc != ltoh32(hdr->crc32)) {
xprintf(“\nTRX CRC error!”);
return CFE_ERR;
}
具体源码慢慢翻:
https://github.com/RMerl/asuswrt-merlin.ng/blob/master/release/src-rt-6.x.4708/cfe/cfe/net/net_http.c
你好,我不是要和你争,是讨论。您给出的事trx文件的校验,trx文件头部是CRC32校验,那是毋庸置疑的了。我的问题可能你没有看清楚,我是说cfe.bin文件内部,在”FLSH”标志以后,有一个校验码,使用CFEedit.exe编辑完成cfe.bin参数以后,保存这些参数回去,需要对这些参数进行校验,把校验码写回cfe.bin,位置在FLSH标志之后的第9和第10个字节,cfeedit只能编辑老的cfe.bin(参数内容从0x400到0x1400,版本号1.05),新版的参数区域已经增大(比如布法罗wzr-1750dph的cfe的参数区域已经是0x400到0x1700,版本号1.46,腾达AC15的cfe的参数区域已经从0x400-0x2400,版本号1.47),这样导致cfeedit无法识别,由于源码已经写死了,跟不上cfe版本的更新,会提示不正确的cfe,因此我想自己写一个类似cfeedit的工具,但是不知道校验方式和校验的起始位置,我说的可能不太清楚,你可以用二进制工具打开一个cfe.bin看看就明白了.
我想我明白你的意思了,不过我也不知道具体的方法,我甚至都不知道还有这个校验。
从恩山一直搜到您的博客,dir868L的CFE和固件帮助很大,再次感谢,现在手上有个魅族的R10 OEM路由器,未量产的,拆机配置是4708加双4360,能刷入AC68U的openwrt但是没有WiFi,刷入R7000的梅林有WIFI但是因reset键GPIO不对重启变砖,能否讲解一下如何修改GPIO
确定变砖是因为reset的gpio不对引起的?GPIO定义需要在原版系统中,通过接入TTL线,查看开启引导日志截取。个人感觉应该是内核的引导地址不一致引起的变砖,主要原因是你那个魅族路由器的Bootloader与R7000的梅林固件定义的内核地址不一样,无法引导。
解决方式有两种:1是找出正确的内核引导地址,修改梅林源代码,重新编译。2是编译出魅族路由器的梅林专属CFE。
修改梅林固件的GPIO在源码/release/src/rc/init.rc文件中,搜索机型RTAC68U可找到
大佬好 ,可以把bcm4708A0 的数据手册和参考手册发我一份呢 ,我也想折腾一下,谢了 194795814@qq.com 我的邮箱,跪谢了
哪有手册那种东西,自己阅读代码自己悟,怎么可能存在手册,你去问博通或者华硕看有没有
你好,看了你的文章,获益良多,我也试着为自己的路由编译了cfe,去除了官方cfe的一些限制,cfe已经自带miniweb,通用性更高,但是有一个问题,还请不吝赐教:就是如何实现按住reset通电,让路由进入cfe模式?请问修改何处代码,再次感谢!