...
- 定义 TYPE: GPT
- 最后一个分区增加grow标识,如:userdata:grow
- 指定system或者rootfs的uuid,如:uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
- parameter文件不会烧录到NVM(EMMC,NAND等)里面,会使用到的信息只有mtdparts的分区定义和 UUID,其他信息只是为了兼容升级工具而定义。
- parameter文件不会烧录到NVM(EMMC,NAND等)里面,会使用到的信息只有mtdparts的分区定义和UUID,其他信息只是为了兼容升级工具而定义。
3 Parameter文件内容说明
3.1 FIRMWARE_VER:1.0
...
条目 | MACHINE |
类型 | 字符串 |
长度 | 255(最大) |
描述 | 内核识别用,这个定义和内核匹配。 这一项GPT格式没有用,为了兼容,不要删除或修改。 |
下表列出几个平台的值:
芯片
MACHINE
RK29xx
2929
RK292X
2928
RK3066
3066
RK3126C
3126c
RK3326
RK3399
3399
RK3308 3308
3.8 CHECK_MASK:0x80
条目 | CHECK_MASK |
类型十六进制数 | |
数值 | 0x80(固定) |
描述 | 保留,不能修改。 |
...
GPT分区表标识,只能选择0或者1,Linux默认选择0; 其他平台比如Android, 内核 DM_verity开启(CONFIG_DM_VERITY=y),需要GROW_ALIGN设置为1.这样工具端最后一个分区结束位置对齐到32K。
9.3.11 CMDLINE:
MTD 分区定义说明:
分区定义说明:
| 代码块 | ||
|---|---|---|
| ||
CMDLINE: mtdparts=:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boo t),0x00040000@0x00028000(recovery),0x00010000@0x00068000(backup),0x01c00000@0x00078000(rootf s),0x00040000@0x01c78000(oem),-@0x01cb8000(userdata:grow) |
分区定义说明:
- 单个分区说明:
- 例如:0x00020000@0x00008000(boot),@符号之前的数值是分区大小,@符号之后的数值是分区的起始位置,括号里面的字符是分区的名字。所有数值的单位是 sector ,1个 sector 为512Bytes.上例中,boot 区起始位置为0x8000
- 区起始位置为0x8000 sectors位置,大小为0x2000 sectors(16MB).
- 为了性能,每个分区起始地址需要32KB(64 sectors)对齐,大小也需要32KB的整数倍。
- 如果使用 sparse 格式的镜像,升级时会擦除数据,为了兼容性更好,对应的分区最好按4MB对齐,大小也按4MB整数倍配置。
- 使用GPT分区时,parameter 里面定义的地址,都是真实的逻辑地址(LBA),例如 uboot 定义在0x4000,那么烧录到 EMMC 和 NAND 里面时,逻辑地址也是0x4000.最后一个分区需要指定 grow 参数,工具会把剩余的空间都分配给最后一个分区。
...
- 凡是 bootrom,pre-loader,uboot,trust 有写到的分区都放在 recovery 分区之前;
- 凡是客户新加的分区,在 pre-loader,uboot,trust 有被写到,都应该放在 recovery 分区之前;
- 目前 rockchip 前级固件有操作到的分区有 misc,vbmeta,security,这些都应该放 recovery 之前。、之前。
5 SDK分区配置修改指南
5.1 1 命令概览
以下是SDK中用于分区操作的相关命令:
| 代码块 | ||
|---|---|---|
| ||
$ ./build.sh --help | grep part print-parts print partitions (打印分区信息) list-parts alias of print-parts (打印分区信息的别名) edit-parts edit raw partitions (交互式修改分区表) extra-parts pack extra partition images (编辑原始分区配置) clean-extra-parts cleanup extra-parts |
5.2 分区信息打印
使用以下命令打印当前分区配置:
| 代码块 | ||
|---|---|---|
| ||
$ make print-parts
==========================================
Partition table
==========================================
1: uboot at 0x00004000 size=0x00002000(4M)
2: misc at 0x00006000 size=0x00002000(4M)
3: boot at 0x00008000 size=0x00020000(64M)
4: recovery at 0x00028000 size=0x00040000(128M)
5: backup at 0x00068000 size=0x00010000(32M)
6: rootfs at 0x00078000 size=0x01c00000(14G)
7: oem at 0x01c78000 size=0x00040000(128M)
8: userdata at 0x01cb8000 size=-(auto-resized) |
5.3 分区信息修改
通过以下命令进入编辑模式,修改分区配置:
| 代码块 | ||
|---|---|---|
| ||
$ make edit-parts # name size <hidden> 0x00004000 # (8M) uboot 0x00002000 # (4M) misc 0x00002000 # (4M) boot 0x00020000 # (64M) recovery 0x00040000 # (128M) backup 0x00010000 # (32M) rootfs 0x01c00000 # (14G) oem 0x00040000 # (128M) userdata - # (auto-resized) ## 例如,增加boot分区至128M,修改为 boot 0x00080000 # 128M ## 如需新新增env分区,添加 env 0x00040000 # 64M |
修改后,配置自动保存至 device/rockchip/parameter.txt 文件。使用 git diff 查看变更:
5.
...
4 新增分区
- 若要在SDK编译中新增一个 env 分区,步骤如下:
- 在 device/rockchip/common/extra-parts 目录下新增 env 目录。
- 运行 make menuconfig 配置额外分区。
- 配置完成后,使用 make savedefconfig 保存配置。
- 通过 make edit-parts 在 parameter.txt 中添加 env 分区配置。
- 使用 make extra-parts 编译生成额外分区镜像,最终在 output/extra-parts 目录下生成相应文件。
...