终于搞懂Linux 设备树中的#address-cells,#size-cells 和reg 属性

目录

  • 一、前置知识
    • 1. 处理器平台
    • 2. reg 属性的基本格式
    • 3. reg 属性的作用
      • reg 用法
  • 二、#address-cells 和 #size-cells 属性
    • 1. 示例1
    • 2. 示例2
    • 3. 示例3

一、前置知识

要理解#address-cells#size-cell 这两个属性,就要先了解 reg属性。

1. 处理器平台

下面的介绍,主要基于 IMX6ULL进行

2. reg 属性的基本格式

reg = <address1 length1 address2 length2 address3 length3 ...>

3. reg 属性的作用

reg属性一般用于描述设备地址空间资源的信息,一般都是某个外设的寄存器地址范围信息。

reg 用法

imx6ull.dtsi 文件中

      qspi: qspi@021e0000 {#address-cells = <1>;#size-cells = <0>;compatible = "fsl,imx6ull-qspi", "fsl,imx6ul-qspi";reg = <0x021e0000 0x4000>, <0x60000000 0x10000000>;...};

二、#address-cells 和 #size-cells 属性

#address-cells#size-cells 都是 32位的整形数据,用来表示当前节点和子节点 的reg属性的地址信息( address)和 长度信息 length的所占用的字长(32位)。

1. 示例1

    aips1: aips-bus@02000000 {compatible = "fsl,aips-bus", "simple-bus";#address-cells = <1>;#size-cells = <1>;reg = <0x02000000 0x100000>;ranges;...}

这里address-cells = 1,size-cells = 1 , 表示 reg属性中,地址信息的长度是1个字长,地址长度信息也是1个字长,即是:address = 0x02000000, length = 0x100000(1M)

刚好跟参考手册 system memory map 中的AIPS1 的地址一致。

在这里插入图片描述

2. 示例2

  alphaled {#address-cells = <1>;#size-cells = <1>;compatible = "atkalpha-led";status = "okay";reg = < 0X020C406C 0X04    /* CCM_CCGR1_BAE       */0X020E0068 0X04    /* SW_MUX_GPIO1_IO03_BASE   */0X020E02F4 0X04    /* SW_PAD_GPIO1_IO03_BASE  */0X0209C000 0X04    /* GPIO1_DR_BASE       */0X0209C004 0X04>;  /* GPIO1_GDIR_BASE       */};

这里address-cells = 1,size-cells = 1 , 表示 reg属性中,地址信息的长度是1个字长,地址长度信息也是1个字长。

按照reg = <address length> 这样的规则解析:

  • address = 0X020C406C 刚好是寄存器 CCM_CCGR1的起始地址;
  • length = 0x04 ,表示寄存器是4byte的长度,即是32bits

所以上述reg 属性的第一行 0X020C406C 0X04 描述的是寄存器 CCM_CCGR1 的地址信息。

在这里插入图片描述

3. 示例3

在内核源码的 falconfalls.dts

      pci@1,0 {#address-cells = <3>;#size-cells = <2>;compatible = "intel,ce4100-pci", "pci";device_type = "pci";bus-range = <1 1>;reg = <0x0800 0x0 0x0 0x0 0x0>;...}

这里address-cells = 3,size-cells = 2 , 表示 reg属性中,地址信息的长度是3个字长,地址长度信息是2个字长,即是:address = 0x0800 0x0 0x0, length = 0x00 0x00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2022如何添加现有项

以 想在队列里&#xff0c;使用堆栈的.c&#xff0c;.h文件 为例 目录 1.复制堆栈的.c&#xff0c;.h文件 ​编辑 2.打开队列所在项目的文件夹 3.粘贴堆栈的.c&#xff0c;.h文件 4.在头文件和源文件添加相应的堆栈的.c&#xff0c;.h文件 1.复制堆栈的.c&#xff0c;.h文件…

QML进阶(十七) ECMAScript 语法介绍

文章目录 基本语法变量基本类型类型转换对象函数和循环打印输出内置对象来自QML的基本类型ECMAScript语言的标准是由Netscape、Sun、微软、Borland等公司基于JavaScript和JScript定义出来的脚本语言标准。可以为不同种类的浏览器环境提供核心的脚本编程能力。在QML中我们通过EC…

HCIP【VLAN综合实验】

目录 一、实验拓扑图&#xff1a; 二、实验要求&#xff1a; 三、实验思路&#xff1a; 四、实验步骤&#xff1a; 1、在交换机SW1,SW2,SW3配置VLAN和各个接口对应类型的配置 2、在路由器上面配置DHCP服务 一、实验拓扑图&#xff1a; 二、实验要求&#xff1a; 1、PC1 …

STK12 RPO模块学习(3)

一、Maintain NMC RPO Sequence Maintain Natural Motion Circumnavigation RPO序列在目标星和追踪星经历不同的力的情况下保持NMC。通常这种差异是由于阻力和太阳光压造成的。这些是主要不同力当执行接近任务的时候&#xff0c;因为重力和相对三体摄动力非常小当相对距离在10…

【Docker使用技巧】

Docker使用 命令 //docker 进入容器内部 退出 exit docker exec -it 容器ID /bin/bash //docker 查看容器日志 退出 Ctrlc docker logs [OPTIONS] 容器ID或名称 [OPTIONS] -f : 跟踪日志输出 -t : 显示时间戳 --tail :仅列出最新N条容器日志 --since&#xff1a;显示某个日…

从零开始精通RTSP之传输AAC音频流

概述 AAC&#xff0c;英文全称为Advanced Audio Coding&#xff0c;是一种高效的有损音频压缩格式&#xff0c;由MPEG-4标准定义。相比传统的MP3&#xff0c;AAC在相同比特率下能提供更好的音质&#xff0c;尤其在低比特率场景下优势明显。AAC支持多种采样率、声道数和编码工具…

MySQL远程连接错误解决:“Host is not allowed to connect to this MySQL server”详解

目录 一、异常错误二、原因三、解决方法 一、异常错误 通过远程客户端访问MySQL服务器时会遇到“Host is not allowed to connect to this MySQL server”的错误提示。 二、原因 MySQL服务器当前配置不允许来自特定主机的连接尝试。 三、解决方法 允许远程主机访问MySQL服…

link.click()时浏览器报错The file at ‘data:image/png;base64,iVBORw

代码如下&#xff1a; const dataURL canvas.toDataURL({format: "png",width: 400,height: 400, });const link document.createElement("a"); link.download new Date().getTime();link.href dataURL; document.body.appendChild(link); link.click…

IT行业的现状与未来发展趋势

方向一&#xff1a;技术革新与行业应用 随着科技的日新月异&#xff0c;IT行业已成为全球经济增长和社会进步的重要引擎。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些前沿技术正以前所未有的速度重塑我们的生活和工作方式。以下是我对IT行业现状及未来…

高压无源探头能测整流桥电压吗?

高压无源探头是用于测量高电压电路中信号的一种工具&#xff0c;它不需要外部电源供电。然而&#xff0c;对于测量整流桥电压&#xff0c;需要考虑几个因素以确定是否可以使用高压无源探头。 首先&#xff0c;让我们了解一下整流桥的基本原理。整流桥是一种电路&#xff0c;用…

MyBatis的一二级缓存区别

MyBatis的一级缓存和二级缓存之间存在以下主要区别&#xff1a; 缓存级别与作用域&#xff1a; 一级缓存&#xff1a;也称为SqlSession级别的缓存&#xff0c;与数据库会话&#xff08;SqlSession对象&#xff09;绑定&#xff0c;并且默认开启。一级缓存的作用域仅限于同一个…

STM32--HC-SR501 热释电人体红外感应模块

实物引脚图&#xff1a; 模块工作特性&#xff1a; 当人进入感应范围之后输出引脚输出高电平&#xff0c;人离开感应范围自动延时输出低电平 热释电效应&#xff1a; 热释电传感器&#xff0c;也称为人体红外传感器&#xff0c;其工作原理基于热释电效应。这种传感器由几个关…

Rust中使用Rocket框架返回html网页,返回一个基于 Handlebars (HBS) 模板的响应

在Rust中使用Rocket框架返回网页&#xff0c;通常涉及创建一个路由&#xff0c;该路由将返回一个HTML页面。Rocket是一个快速、易用且可扩展的Web框架&#xff0c;它允许你以一种简洁的方式定义路由和处理请求。 一、使用Rocket框架返回一个简单的HTML页面&#xff1a; 添加依…

手机怎么下载别人直播间视频

手机下载直播视频&#xff0c;您需要按照以下步骤进行操作&#xff1a; 1. 打开直播平台&#xff0c;获取正在直播的链接&#xff0c;就是直播间的地址&#xff0c;然后粘贴在直接视频解析工具里&#xff0c;就可以同步下载直播视频画面。 2. 获取直播视频解析工具方法&#…

项目管理-案例重点知识(成本管理)

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 三、成本管理 案例重点 成本管理 案例重点内容&#xff1a; &#xff08;1&#xff09;成本管理计划内容 &#xff08;2&#xff09;估算…

pcdn边缘云常见sla有哪些?如何避免被白嫖

PCDN&#xff08;Point-to-Point Content Delivery Network&#xff09;边缘云常见的SLA&#xff08;Service Level Agreement&#xff09;规则包括高峰期离线、服务时间、重传延时、限速等。这些规则是为了保证服务质量和用户体验。下面将详细解释这些规则&#xff0c;并提供一…

ANSYS Maxwell16 引导

Maxwell 使用 下载 https://download.csdn.net/download/wangjun_huster/89313272 安装 https://www.52txr.cn/2022/MaxwellInstall.html 入门

渗透相关面试+流量分析

文章目录 简单自我介绍上一个工作的主要内容Hvv的分组和流程你在hvv/攻防演练中取得了哪些成绩&#xff1f; 二、渗透相关面试题基础端口号以及入侵方式OSI七层协议响应状态码都有哪些&#xff1f;**WAF和IPS的区别**盲注是什么&#xff1f;java内存马类型**内存马有几种类型**…

2024最新大厂C++面试真题合集,大厂面试百日冲刺 bay11

CSIG 腾讯后台 new和malloc区别 "new"是C的一个操作符&#xff0c;它在创建对象时会自动调用构造函数。"malloc"是C语言的函数&#xff0c;仅仅分配内存。"new"返回的是对象类型的指针&#xff0c;类型与对象的类型保持一致&#xff0c;无需类…

谷歌全力反击 OpenAI:Google I/O 2024 揭晓 AI 新篇章,一场激动人心的技术盛宴

&#x1f680; 谷歌全力反击 OpenAI&#xff1a;Google I/O 2024 揭晓 AI 新篇章&#xff0c;一场激动人心的技术盛宴&#xff01; 在这个人工智能的全新时代&#xff0c;只有谷歌能让你眼前一亮&#xff01;来自全球瞩目的 Google I/O 2024 开发者大会&#xff0c;谷歌用一场…