d13x_demo88-nand 方案阶段ABROM PBP一、阶段 A 总览一句话上电 → BROM固化→ 从 SPI NAND 读 bootloader.aic → 先跑 PBP初始化 PSRAM→ 再跳 tinySPL这一阶段没有 C 源码可改只有BROM芯片出厂固化不可改PBP预编译二进制d13x.pbp 可配置pbp_cfg.bin二、BROM 到底做什么极简版BROM 是上电第一条指令完全固化SDK 里看不到代码。它只做 4 件事上电复位初始化最小系统判断启动设备这里固定SPI NAND从 NAND 的spl 分区读取bootloader.aic加载并先执行 PBP 部分BROM 会通过a0 / a1寄存器把启动信息传给后面。三、PBP 到底做什么核心PBP Pre-Boot Program在 tinySPL 之前运行专门初始化 PSRAMPBP 组成d13x.pbp预编译程序闭源pbp_cfg.bin配置文件你可修改来自pbp_cfg.jsonPBP 核心任务d13x_demo88-nand 专用读取 pbp_cfg.bin 配置初始化 PSRAM最重要识别 PSRAM 型号配置 XSPI 时序初始化内存空间初始化早期 UART打印 PBP log初始化 JTAG可选检测升级脚可选完成后跳转到 tinySPLbootloader.bin四、镜像结构spl 分区存放bootloader.aic bootloader.aic pbp_ext.aic loader.aic pbp_ext.aic d13x.pbp pbp_cfg.bin loader.aic bootloader.bintinySPL pbp_cfg.bin启动顺序BROM → 加载 bootloader.aic → 先跑 pbp_ext → 再跑 loader五、你能改什么只有这一个文件target/d13x/demo88-nand/pack/pbp_cfg.json可配置内容PSRAM 初始化参数cfg0~cfg3早期 UART 引脚与打印升级模式引脚JTAG 配置修改后编译会自动生成pbp_cfg.bin六、启动流程最清晰时序上电 ↓ BROM片内ROM不可改 ↓ 从 SPI NAND spl 分区读 bootloader.aic ↓ 执行 PBPd13x.pbp pbp_cfg.bin ↓ 初始化 PSRAM 初始化 UART 初始化 JTAG可选 ↓ PBP 完成 → 跳转到 tinySPLbootloader.bin七、调试怎么看最实用1. 串口出现 Pre-Boot 日志→ 说明BROM 正常 PBP 已运行2. 串口无任何输出→ BROM 没读到 NAND→ 或 PBP 初始化 PSRAM 失败3. 卡在 PBP99% 是PSRAM 配置不对去改pbp_cfg.json里的psram.cfg4. 进不去 tinySPLPBP 完成但 PSRAM 没起来 → 跳转失败八、阶段 A 总结BROM固化上电启动从 SPI NAND Flash 的spl分区读取bootloader.aic镜像文件并将其加载到芯片内部 SRAM 中执行。其中bootloader.aic镜像的第一部分pbp_ext.aic包含 PBP 程序会被优先加载并执行。PBP初始化PSRAM 早期串口 JTAG无 C 源码只能改pbp_cfg.json镜像bootloader.aic PBP tinySPLPBP 成功 PSRAM 就绪 后面才能跑 SPL / APP