Skip to main content

Rockchip 分区介绍

:::info 文档信息

文档标识:RK-SM-YF-015 · 发布版本:V1.5.0 · 发布日期:2020-06-16 · 页数:10 · 语言:中文

原始文档:Rockchip_Introduction_Partition_CN.pdf

:::

章节大纲​

  • Rockchip 分区介绍(P1)
    • Parameter文件预览(P5)
    • 文件内容说明(P6)
      • FIRMWARE_VER:9.0(P6)
      • MACHINE_MODEL:RK3326(P6)
      • MACHINE_ID:007(P6)
      • MANUFACTURER:rk3326(P6)
      • MAGIC:0x5041524B(P7)
      • ATAG:0x60000800(P7)
      • MACHINE:3226(P7)
      • CHECK_MASK:0x80(P8)
      • TYPE:GPT(P8)
      • CMDLINE:(P8)
    • 分区定义规范(P9)

在线预览​

若预览无法显示,请直接下载 PDF 后用本地阅读器打开。


1. Parameter文件预览​

Parameter文件主要用于定义分区表,可以支持两种分区格式:一个是GPT格式,另一个是传统CMDLINE分区。不同的项目,不同的平台,parameter文件的内容会有一些差异。本文档以RK3326平台的parameter文件进行举例说明。

RK3326 GPT分区格式parameter定义:

FIRMWARE_VER:9.0
MACHINE_MODEL:RK3326
MACHINE_ID:007
MANUFACTURER: RK3326
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 3326
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(tr
ust),0x00002000@0x00008000(misc),0x00002000@0x0000a000(dtb),0x00002000@0x0000c000
(dtbo),0x00000800@0x0000e000(vbmeta),0x00010000@0x0000e800(boot),0x00030000@0x000
1e800(recovery),0x00028000@0x0004e800(backup),0x00002000@0x00076800(security),0x0
0070000@0x00078800(cache),0x002d0000@0x000e8800(system),0x00008000@0x003b8800(met
adata),0x00070000@0x003c0800(vendor),0x00020000@0x00430800(oem),0x00000400@0x0045
0800(frp),-@0x00450c00(userdata:grow)
uuid:system=af01642c-9b84-11e8-9b2a-234eb5e198a0

RK3326 传统分区格式(CMDLINE)parameter定义:

FIRMWARE_VER:9.0
MACHINE_MODEL:RK3326
MACHINE_ID:007
MANUFACTURER: RK3326
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 3326
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
CMDLINE:console=ttyFIQ0 androidboot.console=ttyFIQ0 initrd=0x62000000,0x00800000
mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x0
0002000@0x00008000(misc),0x00002000@0x0000a000(dtb),0x00002000@0x0000c000(dtbo),0
x00000800@0x0000e000(vbmeta),0x00010000@0x0000e800(boot),0x00030000@0x0001e800(re
covery),0x00028000@0x0004e800(backup),0x00002000@0x00076800(security),0x00070000@
0x00078800(cache),0x002d0000@0x000e8800(system),0x00008000@0x003b8800(metadata),0
x00070000@0x003c0800(vendor),0x00020000@0x00430800(oem),0x00000400@0x00450800(frp
),-@0x00450c00(userdata)

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

定义 TYPE: GPT最后一个分区增加grow标识,如:userdata:grow指定system或者rootfs的uuid,如:uuid:system=af01642c-9b84-11e8-9b2a-234eb5e198a0 parameter文件不会烧录到NVM(EMMC,NAND等)里面,会使用到的信息只有mtdparts的分区定义和UUID,其他信息只是为了兼容升级工具而定义。

2. 文件内容说明​

2.1 FIRMWARE_VER:9.0​

条目FIRMWARE VER _
类型十进制数,格式: X.X
数值0 - 255
描述打包updata.img时会使用到,升级工具会根据这个识别固件版本号。

2.2 MACHINE_MODEL:RK3326​

条目MACHINE MODEL _
类型字符串
长度255(最大)
描述机器型号,打包 updata.img 使用, 不同的项目,可以修改,用于升级工具显示。 在 recovery 里面升级固件时可以用于判断固件和机器是否匹配。

2.3 MACHINE_ID:007​

条目MACHINE ID _
类型字符串
长度255(最大)
描述产品开发ID,可以为字符和数字组合,打包updata.img使用, 不同的项目使用不同的ID,可以用于识别机器机型。 在 recovery 里面升级固件时可以用于判断固件是否匹配。

2.4 MANUFACTURER:rk3326​

条目MANUFACTURER
类型字符串
长度255(最大)
描述厂商信息,打包 updata.img 使用,可以修改,用于升级工具显示。

2.5 MAGIC:0x5041524B​

条目MAGIC
类型十六进制数
数值0x5041524B(固定)
描述魔数MAGIC,不能修改, 一些新的 AP 使用 DTS ,这一项没有用,为了兼容,不要删除或修改。

2.6 ATAG:0x60000800​

条目ATAG
类型十六进制数
数值32bits DDR地址
描述ATAG DDR存放地址, 一些新的AP使用DTS,这一项没有用,为了兼容,不要删除或修改。

2.7 MACHINE:3226​

条目MACHINE
类型字符串
长度255(最大)
描述内核识别用,不能修改,这个定义和内核匹配。

下表列出几个平台的值:

芯片MACHINE
RK29xx2929
RK292X2928
RK30663066
RK3126C3126c
RK33263326
RK33993399
RK33083308

2.8 CHECK_MASK:0x80​

条目CHECK MASK _
类型十六进制数
数值0x80(固定)
描述保留,不能修改。

2.9 TYPE:GPT​

GPT分区表标识,烧录工具会根据 CMDLINE 里面定义的分区创建GPT分区表,paramter文件不会烧录到NVM (NAND,EMMC等)存储器件里面。

2.10 CMDLINE:​

console=ttyFIQ0 androidboot.console=ttyFIQ0 ,串口定义。

initrd=0x62000000,0x00800000 ,第一个参数是 RAMDISK 加载到 DDR 的位置,第二个参数为RAMDISK 的大小,目前 RAMDISK 大小没有限制。

androidboot.xxx 的定义在 android 启动时使用,有些平台会在 kernel 的 dts 里面定义,这部分定义一般不用修改,只用用发布 SDK 默认的就可以了。

MTD 分区定义说明:

mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x0
0002000@0x00006000(misc),
0x00008000@0x00008000(resource),0x00010000@0x00010000(kernel),0x00010000@0x000200
00(boot),0x00020000@0x00030000(recovery),
0x00038000@0x00050000(backup),0x00002000@0x00088000(security),0x00100000@0x0008a0
00(cache),0x00400000@0x0018a000(system),
0x00008000@0x0058a000(metadata),0x00080000@0x00592000(vendor),0x00080000@0x006120
00(oem),0x00000400@0x00692000(frp),-@0x00692400(userdata)

分区定义说明:

1、为了兼容性,目前所有 AP 都是用 rk29xxnand 做标识。

2、单个分区说明:

例如: 0x00002000@0x00008000(boot),@符号之前的数值是分区大小,@符号之后的数值是分区的起始位置,括号里面的字符是分区的名字。所有数值的单位是 sector ,1个 sector 为512Bytes.上例中,boot 分区起始位置为0x8000 sectors位置,大小为0x2000 sectors(4MB).

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

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

5、使用GPT分区时,parameter 里面定义的地址,都是真实的逻辑地址(LBA),例如 uboot 定义在0x4000,那么烧录到 EMMC 和 NAND 里面时,逻辑地址也是0x4000.

名称Parameter 定义地址EMMC 逻辑地址NAND 逻辑地址大小
GPT--0032KB
LOADER--0x400x404MB-32KB
保留--0x20000x20004MB
UBOOT0x40000x40000x40004MB
TRUST0x60000x60000x60004MB

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

6、使用传统 cmdline 分区时,如果是EMMC颗粒,0-4MB的空间是保留存放loader的,parameter 里面定义的分区都需要加上4MB,例如 uboot 定义在0x2000,实际烧录到 EMMC 里面时,和使用 GPT 分区时烧录的逻辑地址是一样的,也是0x4000。如果是NAND颗粒,为了和原来产品兼容,所有地址都是真实逻辑地址,例如uboot定义在0x2000,实际烧录到NAND里面是,逻辑地址也是0x2000,和使用GPT时不一样。

名称Parameter 定义地址EMMC 逻辑地址NAND 逻辑地址大小
保留--0032KB
LOADER--0x400x404MB-32KB
parameter--0x20000x04MB
UBOOT0x20000x40000x20004MB
TRUST0x40000x60000x40004MB

注:NAND FLASH 的机器,0x40有可能会写 loader 的镜像,和 parameter 在同一个4MB空间内,有效的数据是相互错开存放的,不会覆盖。

3. 分区定义规范​

  1. 凡是 bootrom,pre-loader,uboot,trust 有写到的分区都放在 recovery 分区之前;2. 凡是客户新加的分区,在 pre-loader,uboot,trust 有被写到,都应该放在 recovery 分区之前;3. 目前 rockchip 前级固件有操作到的分区有 misc,vbmeta,security,这些都应该放 recovery 之前。