找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
发表于 2022-10-3 13:18 | 显示全部楼层 |阅读模式
本帖最后由 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 收起 理由
chinaz + 1 麻烦大神制作路由器专用的给我们新手,新手.

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2022-10-3 22:53 | 显示全部楼层
强大如斯~!!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-4 09:01 | 显示全部楼层
感谢楼主分享~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-4 11:04 | 显示全部楼层
感谢分享,大佬NB
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-4 11:22 | 显示全部楼层
支持一下。。。。。。。。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-4 13:07 | 显示全部楼层
真的很好好
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-4 13:08 | 显示全部楼层
感谢分享,大佬NB
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-4 15:04 | 显示全部楼层
感谢楼主分享~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-5 10:05 | 显示全部楼层
感谢楼主分享~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-5 17:48 | 显示全部楼层
血刺学习啦啦啦
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 02:37 | 显示全部楼层
前排刘明
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 08:54 | 显示全部楼层
强大如斯~!!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 11:06 | 显示全部楼层
感谢楼主分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-9 12:34 | 显示全部楼层
感谢分享,可以考虑不用去魔改breed了,楼主,怎样改分区大小,是不是在action里面直接改?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 21:37

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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