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 但项目中不存在对应结构时也不得硬套规则。
分区表差量
用户主要提供发生变化的分区名称和目标大小。未提及的分区名称、顺序、属性、偏移和大小继承参考项目。
- 从板卡版本、Flash 类型和同步脚本定位唯一生效的分区源定义;不修改 SDK 生成副本。
- 对项目原有自动顺序布局,按同一规则重新计算受影响的后续偏移。
- 固定绝对偏移、Boot、保留区域和安全相关分区不自动移动。
- 检查擦除块对齐、偏移重叠、总容量、保留区以及可用镜像能否装入。
- 多个分区变体并存且无法从实际 build type 唯一定位时停止。
- 不修改存储驱动、分区解析器、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 余量检查时明确列为未验证,不合成通过。