news 2026/4/16 17:18:23

RK3588基于Android分区划分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RK3588基于Android分区划分

RK3588基于Android分区划分

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

项目编译完成后,会在“out”目录下生成“parameter.txt”分区表文件,大致内容如下:

FIRMWARE_VER:14.0MACHINE_MODEL: rk3576_u MACHINE_ID: 007 MANUFACTURER: rockchip MAGIC: 0x5041524B ATAG: 0x00200800 MACHINE: rk3576_u CHECK_MASK: 0x80 PWR_HLD:0,0,A,0,1 TYPE: GPT CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00002000(security),0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00002000@0x0000a000(dtbo),0x00000800@0x0000c000(vbmeta),0x00020000@0x0000c800(boot),0x00030000@0x0002c800(recovery),0x000c0000@0x0005c800(backup),0x000c0000@0x0011c800(cache),0x00020000@0x001dc800(metadata),0x00000400@0x001fc800(frp),0x00000800@0x001fcc00(baseparameter),0x00614000@0x001fd400(super),-@0x00811400(userdata:grow)
生成关系: RebuildParameter.mk ➔ 生成 parameter.txt 读取关系: Partitions.mk ➔ 读取 parameter.txt ➔ 设置 BOARD_*_SIZE

分区信息

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

各个分区作用:

分区名 起始地址(扇区)大小(扇区)大小(MB)功能说明 security 0x00002000 0x000020004MB 安全存储分区,存放加密密钥、安全证书等敏感数据,用于 Secure Boot 和 DRM 保护 uboot 0x00004000 0x000020004MB U-Boot 引导程序分区,负责硬件初始化和内核加载 trust 0x00006000 0x000020004MB TEE(可信执行环境)固件分区,运行安全操作系统如 OP-TEE misc 0x00008000 0x000020004MB Android 恢复模式状态存储,记录 OTA 状态和 BootLoader 通信数据 dtbo 0x0000a000 0x000020004MB Device Tree Overlay 分区,存放动态硬件配置二进制文件 vbmeta 0x0000c000 0x000008001MB Android Verified Boot(AVB)元数据,验证 boot/recovery 镜像完整性 boot 0x0000c800 0x0002000064MB Android Boot 镜像分区,包含 Linux 内核和 initramfs recovery 0x0002c800 0x0003000096MB 恢复系统分区,用于 OTA 更新、工厂重置和系统修复 backup 0x0005c800 0x000c0000384MB 关键固件备份分区(uboot/trust),支持系统回滚和修复 cache 0x0011c800 0x000c0000384MB Android 缓存分区,存储临时数据和 OTA 下载包,可被 Recovery 格式化 metadata 0x001dc800 0x0002000064MB Android14+ 强制分区,存储文件系统加密密钥(FBE)和元数据 frp 0x001fc800 0x000004000.5MB Factory Reset Protection 分区,防止未授权重置(Google 账号锁)baseparameter 0x001fcc00 0x000008001MB 基础硬件参数分区,存储屏幕校准、传感器配置等由内核读取的参数 super 0x001fd400 0x006140003104MB Android 动态分区容器,包含 system/vendor/product 等只读镜像(支持 A/B 更新)userdata 0x00811400 - 剩余空间 用户数据分区(应用/媒体文件等),grow 表示占用所有剩余空间

Android 14添加了生成parameter.txt的工具,支持根据配置参数编译出parameter.txt。如果没有配置 模板文件,则会寻找添加修改好的parameter.txt文件。
修改parameter.txt

找到(或指定)模板文件:

PRODUCT_PARAMETER_TEMPLATE :=device/rockchip/common/scripts/parameter_tools/parameter.in

修改配置分区大小(例如):

BOARD_SUPER_PARTITION_SIZE :=2688548864BOARD_DTBOIMG_PARTITION_SIZE :=xxxx BOARD_BOOTIMAGE_PARTITION_SIZE :=xxxxx BOARD_CACHEIMAGE_PARTITION_SIZE :=xxxx

不使用parameter生成parameter.txt

添加一个parameter.txt文件到你的device目录下即可: 例如:device/rockchip/rk3576/rk3576_u/parameter.txt
使用工具生成parameter.txt

parameter_tools --input device/rockchip/common/scripts/parameter_tools/parameter.in --firmware-version14.0--machine-model rk3576 --manufacturer rockchip --machine rk3576_u -- partition-list uboot_a:4096K,trust_a:4M,misc:4M,dtbo_a:4M,vbmeta_a:4M,boot_a:33554432,backup:30 0M,security:4M,cache:300M,metadata:4096,frp:512K,super:2G --output parameter_new.tx

新加一个分区

以新建baseparameter分区为例进行说明:
修改BoardConfig.mk添加新分区

在产品的BoardConfig.mk中定义:

device/rockchip/rk3576/rk3576_u/BoardConfig.mk +++ b/BoardConfig.mk @@ -494,4 +494,11 @@ ifeq($(strip$(BOARD_TWRP_ENABLE)),true)+BOARD_WITH_SPECIAL_PARTITIONS :=baseparameter:1M

在RebuildParameter.mk中添加BOARD_WITH_SPECIAL_PARTITIONS

device/rockchip/common/build/rockchip/RebuildParameter.mk +ifneq($(strip$(BOARD_WITH_SPECIAL_PARTITIONS)),)+partition_list :=$(partition_list),$(BOARD_WITH_SPECIAL_PARTITIONS)+endif

直接在parameter.txt中添加新分区

将项目编译完成后的“out”目录下生成“parameter.txt”分区表文件拷贝至项目目录下,然后修改“parameter.txt”分区表文件

device/rockchip/rk3576/rk3576_u/parameter.txt 中内容如下:

FIRMWARE_VER:14.0MACHINE_MODEL: rk3576_u MACHINE_ID: 007 MANUFACTURER: rockchip MAGIC: 0x5041524B ATAG: 0x00200800 MACHINE: rk3576_u CHECK_MASK: 0x80 PWR_HLD:0,0,A,0,1 TYPE: GPT CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00002000(security),0x00004000@0x00004000(uboot),0x00001000@0x00008000(waveform),0x00002000@0x00009000(misc),0x00002000@0x0000b000(dtbo),0x00000800@0x0000d000(vbmeta),0x00020000@0x0000d800(boot),0x00030000@0x0002d800(recovery),0x000c0000@0x0005d800(backup),0x000c0000@0x0011d800(cache),0x00020000@0x001dd800(metadata),0x00000400@0x001fd800(frp),0x00000800@0x001fdc00(baseparameter),0x004b0000@0x001fe400(super),0x010000@0x006ae400(logo),@0x006be400(userdata:grow)

可以修改CMDLINE中的分区字段,添加新分区并调整各个分区大小。

在编译的时候,编译脚本会判断如果有parameter.txt文件就会跳过RebuildParameter.mk生成 parameter.txt

CMDLINE字段定义了各个分区的起始地址、大小和名称,每个分区描述使用"大小@起始地址(分区名)"的格式表示。例如,"0x00002000@0x00002000(security)"表示security分区大小为0x00002000(十六进制,单位为扇区),起始地址为0x00002000。开发者可以通过修改这些参数来调整现有分区的大小,或者添加新的分区。在添加新分区时,需要特别注意确保各分区之间不会重叠,并且要合理分配存储空间,避免影响系统正常运行。 一个重要的编译机制是,当项目目录下存在parameter.txt文件时,编译脚本会自动跳过RebuildParameter.mk中生成parameter.txt的步骤,直接使用项目目录下的文件。这一特性使得开发者可以直接手动编辑parameter.txt文件,而不用担心编译过程中自己的修改被覆盖
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:23:23

django-flask基于python的篮球CBA联赛信息管理系统

目录 Django-Flask 基于 Python 的篮球 CBA 联赛信息管理系统摘要 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 Django-Flask 基于 Python 的篮球 CBA 联赛信息管理系统摘要 该系统采用 Python 语言开…

作者头像 李华
网站建设 2026/4/16 11:12:53

基于SpringBoot的船舶维保管理系统毕业设计

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的船舶维保管理系统,以满足现代船舶维护与管理的需求。具体研究目的如下:提高船舶维保效率&…

作者头像 李华
网站建设 2026/4/16 0:11:21

基于SpringBoot的银行客户管理系统毕设源码

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在深入探讨基于SpringBoot框架的银行客户管理系统的设计与实现,以提升银行客户服务质量和效率。具体研究目的如下:分析银行客户管…

作者头像 李华
网站建设 2026/4/16 2:14:38

C语言学什么?难不难?新手必看课程指南

C语言程序设计是计算机科学教育的基石课程,它不仅是学习编程的起点,更是理解计算机底层工作原理的关键。这门课程从基本语法入手,逐步深入内存管理和数据结构,培养严谨的编程思维和问题解决能力。无论未来从事系统开发、嵌入式还是…

作者头像 李华
网站建设 2026/4/16 9:49:50

AI产品经理必看!手把手教你绘制AI智能体架构图

在AI项目从0到1的探索中,你是否遇到过这样的窘境?技术团队说自己“懂了”,却总在实现时出偏差;业务团队抓不住重点,不断变更需求;而管理层更关心的是ROI和交付节奏,却总对技术架构一头雾水。——…

作者头像 李华