找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 11521|回复: 82

一种在线定制 MT7621 u-boot 的方法

  [复制链接]
本帖最后由 DragonBluep 于 2023-5-6 14:05 编辑

没有编程器不要刷 bootloader,仅作技术交流之用!

制作方法:
1. 从 GitHub fork 仓库:DragonBluep/uboot-mt7621
2. 进入自己仓库的 Actions 页面,从 Workflows 中选择 Build customized u-boot
3. 点击 Run workflow 并配置相关参数诸如:Flash 类型,复位键引脚等。

4. 等待完成后从 Artifacts 下载最终得到的 u-boot 文件,刷写 u-boot-mt7621.bin 到第一个分区。


一些 Actions 输入参数的说明:
1. 闪存类型 Flash Type:
    NOR 或者 NAND 或者支持 NMBM 的 NAND。目前已知仅有 H3C 和 ASUS 的 Wi-Fi6 设备支持 NMBM。
    容量小于 64 MiB 一般就是 NOR Flash。
2. 分区表 MTD Partition Table:
    MTD 分区表必须和你要启动的固件的分区表相匹配,可以从固件源码的设备树 dts 文件中找到。
    u-boot 和 firmware 可以改大小,不可以重命名,其它分区的名字大小可以随便改,可以添加/删除分区。
3. 内核加载地址 Kernel Load Address:
    内核位于闪存中的偏移地址。内核加载地址是 firmware 分区前的所有分区大小的十六进制表示。
    比如说:分区表为:192k(u-boot),64k(u-boot-env),64k(factory),-(firmware)
    192kB + 64kB + 64kB = 320kB = 320 * 1024 B = 327680 B = 0x50000 B
    因此内核加载地址需要配置为 0x50000
4. 复位键 Reset Button GPIO:
    复位键的引脚 GPIO 编号,可以从固件源码的设备树 dts 文件中找到。
    取值范围 0 - 48,任意其它值为禁用,不适配此项将无法按复位键进入恢复模式。
5. 指示灯 Reset Button GPIO:
    指示灯的引脚 GPIO 编号,可以从固件源码的设备树 dts 文件中找到。
    取值范围 0 - 48,任意其它值为禁用,不适配此项按复位键时指示灯将不会闪烁。
6. CPU 主频 CPU Frequency:
    最好不要超频,使用 880 MHz 就好,这已经是 2013 年左右的芯片了,上限就在那里。
    取值范围 400 - 1200,频率太高可能会无法启动。
7. 内存频率 DRAM Frequency:
   不要超出内存芯片 datasheet 上的最大值,如果不清楚,板载 DDR2 就选800,板载 DDR3 就选 1200。
8. DDR 兼容模式 Use Old DDR Timing Parameters:
    勾选之后将会使用旧的 u-boot 1.1.3 的内存时序参数,有时候 DDR3(目前仅发现 512 MiB)
    存在兼容性问题无法启动,此时可以尝试勾选此项并适当调低内存频率。
9. 波特率 Baud Rate:
   串口波特率,老一点的设备一般是 57600。

注意事项:
1. 升级 u-boot 时,如果启动菜单选项有 Upgrade bootloader (advanced mode),务必选这个。
2. 内存除以下特殊情况外只需要选择对应的大小和类型就行,一些需要额外关照的次品内存芯片(白片/黑片):
    制造商 Winbond 型号 W9751G6KB_A02@1066MHz 请选择 DDR2-W9751G6KB-64MiB-1066MHz
    制造商 Winbond 型号 W971GG6KB25@800MHz 请选择 DDR2-W971GG6KB25-128MiB-800MHz
    制造商 Winbond 型号 W971GG6KB18@1066MHz 请选择 DDR2-W971GG6KB18-128MiB-1066MHz  
    以上几种情况需要将内存频率配置为蓝色的对应值。
    集成 128 MiB 的 MT7621DA,内存芯片表面没有标识或者百度 / 必应上找不到 datasheet 的 128 MiB DDR3 请选择 DDR3-128MiB-KGD
3. DDR3 要是启动困难可以尝试勾选 Use Old DDR Timing Parameters 以使用旧的内存时序参数 "0x0A000000"。
    DDR2 64MiB、DDR3 128/256 MiB 测试通过,DDR3 512 MiB 有一个坛友反馈正常,另一个反馈概率性启动困难,都是硬改的。
    研究了一下,BREED 和旧版 u-boot 里的默认参数都是 "0x0A00"。新的 u-boot 使用的是 "0x0C00"。
    所以具体使用 "0x0A00" 还是 "0x0C00" 自己凭感觉决定,建议使用新参数,启动困难再改,我胡诌的。
4. 硬改 512 MiB 内存最好挑选已知兼容的芯片:
    NT5CC256M16EP-EK  MT41K256M16TW-107  NT5CB256M16DP-EK  或者拆机帖见过的芯片
5. 常见的闪存都支持,但最好确定一下你的闪存是否在列表中
   SPI: uboot-mt7621/spi_flash_ids.c at main · DragonBluep/uboot-mt7621 (github.com)
   如果你的闪存 ID 无法在上述文件中找到,可以从以下 u-boot 最新源码中查找对应值,然后照葫芦画瓢修改并粘贴到源码中
   SPI: u-boot/spi-nor-ids.c at master · u-boot/u-boot (github.com)
6. 如果无法进入网页刷机界面,尝试以下解决办法:
   更换好一点的网线,最好长度一米以上,8 根线芯的,有时候协商不上千兆速率,会导致无法打开网页;
   在控制面板\网络和 Internet\网络连接中把以太网适配器右键禁用再重新启用;
   在 win10 / win11 设置中搜索网络重置并应用;
   尝试更新有线网卡驱动;

u-boot 使用方法:
1. 配置电脑的静态 IP 地址为:
   IP 地址:  192.168.1.2
   掩码:      255.255.255.0
   网关:      192.168.1.1(或者留空)
2. 网页刷写固件方法:
   a) 按住复位键不放,插入电源等待指示灯闪烁1秒 (1~6秒区间均可)后即可松开复位键。
   b) 从浏览器打开 http://192.168.1.1 进入恢复页面,上传固件写入到 Flash 中。

3. TFTP 加载 initramfs kernel 方法:
   a) 按住复位键不放,插入电源等待指示灯闪烁6秒自动停止后即可松开复位键。
   b) 使用 TFTP 服务器(如 tftpd64)上传 initramfs 镜像 "recovery.bin"。系统将被下载到 RAM 中启动,不会写入 Flash。

如何适配你的设备,以 RAISECOM MSG1500 为例:
1. 首先找到一份源码,确定复位键、指示灯的 GPIO 和分区表,或者从 TTL 输出的日志也行
    git.openwrt.org Git - target/linux/ramips/dts/mt7621_raisecom_msg1500-x-00.dts
2. 由上述信息得闪存类型为 NAND,复位键配置为 15,LED 配置为13, 分区表写为 512k(u-boot),512k(config),256k(factory),-(firmware)
    内核加载地址为 0x140000,将参数填入 Actions,就可以进行制作。
3. 再给个 JCG Q20 的例子:NAND, 256MiB DDR3, 1200MHz DDR, Baud 115200, Reset 18, LED 15, CPU 880MHz
    kernel addr:  0x180000, partition table: 512k(u-boot),512k(config),512k(factory),-(firmware)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
chi*** + 1 麻烦大神制作路由器专用的给我们新手,新手.

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
强大如斯~!!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢楼主分享~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢分享,大佬NB
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

支持一下。。。。。。。。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

真的很好好
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢分享,大佬NB
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢楼主分享~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢楼主分享~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

血刺学习啦啦啦
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

前排刘明
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

强大如斯~!!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢楼主分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢分享,可以考虑不用去魔改breed了,楼主,怎样改分区大小,是不是在action里面直接改?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
dajie125 发表于 2022-10-9 12:34
感谢分享,可以考虑不用去魔改breed了,楼主,怎样改分区大小,是不是在action里面直接改?

直接在 Actions 里填写适合你的固件的分区表和内核加载地址就好了,计算好内核的地址,在 firmware 分区前凑够足够的空间大小就行。要是想深度定制一些功能可以自己改源码。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 17:14

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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