一、内存分布
U-Boot 由前级 Loader 加载到 CONFIG_SYS_TEXT_BASE 地址,初始化时会探明当前系统的总内存容 量,32位平台上认为最大4GB可用(但是不影响内核对容量的识别),64位平台上认为所有内存都可用。然后通过一系列reserve_xxx() 接口从内存末尾往前预留需要的内存,最后把自己relocate到某段 reserve的空间上。内存整体使用布局如下,以ARM64为例(常规情况):

上表中的 Start Addr Offset 一栏表示基于 DDR base 的地址偏移;Fastboot地址和大小由配置决定:CONFIG_FASTBOOT_BUF_ADDR,CONFIG_FASTBOOT_BUF_SIZE。Video FB/U-Boot/Malloc/Board/Gd/Fdt/Sp 由顶向下根据实际需求大小来分配;64 位平台:ATF 是 ARMv8 必需的,OP-TEE 是可选项;32 位平台:只有 OP-TEE;kernel fdt/kernel/ramdisk 是 U-Boot 需要加载的固件地址,由 ENV_MEM_LAYOUT_SETTINGS 定义;Fastboot 功能需要的 buffer 地址和大小在 defconfig 中定义;OP-TEE 占据的空间需要根据实际需求而定,最大为 30M;其中 RK1808/RK3308 上 OP-TEE 放在低地址,不在 0x8400000;
部分宏定义偏移地址:
"scriptaddr=0x00c00000" "pxefile_addr_r=0x00e00000" "fdt_addr_r=0x0a100000" "kernel_addr_r=0x00280000" "kernel_addr_c=0x04080000" "ramdisk_addr_r=0x0a200000"
二、存储布局
RK linux方案的存储布局如下,Android方案除了boot/rootfs的定义跟linux平台有差异,其它基本一致,可借鉴参考。

图片来源:http://opensource.rock-chips.com/wiki_Partitions
三、基于rk3568的分区表
FIRMWARE_VER: 12.0MACHINE_MODEL: rk3568_sMACHINE_ID: 007MANUFACTURER: rockchipMAGIC: 0x5041524BATAG: 0x00200800MACHINE: rk3568_sCHECK_MASK: 0x80PWR_HLD: 0,0,A,0,1TYPE: GPTCMDLINE:mtdparts=rk29xxnand:0x00002000@0x00002000(security),0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00002000@0x0000a000(dtbo),0x00000800@0x0000c000(vbmeta),0x00014000@0x0000c800(boot),0x00036000@0x00020800(recovery),0x000ba000@0x00056800(backup),0x000c0000@0x00110800(cache),0x00008000@0x001d0800(metadata),0x00010000@0x001d8800(yyjcust),0x00614000@0x001e8800(super),-@0x007fc800(userdata:grow)
路径:rockdev/Image-rk3568_s/parameter.txt parameter.txt该分区表可以动态生成,也可以固定。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
Android
+关注
关注
12文章
3989浏览量
133169 -
Linux
+关注
关注
88文章
11635浏览量
218118 -
内存
+关注
关注
9文章
3174浏览量
76150
发布评论请先 登录
相关推荐
热点推荐
RK3588 Android+Linux双系统方案的实现
RK3588双系统启动流程如下图 uboot根据按键来识别要启动的系统,这里可以使用拨码开关来代替。 uboot在加载分区的时根据分区名字来区分加载android或者linux的分区,所以在
走进Linux内存系统探寻内存管理的机制和奥秘
Linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍Linux 内存组织结构
基于Linux内存管理与Android内存分配机制
Android采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android把这些进程都保留在

rk基于linux/android内存管理
评论