首页 > 系统相关 >内存管理-14-内核文档翻译-1-reserved-memory.txt

内存管理-14-内核文档翻译-1-reserved-memory.txt

时间:2024-07-04 18:33:16浏览次数:16  
标签:reserved 14 区域 内存 memory 节点 size

本文翻译自:
msm-5.4/arch/arm64/boot/dts/vendor/bindings/reserved-memory/reserved-memory.txt


*** Reserved内存区域 ***

保留内存被指定为 /reserved-memory 节点下的一个节点。操作系统应将保留内存排除在正常使用之外,可以创建子节点来描述特定的保留(从正常使用中排除)内存区域。此类内存区域通常设计用于各种设备驱动程序的特殊用途。

每个内存区域的参数都可以使用以下节点编码到设备树中:

1. /reserved-memory 节点

#address-cells、#size-cells(必需) - 标准定义,应使用与根节点相同的值
ranges(必需) - 标准定义,- 应为空

2. /reserved-memory/ 子节点

reserved-memory 节点的每个子节点指定一个或多个保留内存区域。每个子节点可以使用“reg”属性来指定特定范围的保留内存,#####或使用带有可选约束的“size”属性来请求动态分配的内存块。

按照通用名称推荐的做法,节点名称应反映节点的用途(如“framebuffer”或“dma-pool”)。如果节点是静态分配,######则应将单元地址 (@<address>) 附加到名称中。

3. 属性:

需要下面的 a) 或 b)。

a) 静态分配

reg(必需)- 标准定义

b) 动态分配

size(必需)- 基于父级 #size-cells 的长度,保留的内存大小(以字节为单位)。

alignment(可选)- 基于父级 #size-cells 的长度,分配对齐的地址边界。

alloc-ranges(可选)- prop-encoded-array(地址、长度对)。指定可接受分配的内存区域。

如果同时存在 reg 和 size,则 reg 属性优先,size 将被忽略。

4. 附加属性:

compatible(可选) - 标准定义

- 可能包含以下字符串:
    shared-dma-pool: 这表示内存区域旨在用作一组设备的 DMA 缓冲区共享池。如果需要,操作系统可以使用它来实例化必要的池管理子系统。
    供应商特定字符串,格式为 <vendor>,[<device>-]<usage>

no-map(可选)- 空属性
- 表示操作系统不得创建该区域的虚拟映射,不得将其作为系统内存标准映射的一部分,也不得在任何情况下允许对其进行推测性访问,除非在使用该区域的设备驱动程序的控制下。

reusable(可选) - 空属性
- 操作系统可以使用此区域中的内存,但限制是拥有该区域的设备驱动程序要能够将其回收。通常,这意味着操作系统可以使用该区域来存储易失性或缓存的数据,这些数据可以以其他方式重新生成或迁移到其他地方。

Linux 实现注意事项:

- 如果存在“linux,cma-default”属性,则 Linux 将使用该区域作为连续内存分配器的默认池。

- 如果存在“linux,dma-default”属性,则 Linux 将使用该区域作为一致 DMA 分配器的默认池。


5. 设备节点对reserved内存的引用

/reserved-memory 节点中的区域可以通过向设备节点添加 memory-region 属性而被其他设备节点引用。

memory-region(可选)= phandle,phandle 是 /reserved-memory 子节点的。

示例
-------
此示例为 Linux 内核定义了 3 个连续区域:
一个是所有设备驱动程序的默认区域(名为 linux,cma@72000000,大小为 64MiB),一个专用于帧缓冲区设备(名为 framebuffer@78000000,8MiB),一个用于多媒体处理(名为 musical-memory@77000000,64MiB)。

/ {
    #address-cells = <1>;
    #size-cells = <1>;

    memory {
        reg = <0x40000000 0x40000000>; //1GB
    };

    reserved-memory {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        /* global autoconfigured region for contiguous allocations */
        linux,cma {
            compatible = "shared-dma-pool";
            reusable;
            size = <0x4000000>;
            alignment = <0x2000>;
            linux,cma-default;
        };

        display_reserved: framebuffer@78000000 {
            reg = <0x78000000 0x800000>;
        };

        multimedia_reserved: multimedia@77000000 {
            compatible = "acme,multimedia-memory";
            reg = <0x77000000 0x4000000>;
        };
    };

    /* ... */

    fb0: video@12300000 {
        memory-region = <&display_reserved>;
        /* ... */
    };

    scaler: scaler@12500000 {
        memory-region = <&multimedia_reserved>;
        /* ... */
    };

    codec: codec@12600000 {
        memory-region = <&multimedia_reserved>;
        /* ... */
    };
};

 

标签:reserved,14,区域,内存,memory,节点,size
From: https://www.cnblogs.com/hellokitty2/p/18284414

相关文章

  • VMware vSphere Tanzu部署_14_部署容器应用
    1.部署运行容器应用1.1.登录tkc集群jianhua@napp:~/tkc$kubectlvspherelogin--server=192.168.203.194\--tanzu-kubernetes-cluster-nametkc-dev-cluster\--tanzu-kubernetes-cluster-namespacetkc-01\[email protected]\--insecu......
  • IIS发布modules错误和403.14
     1、解决IIS启动后报<modules>错误的方案C:\windows\system32\inetsrv\appcmdunlockconfig-section:system.webServer/modules参考:https://blog.csdn.net/sinat_39826352/article/details/78443432 2、IIS部署问题之403.14这是因为一般情况下,IIS接受到请求后,如......
  • selenium14_POM设计模式
    Python+Selenium+Unittest+Git+Jenkins框架,POM设计模式1.common文件夹:二次封装原有方法的文件base.py;存放通过的文件,如:生成报告的文件2.pages文件夹:page元素的定位;调用前边的封装方法,或者继承,再次封装一些页面的操作方法:如输入用户名密码点击登陆等操作。(或者元素定位,操作......
  • 大华设备接入GB28181/GAT1400视频汇聚管理平台EasyCVR安防监控系统的具体操作步骤
    智慧城市/视频汇聚/安防监控平台EasyCVR兼容性强,支持多协议接入,包括国标GB/T28181协议、GA/T1400协议、部标JT808协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等,并能对外分发RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、Web......
  • 【S32K144 PORT&DIO 基于EB Tresos的驱动设计】
    前言本专栏会以NXPS32K144为依托,记录各个模块的原理和实现方法。首先第一个模块都是以PORT模块开始,以此模块制定目标:以按键控制对应的LED灯,按键不按时,对应LED灯熄灭,当按下按键时对应LED灯点亮。为了实现这个功能,需要用到PORT和DIO模块,PORT模块是用于配置port端口,DIO模......
  • 代码随想录算法训练营第四十八天 | 188.买卖股票的最佳时机IV 309.买卖股票的最佳时
    188.买卖股票的最佳时机IV题目链接文章讲解视频讲解动规五部曲:dp数组的含义:dp[j][2*i-1]表示第i次持有股票dp[j][2*i]表示第i次不持有股票递推公式:dp[j][2i-1]=max(dp[j-1][2i-1],dp[j-1][2*i-2]-prices[j]);dp[j][2i]=max(dp[j-1][2i],dp[j-1][2*i-1]......
  • <电力行业> - 《第14课:用电》
    1用电用电,按预定目的使用电能的行为,是电力环节最后的节点。我们日常生活中所需要用到的电器,比如日光灯、计算机、空调、洗衣机等都是需要消耗电量的。城市用电和工商业用电的价格是不一样的。1.1工商业电价工商业电价:两部制电价包括基础电价、电量电价和力调电价。......
  • 新特性之C++14
    C++14是C++11的一个增量升级版本,虽然没有引入像C++11那样的大量新特性,但它通过对已有特性进行优化和扩展,提高了语言的可用性和性能。本文将详细介绍C++14引入和优化的新特性功能。概述C++14旨在修复C++11的一些缺陷,并提供了一些重要的增强功能,以简化开发者的日......
  • ai绘画一条作品变现1400+,怎么做一个赚钱的AI绘画账号?
    大家都知道现在AI很火,变现的玩法也多种多样,但一说到AI,大家就下意识认为这东西离我太远,自己没有那么高学历,不会英文,不会用AI模型等。其实Ai没有大家想象得那么难,尤其在AI绘画这块,离普通人变现最近的就是AI绘画推文,不仅变现天花板高,可玩性还可多种多样,等你后续做起来以后,推文......
  • windows10添加多个东芝14T硬盘系统加载不出来的问题
    windows10添加多个东芝14T硬盘系统加载不出来的问题1.明明是加了一个14T东芝硬盘,系统就是加载不出来,从BIOS上也能看2.解决方法此电脑右键–》管理3.设置管理器—》标准sataahci控制器4.右键卸载设备,点击卸载,系统系统重启5.重启好后就能看到新挂的硬盘了......