基于 SFLY SP32 编程器的 SPI-NAND 分区文件烧录
技术报告 · MultiFileConfig 制作分区 .ini + SP32SW 加载烧录,覆盖 128KB 块偏移量与 Spare/OOB 选项 | 编制日期 2026-10-14 | 版本号 Rev 1.0
.ini 配置文件;SP32SW 烧录软件加载这份 .ini 后,自动把各分区写到 SPI-NAND 的对应位置。本文把这条链路完整讲清楚,包括 Block Offset 计算、烧录页大小选择、NAND 烧录选项核对、以及 XTX 存储的适配建议。1 概述
嵌入式 SPI-NAND 通常按「分区」组织镜像,本文讲清楚怎么一次性把多个分区烧到正确位置。
在嵌入式 Linux / RTOS 产品中,SPI-NAND Flash 通常会被划分为多个逻辑分区,每个分区承担一种职责——例如 u-boot、kernel、rootfs、data/app、config。每个分区对应一份独立的烧录文件(镜像 .bin),它们必须被写到 NAND 物理空间的指定位置才能正常启动运行。
SFLY SP32 系列编程器(SP325 / SP328 / SP328P)配套的工具链把这件事拆成两段:
- 阶段 A(离线制作):用 MultiFileConfig 工具把所有分区文件连同它们的Block Offset(块偏移量)和烧录页大小打包成一份
.ini配置文件; - 阶段 B(产线烧录):在 SP32SW V1.47 或以上版本中加载这份 .ini,编程器自动按分区表写入 NAND。
来源:整理自公开技术资料
2 准备工作与工具链
动手前确认硬件、软件、辅助工具三类资源齐备并匹配。
2.1 硬件:SFLY SP32 系列编程器
| 型号 | 形态 | 适用场景 |
|---|---|---|
| SP32SW | 软件名称(编程器上位机程序) | V1.47 或以上版本 |
| SP325 | 编程器硬件 | 小批量/单台 SPI-NAND 烧录 |
| SP328 | 编程器硬件 | 产线批量烧录(8 工位可选) |
| SP328P | 编程器硬件(带 UID 加密) | 需要 UID 安全加密的产线 |
2.2 软件版本
- SP32SW V1.47 或以上版本——过低版本不识别新分区格式。
- MultiFileConfig(推荐 V1.7 或以上)——SFLY 官方离线配置工具,用于生成
.ini分区配置。
2.3 典型文件清单
一个典型的 SPI-NAND Linux 项目里 MultiFileConfig 需要管理的文件:
| 文件名 | 典型大小 | 所在分区起始(示例) | 说明 |
|---|---|---|---|
| config.bin | ≈ 128KB | 0x4800000 | 出厂配置 / 默认参数 |
| u-boot.bin | ≈ 256~512KB | 0x000000 | 引导加载器 |
| log.bin | ≈ 数 MB | — | 日志分区(可选) |
| rootfs.bin | ≈ 几十~上百 MB | 0x800000 | 根文件系统镜像 |
| uImage.bin | ≈ 几 MB | 0x100000 | 内核映像 |
3 用 MultiFileConfig 制作分区配置
本阶段产出一份 .ini 文件,包含分区表、Block Offset、烧录页大小等所有烧录参数。
3.1 新建配置
打开 MultiFileConfig 工具,点击左上角「新建配置」按钮,工具进入空白编辑态(图 2)。
来源:SFLY MultiFileConfig 工具界面
3.2 选择保存目录与文件名
弹出「另存为」对话框,选择保存目录(建议与 .bin 镜像同目录)并命名(图 3)。
来源:SFLY MultiFileConfig 工具界面
随后弹出「配置类型」对话框,选中「NAND Flash 分区文件(块偏移量)」(图 4),这是 SPI-NAND 分区模式专用的格式。
来源:SFLY MultiFileConfig 工具界面
3.3 增加分区镜像文件
点击「增加文件」按钮(主界面右上方),在文件对话框中多选所有分区的 .bin 镜像(图 5)。
来源:SFLY MultiFileConfig 工具界面
3.4 设置 Block Offset(块偏移量)
双击某个文件所在行,弹出「File Item」编辑框,输入该分区的 Block Offset(图 6)。
支持 DEC(十进制)与 HEX(十六进制)切换;填入数值 = 分区起始字节地址 ÷ 块大小,具体计算见 第 4 章。
来源:SFLY MultiFileConfig 工具界面
3.5 设置烧录页大小
在主界面上方「烧录页大小」下拉框中选择页大小(决定是否烧录 Spare/OOB 区),所有文件配置完成后点击「保存配置」(图 7)。
来源:SFLY MultiFileConfig 工具界面
2KB;若文件已包含 OOB,必须选 2KB+64 等带 Spare 的选项,否则数据错位或烧录失败。4 Block Offset 计算原理
Block Offset 是分区定位的核心参数——填错则分区被写到错误位置,系统无法启动。
Block Offset(块偏移量 / 块编号)的计算式是:
示例(按原文给出的样例):
- 分区起始地址:
0x100000(1MB) - 块大小:
128 KB(131072 字节) - Block Offset =
0x100000 ÷ (128 × 1024)=1048576 ÷ 131072= 8
来源:整理自公开技术资料
4.1 Block Offset 的本质
SPI-NAND 以「块(Block)」为单位擦除、以「页(Page)」为单位读写;Block Offset 表示该分区从第几块开始写,编程器按此把对应 .bin 烧到物理上正确的块位置。一个典型嵌入式项目里 Block Offset 通常是这样的分布:
| 分区 | DEC | HEX | 说明 |
|---|---|---|---|
| u-boot | 0 | 0x000 | 起始块;引导加载器,最先运行 |
| kernel | 8 | 0x008 | 示例值:起始地址 0x100000 ÷ 128KB |
| rootfs | 16 | 0x010 | 示例值:起始地址 0x200000 ÷ 128KB |
| data/app | 64 | 0x040 | 示例值:起始地址 0x800000 ÷ 128KB |
| config | 576 | 0x240 | 示例值:起始地址 0x4800000 ÷ 128KB |
16 (DEC),切到 HEX 后不会变成 0x16,而是直接以 十进制 16 显示为 0x10。建议全程只用一种进制(推荐 HEX),避免来回切换误读。u-boot 找不到内核而无法启动。量产前务必用 读回比对验证每个分区的实际落点。