0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

rk基于linux/android内存管理

jf_44130326 2025-12-15 10:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、内存分布

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

wKgZO2kaoCOAT7QgAADsD-5-7Dg269.png

上表中的 Start Addr Offset 一栏表示基于 DDR base 的地址偏移;Fastboot地址和大小由配置决定:CONFIG_FASTBOOT_BUF_ADDRCONFIG_FASTBOOT_BUF_SIZEVideo FB/U-Boot/Malloc/Board/Gd/Fdt/Sp 由顶向下根据实际需求大小来分配;64 位平台:ATF ARMv8 必需的,OP-TEE 是可选项;32 位平台:只有 OP-TEEkernel fdt/kernel/ramdisk U-Boot 需要加载的固件地址,由 ENV_MEM_LAYOUT_SETTINGS 义;Fastboot 功能需要的 buffer 地址和大小在 defconfig 中定义;OP-TEE 占据的空间需要根据实际需求而定,最大为 30M;其中 RK1808/RK3308 OP-TEE 放在低地址,不在 0x8400000

部分宏定义偏移地址:

#define ENV_MEM_LAYOUT_SETTINGS "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平台有差异,其它基本一致,可借鉴参考。

wKgZO2kaoCOAWz73AAK5Pe1jC3c625.png

图片来源: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
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux内存管理是什么,Linux内存管理详解

    Linux内存管理 Linux内存管理是一个非常复杂的过程,主要分成两个大的部分:内核的
    的头像 发表于 05-11 17:54 6911次阅读
    <b class='flag-5'>Linux</b>的<b class='flag-5'>内存</b><b class='flag-5'>管理</b>是什么,<b class='flag-5'>Linux</b>的<b class='flag-5'>内存</b><b class='flag-5'>管理</b>详解

    深度解析Linux内存管理体系

    Linux内存管理的整体模式是虚拟内存管理(分页内存管理
    发表于 08-06 16:55 2296次阅读

    RK3588 Android+Linux双系统方案的实现

    RK3588双系统启动流程如下图   uboot根据按键来识别要启动的系统,这里可以使用拨码开关来代替。 uboot在加载分区的时根据分区名字来区分加载android或者linux的分区,所以在
    的头像 发表于 10-10 14:25 1.1w次阅读
    <b class='flag-5'>RK</b>3588 <b class='flag-5'>Android+Linux</b>双系统方案的实现

    走进Linux内存系统探寻内存管理的机制和奥秘

    Linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍Linux 内存组织结构
    的头像 发表于 01-05 09:47 2261次阅读

    关于Linux内存管理的详细介绍

    Linux内存管理是指对系统内存的分配、释放、映射、管理、交换、压缩等一系列操作的管理。在
    发表于 03-06 09:28 1373次阅读

    Linux内核的内存管理详解

    内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。
    发表于 08-31 14:46 1299次阅读
    <b class='flag-5'>Linux</b>内核的<b class='flag-5'>内存</b><b class='flag-5'>管理</b>详解

    linux内存管理

    公交,地铁,睡前必备,方便大家查阅,持续更新,敬请期待!---更新于2020-02-12linux 内存管理Linux内存初始化CPU是
    发表于 07-22 08:41

    linux内存管理机制浅析

    本内容介绍了arm linux内存管理机制,详细说明了linux内核内存管理,
    发表于 12-19 14:09 73次下载
    <b class='flag-5'>linux</b><b class='flag-5'>内存</b><b class='flag-5'>管理</b>机制浅析

    linux内存管理

    linux内存管理
    发表于 10-24 11:12 3次下载
    <b class='flag-5'>linux</b><b class='flag-5'>内存</b><b class='flag-5'>管理</b>

    基于Linux内存管理Android内存分配机制

    Android采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android把这些进程都保留在
    的头像 发表于 03-30 14:52 6690次阅读

    你知道linux内存管理基础及方法?

    linux内存管理采取的分页存取机制,会将内存中不经常使用的数据块交换到虚拟内存中。linux
    发表于 04-28 17:12 1459次阅读

    嵌入式 Linux 中的内存管理

    点击 嵌入式 Linux 中的内存管理
    发表于 11-02 10:36 12次下载
    嵌入式 <b class='flag-5'>Linux</b> 中的<b class='flag-5'>内存</b><b class='flag-5'>管理</b>

    Linux内存管理的基础知识科普

    Linux内存管理可谓是学好Linux的必经之路,也是Linux的关键知识点,有人说打通了内存
    的头像 发表于 06-08 15:24 2787次阅读

    Linux内存管理体系介绍

    内存是计算机最重要的资源之一,内存管理是操作系统最重要的任务之一。内存管理并不是简单地管理一下
    的头像 发表于 08-08 09:28 2335次阅读

    Linux 内存管理总结

    一、Linux内存管理概述 Linux内存管理是指对系统内存
    的头像 发表于 11-10 14:58 1136次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>内存</b><b class='flag-5'>管理</b>总结