Skip to content

RTC、NVS 与数据安全

分区

分区偏移大小用途
nvs0x900024 KiBprimary/backup 存档
phy_init0xF0004 KiBPHY
factory0x100008 MiB正式应用
storage0x8100007 MiB后续内容预留
coredump0xF10000512 KiB崩溃诊断

Save envelope

固件存档包含 magic PSTR、schema、state size、可信墙钟标志和 FNV checksum。读取顺序为 primary → backup;损坏或未知格式被拒绝,不把随机字节 normalize 成“看起来能玩”的状态。

Schema 演进

阶段Envelope / State变化
v6schema1 / v2基础设置与 240-byte state
v7 初版schema2 / v3倾斜档位等 v7 状态
2026-08-19schema3 / v4ambient display 与电源保存收口

host tests 覆盖 schema 1/2/3 迁移、v4 round-trip、损坏 primary 回退 backup、checksum 拒绝、空存档和 factory seal。

写入节流

  • 普通 dirty 状态最多每 60 秒写一次。
  • 购买、设置、TEAM、星礼、发射立即写。
  • ambient entry、restart、poweroff 使用同步保存屏障。
  • 关机前读回并解码验证;保存失败取消软件关机。

RTC 与离线收益

PCF85063 保持断电墙钟。启动时读取 integrity;不可信时用固件构建时间播种。只有当前与存档时间都可信才结算,避免 RTC 初始值或回拨制造无限资源。

实机验证从 v6 读取 schema1/v2,迁移并写 schema2/v3,后续复位直接读取新 primary;v4 升级又在电源循环前后核对 taps / purchases / settings 与星火离线增量。

回滚与 coredump

烧录前完整备份 16 MiB Flash。coredump 分区已初始化,验证期间没有有效崩溃转储。恢复原机属于覆盖整片 Flash 的破坏操作,必须确认端口和镜像哈希后单独执行。