正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史记录

版本 1 下一个 »

Rockchip共有 3 种分区表可固化到存储分区中:MTD Partition,GPT 和 RK partition。

详细的信息可以参考文档《docs/cn/Common/TOOL/Rockchip_Introduction_Partition_CN.pdf》。

分区














*1 使用 uboot-next 分支的平台不再支持 MTD partition,如果需要使用,需要自己适配。

*2 使用 uboot-next 分支的平台默认都是使用 GPT 做分区表,如果需要使用其他分区表,需要自己适配。

其中用parameter文件来配置一些系统参数,比如固件版本,存储器分区信息等。Parameter文件是非常重要的系统

配置文件,

最好在能了解清楚各个配置功能时再做修改,避免出现parameter文件配置异常造成系统不能正常工作的问题。

Parameter文件大小有限制,最大不能超过64KB。

9.1 SDK分区介绍

默认分区说明 ( 下面是 RK3562 EVB 分区参考)

uboot 分区:供 uboot 编译出来的 uboot.img。

misc 分区:供 misc.img,给 recovery 使用。

boot 分区:供 kernel 编译出来的 boot.img。

recovery 分区:供 recovery 编译出的 recovery.img。

backup 分区:预留,暂时没有用。

rootfs 分区:供 buildroot、debian 或 yocto 编出来的 rootfs.img。

oem 分区:给厂家使用,存放厂家的 APP 或数据。挂载在 /oem 目录。

userdata 分区:供 APP 临时生成文件或给最终用户使用,挂载在 /userdata 目录下。

9.2 Parameter文件预览

Parameter文件主要用于定义分区表,可以支持两种分区格式:一个是GPT格式,另一个是传统CMDLINE分区。不同

的项目,不同的平台,parameter文件的内容会有一些差异。

默认Linux平台都使用GPT格式。

本文档以RK3376平台的parameter文件进行举例说明。

RK3576 GPT分区格式parameter定义:

GPT分区相对传统分区,parameter文件主要差异:

定义 TYPE: GPT

最后一个分区增加grow标识,如:userdata:grow

指定system或者rootfs的uuid,如:uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

parameter文件不会烧录到NVM(EMMC,NAND等)里面,会使用到的信息只有mtdparts的分区定义和

UUID,其他信息只是为了兼容升级工具而定义。

FIRMWARE_VER: 1.0

MACHINE_MODEL: RK3576

MACHINE_ID: 007

MANUFACTURER: RK3576

MAGIC: 0x5041524B

ATAG: 0x00200800

MACHINE: 0xffffffff

CHECK_MASK: 0x80

PWR_HLD: 0,0,A,0,1

TYPE: GPT

GROW_ALIGN: 0

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)

uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

uuid:boot=7A3F0000-0000-446A-8000-702F00006273

条目 FIRMWARE_VER

类型十进制数,格式: X.X

数值0 - 255

描述打包updata.img时会使用到,升级工具会根据这个识别固件版本号。

条目 MACHINE_MODEL

类型字符串

长度255(最大)

描述

机器型号,打包 updata.img 使用,

不同的项目,可以修改,用于升级工具显示。

在 recovery 里面升级固件时可以用于判断固件和机器是否匹配。

条目 MACHINE_ID

类型字符串

长度255(最大)

描述

产品开发ID,可以为字符和数字组合,打包updata.img使用,

不同的项目使用不同的ID,可以用于识别机器机型。

在 recovery 里面升级固件时可以用于判断固件是否匹配。

条目 MANUFACTURER

类型字符串

长度255(最大)

描述厂商信息,打包 updata.img 使用,可以修改,用于升级工具显示。

9.3 Parameter文件内容说明

9.3.1 FIRMWARE_VER:1.0

9.3.2 MACHINE_MODEL:RK3576

9.3.3 MACHINE_ID:007

9.3.4 MANUFACTURER:RK3576

条目 MAGIC

类型十六进制数

数值0x5041524B(固定)

描述

魔数MAGIC,不能修改,

一些新的 AP 使用 DTS ,这一项没有用,为了兼容,不要删除或修改。

条目 ATAG

类型十六进制数

数值32bits DDR地址

描述ATAG DDR存放地址,

一些新的AP使用DTS,这一项没有用,为了兼容,不要删除或修改。

条目 MACHINE

类型字符串

长度255(最大)

描述

内核识别用,这个定义和内核匹配。

这一项GPT格式没有用,为了兼容,不要删除或修改。

9.3.5 MAGIC:0x5041524B

9.3.6 ATAG:0x60000800

9.3.7 MACHINE:0xffffffff

下表列出几个平台的值:

芯片 MACHINE

RK29xx 2929

RK292X 2928

RK3066 3066

RK3126C 3126c

RK3326 3326

RK3399 3399

RK3308 3308

条目 CHECK_MASK

类型十六进制数

数值0x80(固定)

描述保留,不能修改。

9.3.8 CHECK_MASK:0x80

9.3.9 TYPE:GPT

GPT分区表标识,烧录工具会根据 CMDLINE 里面定义的分区创建GPT分区表,paramter文件不会烧录到 NVM

(NAND,EMMC等)存储器件里面。

9.3.10 GROW_ALIGN

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)

名称Parameter 定义地址EMMC 逻辑地址NAND 逻辑地址大小

GPT -- 0 0 32KB

LOADER -- 0x40 0x40 4MB-32KB

保留-- 0x2000 0x2000 4MB

UBOOT 0x4000 0x4000 0x4000 4MB

TRUST 0x6000 0x6000 0x6000 4MB

1. 单个分区说明:

例如:0x00020000@0x00008000(boot),@符号之前的数值是分区大小,@符号之后的数值是分区的起始位置,括

号里面的字符是分区的名字。所有数值的单位是 sector ,1个 sector 为512Bytes.上例中,boot 分区起始位置为

0x8000 sectors位置,大小为0x2000 sectors(16MB).

2. 为了性能,每个分区起始地址需要32KB(64 sectors)对齐,大小也需要32KB的整数倍。

3. 如果使用 sparse 格式的镜像,升级时会擦除数据,为了兼容性更好,对应的分区最好按4MB对齐,大小也按

4MB整数倍配置。

4. 使用GPT分区时,parameter 里面定义的地址,都是真实的逻辑地址(LBA),例如 uboot 定义在0x4000,那么

烧录到 EMMC 和 NAND 里面时,逻辑地址也是0x4000.

最后一个分区需要指定 grow 参数,工具会把剩余的空间都分配给最后一个分区。

9.4 Parameter分区定义规范

凡是 bootrom,pre-loader,uboot,trust 有写到的分区都放在 recovery 分区之前;

凡是客户新加的分区,在 pre-loader,uboot,trust 有被写到,都应该放在 recovery 分区之前;

目前 rockchip 前级固件有操作到的分区有 misc,vbmeta,security,这些都应该放 recovery 之前。、

9.5 SDK分区配置修改指南

9.5.1 命令概览

以下是SDK中用于分区操作的相关命令:

$ ./build.sh --help | grep parts

print-parts 打印分区信息

list-parts 打印分区信息的别名

mod-parts 交互式修改分区表

edit-parts 编辑原始分区配置

new-parts 重新创建分区

extra-parts 打包额外的分区镜像

9.5.2 分区信息打印

使用以下命令打印当前分区配置:

9.5.3 分区信息修改

通过以下命令进入编辑模式,修改分区配置:

修改后,配置自动保存至 device/rockchip/parameter.txt 文件。使用 git diff 查看变更:

<SDK>$ make print-parts

...

==========================================

分区表

==========================================

1: uboot 位于 0x00004000 大小 0x00002000 (4M)

2: misc 位于 0x00006000 大小 0x00002000 (4M)

3: boot 位于 0x00008000 大小 0x00020000 (64M)

4: recovery 位于 0x00028000 大小 0x00040000 (128M)

5: backup 位于 0x00068000 大小 0x00010000 (32M)

6: rootfs 位于 0x00078000 大小 0x01c00000 (14G)

7: oem 位于 0x01c78000 大小 0x00040000 (128M)

8: userdata 可增长分区

传统命令行参数:

0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),...

$ make edit-parts

## Chapter-9 分区名 大小

<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 - # 可增长

## Chapter-9 例如,增加boot分区至128M,修改为:

boot 0x00080000 # 128M

## Chapter-9 如需新增env分区,添加:

env 0x00040000 # 64M

device/rockchip$ git diff

...

9.5.4 新增分区

若要在SDK编译中新增一个 env 分区,步骤如下:

1. 在 device/rockchip/common/extra-parts 目录下新增 env 目录。

2. 运行 make menuconfig 配置额外分区。

3. 配置完成后,使用 make savedefconfig 保存配置。

4. 通过 make edit-parts parameter.txt 中添加 env 分区配置。

5. 使用 make extra-parts 编译生成额外分区镜像,最终在 output/extra-parts 目录下生成相应文件。

$ tree -L 1 output/extra-parts

output/extra-parts/

├── env

├── env.fs

├── env.img

...

  • 无标签