# 内置 BL2 Payload 目录

## 从 ATF-Mediatek 一键构建（UART RAM / mudl）

在仓库内任选其一：

  ./scripts/build-all-bl2.sh
  ./ATF-Mediatek/build-bl2-bundled.sh

`--help` 查看选项（如 `-o` 指定输出目录、`--no-install` 仅编译）。
依赖：在 `ATF-Mediatek/toolchain/` 下解压
`openwrt-toolchain-24.10.5-mediatek-filogic_gcc-13.3.0_musl.Linux-x86_64` 与
`openwrt-toolchain-24.10.5-mediatek-mt7629_gcc-13.3.0_musl_eabi.Linux-x86_64`。
Filogic 包用于 MT798x/MT7622（`aarch64-openwrt-linux-musl-`）；MT7629 包用于 MT7629（默认 `arm-openwrt-linux-muslgnueabi-`，可用 `MT7629_CROSS_COMPILE` 覆盖）。
产物为 `BOOT_DEVICE=ram` + `RAM_BOOT_UART_DL=1` + **`RAM_BOOT_UART_STORAGE=1`**。
`build-bl2-bundled.sh` 对 MT7981/7986/7987/7988 分别编译 **`RAM_UART_STORAGE_MEDIA=spim-nand`**、**`spim-nor`** 与 **`emmc`** 三套 BL2（每个镜像只链入一种存储后端）。
MT7622 仅 eMMC；MT7629 为 stub（脚本为 SPIM-NAND / **SPIM-NOR** / eMMC 各输出一份同名副本以便 Qt 切换）。
手动 `make` 仍可用 **`RAM_UART_STORAGE_MEDIA=both`** 编出 NAND+eMMC 合一镜像（默认未指定时即为 both）；**`spim-nor`** 仅单独指定时编出。

将 BL2 文件放置于此目录。默认命名格式（与界面 SoC / DRAM / Flash 类型 / NMBM 一致）：

  BL2-<芯片名称>-<DDR类型>-<Flash类型>[-NMBM].bin

其中 Flash 类型与下拉框一致：SPIM-NOR、SPIM-NAND、eMMC。勾选「启用 NMBM」且为 SPIM-NAND 时
查找带「-NMBM」后缀的文件；否则使用无该后缀的文件。

示例（MT7981 + DDR3）:
- BL2-MT7981-DDR3-SPIM-NOR.bin
- BL2-MT7981-DDR3-SPIM-NAND.bin
- BL2-MT7981-DDR3-SPIM-NAND-NMBM.bin
- BL2-MT7981-DDR3-eMMC.bin

兼容旧版文件名（构建脚本若仍输出下列名称，程序会自动回退查找）：

MT7622/MT7629（仅支持 DDR2/DDR3）:
- BL2_MT7622_DDR2.bin / BL2_MT7622_DDR2_NMBM.bin
- BL2_MT7622_DDR3.bin / BL2_MT7622_DDR3_NMBM.bin
- BL2_MT7629_DDR2.bin / BL2_MT7629_DDR2_NMBM.bin
- BL2_MT7629_DDR3.bin / BL2_MT7629_DDR3_NMBM.bin

MT7981/MT7986/MT7987/MT7988（支持 DDR3/DDR4）:
- BL2_MT7981_DDR3.bin / BL2_MT7981_DDR3_NMBM.bin
- …（其余芯片同原命名）

启用 NMBM 时优先 NMBM 变体，再尝试无 NMBM 后缀；新格式与旧格式均按此顺序尝试。

说明（由 build-bl2-bundled.sh 生成时）：
- `-NMBM` 与对应无后缀 SPIM-NAND 文件内容相同：RAM UART BL2 与 SPI-NAND **NMBM 启动布局**无关，仅便于界面勾选。
- 每个 `…-SPIM-NAND.bin` 仅含 SPI NAND 栈；`…-SPIM-NOR.bin` 仅含 SPI NOR 栈；`…-eMMC.bin` 仅含 eMMC 栈（体积与初始化路径更简单）。
- 界面 **「完成后重启设备」** 依赖 BL2 UART 协议命令 **0x0C**（`SYSTEM_RESET`），须使用含该命令的新树或自编镜像。
- MT7987 的 DDR3 与 DDR4 为不同 BL2（`MT7987_FORCE_DDR3` / `MT7987_FORCE_DDR4`）；未强制时 ATF 仍可读 strap 自动区分。
- MT7622 的 DDR2 名对应 `DDR3_FLYBY=1` 构建，非独立 DDR2 颗粒类型。
- MT7629 的 SPIM-NAND 与 eMMC 文件名为同一 stub 的副本。
