内容
mtdparts=spi-nand0:256K(env),256K@256K(idblock),512K(uboot),4M(boot),30M(oem),10M(userdata),210M(rootfs)
sys_bootargs= ubi.mtd=6 root=ubi0:rootfs rootfstype=ubifs rk_dma_heap_cma=66M
sd_parts=mmcblk0:16K@512(env),512K@32K(idblock),4M(uboot)
解析
.BoardConfig.mk第 38 行 — RK_PARTITION_CMD_IN_ENV
export RK_PARTITION_CMD_IN_ENV="256K(env),256K@256K(idblock),512K(uboot),4M(boot),30M(oem),10M(userdata),210M(rootfs)"
脚本 project/build.sh:1696-1716 根据 RK_BOOT_MEDIUM=spi_nand 拼上 mtdparts=spi-nand0: 前缀,然后写入文件:
# 第 1713 行
RK_PARTITION_ARGS="mtdparts=spi-nand0:$RK_PARTITION_CMD_IN_ENV"
# 第 1729 行
echo "${RK_PARTITION_ARGS}" >$ENV_CFG_FILE
第 2 行:sys_bootargs= ubi.mtd=6 root=ubi0:rootfs rootfstype=ubifs rk_dma_heap_cma=66M
这行由 4 个来源拼接而成:
| 参数 | 来源 | 脚本位置 |
|---|---|---|
ubi.mtd=6 | 遍历分区列表时,rootfs 是第 6 个分区(0开始计数) | [build.sh:1787] |
root=ubi0:rootfs rootfstype=ubifs | RK_PARTITION_FS_TYPE_CFG 中 rootfs 为 ubifs 类型 | [build.sh:2120] |
rk_dma_heap_cma=66M | BoardConfig 的 RK_BOOTARGS_CMA_SIZE="66M" | [build.sh:2161-2162] |
第 3 行:sd_parts=mmcblk0:16K@512(env)...
硬编码在 build_env() 函数中:
# build.sh 第 767 行
echo "sd_parts=mmcblk0:16K@512(env),512K@32K(idblock),4M(uboot)" >>$ENV_CFG_FILE