何当共剪西窗烛
唯有踏浪执子归 人不怜我我自怜

【授人以渔】华硕梅林固件CFE编译方法

以未修改的原梅林源码为例,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文件夹里,下面浏览下
$(源码置放目录)/asuswrt-merlin/release/src-rt-6.x.4708/cfe/build/broadcom/bcm947xx/compresse



可以看到里面的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


西窗浪人首发,转载附初始地址



赞(1) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《【授人以渔】华硕梅林固件CFE编译方法》
文章链接:https://www.bigxd.com/2019/03/483.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 15

评论前必须登录!

 

  1. #1
    Avatar photo

    老大,可有rt-ac3200的cfe,方便的话邮箱一个,[email protected]非常感谢!!!

    freedomcooky5年前 (2019-03-16)
  2. #2
    Avatar photo

    你好,知道CFE Edit怎么把参数保存回去的吗?也就是CFE里面”FLSH”标志后面的校验算法是怎么实现的吗?
    目前已经知道的是FLSH,接下来四个字节是参数的长度,接下来的是CRC算法和版本,请问这个CRC算法怎么实现的?谢谢!

    斐然5年前 (2019-04-07)
    • Avatar photo

      百度crc32

      戏子醉5年前 (2019-04-08)
      • Avatar photo

        肯定不是CRC32算法,因为只占有2个字节,可能是CRC16或者CRC8,问题是不知道用的那个公式

        斐然5年前 (2019-04-08)
        • Avatar photo

          跟我争辩有意思吗,又要来问,又不相信。
          /* 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;
          }

          戏子醉5年前 (2019-04-09)
        • Avatar photo
          • Avatar photo

            你好,我不是要和你争,是讨论。您给出的事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看看就明白了.

            斐然5年前 (2019-04-09)
          • Avatar photo

            我想我明白你的意思了,不过我也不知道具体的方法,我甚至都不知道还有这个校验。

            戏子醉5年前 (2019-04-09)
  3. #3
    Avatar photo

    从恩山一直搜到您的博客,dir868L的CFE和固件帮助很大,再次感谢,现在手上有个魅族的R10 OEM路由器,未量产的,拆机配置是4708加双4360,能刷入AC68U的openwrt但是没有WiFi,刷入R7000的梅林有WIFI但是因reset键GPIO不对重启变砖,能否讲解一下如何修改GPIO

    图拉丁5年前 (2019-04-22)
    • Avatar photo

      确定变砖是因为reset的gpio不对引起的?GPIO定义需要在原版系统中,通过接入TTL线,查看开启引导日志截取。个人感觉应该是内核的引导地址不一致引起的变砖,主要原因是你那个魅族路由器的Bootloader与R7000的梅林固件定义的内核地址不一样,无法引导。
      解决方式有两种:1是找出正确的内核引导地址,修改梅林源代码,重新编译。2是编译出魅族路由器的梅林专属CFE。
      修改梅林固件的GPIO在源码/release/src/rc/init.rc文件中,搜索机型RTAC68U可找到

      戏子醉5年前 (2019-04-22)
  4. #4
    Avatar photo

    大佬好 ,可以把bcm4708A0 的数据手册和参考手册发我一份呢 ,我也想折腾一下,谢了 [email protected] 我的邮箱,跪谢了

    臭老九4年前 (2020-04-13)
    • Avatar photo

      哪有手册那种东西,自己阅读代码自己悟,怎么可能存在手册,你去问博通或者华硕看有没有

      戏子醉4年前 (2020-04-14)
      • Avatar photo

        你好,看了你的文章,获益良多,我也试着为自己的路由编译了cfe,去除了官方cfe的一些限制,cfe已经自带miniweb,通用性更高,但是有一个问题,还请不吝赐教:就是如何实现按住reset通电,让路由进入cfe模式?请问修改何处代码,再次感谢!

        afeng113年前 (2021-02-11)

觉得文章有用就打赏一下文章作者

微信扫一扫打赏