Files

4.0 KiB

媒体内存与分区适配

通用规则

媒体内存由用户提供明确数值和单位。Skill 可以转换为目标文件已有格式,但不根据算法、媒体规格或经验自行计算容量。

写入前读取实际构建引用和解析格式;写入后重新解析,验证字节值、唯一性和已知容量约束。未知单位、目标键重复、文件不唯一或配置链不明确时停止对应修改。

CV181X 媒体内存

规范化芯片型号后,CV181* 路由为 CV181X。典型型号包括 CV1810、CV1811C、CV1815JA。

从参考项目实际构建配置定位唯一生效的 memmap.py,只修改:

ION_SIZE

保持该文件现有的数值表达、对齐和注释风格。不存在、存在多个生效候选或 ION_SIZE 语义不明时停止,不创建推测性文件。

CV184X 媒体内存

规范化芯片型号后,CV184* 路由为 CV184X。典型型号包括 CV1841CP、CV1842CP、CV1842HP、CV1843HP。

根据实际板卡 build type 定位唯一的:

cv18xxcp_wevb_xxxx_spinand_defconfig

用户必须同时明确:

CONFIG_ION_SIZE
CONFIG_RTOS_ION_SIZE

小核不使用 ION 时也要明确给出零值或禁用值。只修改板卡 defconfig,不直接修改 configs/kernel/.config。若 .config 中存在不同值,记录差异并通过后续配置生成验证;项目流程把 .config 当作不可再生输入时停止并报告。

xxxx 是板卡版本;每套配置下应定位一个板卡 defconfig。默认继承参考版本。用户改变版本时按主工作流一致更新整个引用链。

其他芯片

SigmaStar 等其他前缀不自动修改媒体内存。报告目标文件和人工修改警告;GPIO、分区或项目命名等独立工作可以继续。

前缀匹配 CV181/CV184 但项目中不存在对应结构时也不得硬套规则。

分区表差量

用户主要提供发生变化的分区名称和目标大小。未提及的分区名称、顺序、属性、偏移和大小继承参考项目。

  1. 从板卡版本、Flash 类型和同步脚本定位唯一生效的分区源定义;不修改 SDK 生成副本。
  2. 对项目原有自动顺序布局,按同一规则重新计算受影响的后续偏移。
  3. 固定绝对偏移、Boot、保留区域和安全相关分区不自动移动。
  4. 检查擦除块对齐、偏移重叠、总容量、保留区以及可用镜像能否装入。
  5. 多个分区变体并存且无法从实际 build type 唯一定位时停止。
  6. 不修改存储驱动、分区解析器、Boot 选择逻辑或升级策略;这些是新的工作包。

编译后镜像余量门禁

全量 BSP 编译完成后必须从当前项目 configs/ 唯一定位实际生效的 partition*.xml;存在多个候选时,不按文件名或时间猜测,必须通过 record_build_handoff.py --partition-table <项目内精确路径> 指定构建实际使用的文件。

对最终版本 imgs 目录执行以下强制检查:

  • kernel.bin 和 rootfs.bin 都必须是唯一、非空普通文件;kerne.bin 不作为别名,除非后续实际构建和分区契约正式改变文件名;
  • 按分区 XML 的 file 属性查找对应项并将十进制 size_in_kb 按 1024 字节换算;
  • 同一镜像对应 A/B 等多个分区时,以其中最小分区作为有效容量;
  • 有效分区字节数 - 实际镜像字节数 >= 512 * 1024 才通过,恰好 512 KiB 允许通过;
  • 镜像缺失/重复、分区项缺失、大小非法、XML 无法解析或余量不足都阻止 build_passed 和 BSP→PSP 交接。

通过结果记录分区表绝对路径和 SHA-256、镜像绝对路径/大小、全部对应分区、最小容量、实际余量和固定阈值。该门禁不允许通过修改阈值、四舍五入为 MB 或选择较大的 A/B 分区绕过。

证据

在 adaptation_report.md 记录每个配置键或分区的原值、新值、单位转换、源文件、有效构建类型和检查结果。未知总容量或未执行编译后 kernel/rootfs 余量检查时明确列为未验证,不合成通过。