跳转至

调整 WS53 Flash 分区

本文以扩展客户预留区为例,说明如何同步修改分区表和链接容量,并检查调整后的配置。默认分区 ID、地址换算及布局见内存布局。

准备与适用范围

  • 适用于 WS53 SDK 1.10.106 的默认 ws53_liteos_app 布局,调整前先核对本地配置是否与本文一致。
  • 分区表文件:src/build/config/target_config/ws53/param_sector/param_sector.json。
  • 链接容量定义:src/drivers/boards/ws53/memory_config/include/memory_config_common.h。
  • 需要掌握当前镜像、升级包和客户数据的实际空间需求;容量不足时不能直接套用示例。

本文所有配置区间采用 Flash 相对偏移,记法 [起点, 终点) 不包含终点。

可调整范围与约束

风险提示: 修改固定引导区、APP 起始地址或保留数据区,可能导致设备无法启动或数据丢失。变更前应保存原始分区配置、匹配的固件和需要保留的数据,并确认开发板的恢复烧录方式。以下示例仅说明容量调整关系,不代表已完成实板启动或升级验证。

下表均为默认布局的相对偏移,单位为字节。

区域 偏移范围(左闭右开) 调整约束
固定引导与参数区 [0x000000, 0x030000) 不可调整,包含根公钥、SSB、出厂配置、NV 备份和 FlashBoot 等
APP 镜像区 [0x030000, 0x270000) 0x20 起始偏移保持不变;调整尾部容量时同步修改 0x20、0x21 长度,保持 Acore 起点 0x05D000 不变
FOTA 镜像区 [0x270000, 0x3F3000) 0x22 起点必须接续 APP 镜像区终点;用于压缩升级、OTA 数据、产测镜像或 B 面镜像时,以对应方案确定容量
客户预留区 [0x3F3000, 0x3FA000) 起点接续 FOTA 区终点,可按需求分配给 0x30~0x34,总范围不得侵入固定区域
固定功能区 [0x3FA000, 0x400000) 死机信息 0x11 和 NV 数据 0x10,不可调整

可调整分区的起始偏移和大小均须按 4 KiB(0x1000)对齐。固定分区保持原值,不要为满足对齐而改动根公钥等既有条目。

FOTA 升级包保存注意事项给出了运行程序区与压缩升级包存放区约 1:0.7 的容量参考。该比例来自压缩率估计,不能替代实际升级包大小检查,也不能直接作为 0x20 整体范围的硬性下限:默认 0x22 / 0x20 约为 0.672,而 0x22 / 0x21 约为 0.729。确定容量时必须明确升级对象,并检查所用方案的完整空间需求。

调整示例:扩展客户预留区

假设 Acore 应用区具有至少 8 KiB 可缩减余量,且 FOTA 区减少 4 KiB 后仍满足所用升级方案,可将这 12 KiB 合并到 0x30。

分区 ID 起始偏移:调整前 → 调整后 长度:调整前 → 调整后 调整后结束偏移(不含)
0x20 0x030000 → 0x030000 0x240000 → 0x23E000 0x26E000
0x21 0x05D000 → 0x05D000 0x213000 → 0x211000 0x26E000
0x22 0x270000 → 0x26E000 0x183000 → 0x182000 0x3F0000
0x30 0x3F3000 → 0x3F0000 0x007000 → 0x00A000 0x3FA000
  1. 在 param_sector.json 中同步减少 0x20、0x21 的长度各 0x2000。两者重叠,合计释放 8 KiB。
  2. 将 0x22 起点前移 0x2000,长度减少 0x1000,使终点变为 0x3F0000。
  3. 将 0x30 起点前移 0x3000,长度增至 0xA000,保持终点 0x3FA000 不变。
  4. 同步修改 src/drivers/boards/ws53/memory_config/include/memory_config_common.h 中的 Acore Flash 长度定义:

    #define FALSH_APP_PROGRAM_LENGTH (0x211000 - CODE_INFO_OFFSET)
    

    当前默认值为 (0x213000 - CODE_INFO_OFFSET),CODE_INFO_OFFSET 为 0x300。FALSH 是源码中宏名的实际拼写;acore_memory_config.h 基于此宏计算 APP_FLASH_PROGRAM_LENGTH。不要将其与同文件中的旧宏 APP_PROGRAM_LENGTH 混淆。

配置一致性检查

  • 核对 起始偏移 + 长度 = 结束偏移,确认 APP、FOTA、预留区边界连续,可调整范围按 4 KiB 对齐。
  • 保留 0x20 与 0x21 原有的包含关系,其他分区不得引入意外重叠或越界。
  • 核对链接区域与分区容量一致,并检查生成镜像和升级包实际大小;具体构建命令见编译方法。
  • 分区配置变更必须反映到实际生成和烧录的分区参数镜像中,仅更换应用镜像不足以更新分区表。
  • 验证新布局下的启动、升级和客户数据保存。若异常,停止使用该布局,按预先确认的恢复方式还原原始分区配置及匹配固件;仅通过文档检查或编译不能认定布局已验证。