设备树语法

news2024/11/27 11:46:18

设备树语法

  • 1 Devicetree格式
    • 1.1 DTS文件格式
    • 1.2 node格式
    • 1.3 properties格式
  • 2 dts文件包好desi文件
  • 3 常用的 属性 properties
    • 3.1 #address-cells、#size-cells
    • 3.2 compatible
    • 3.3 model
    • 3.4 status
    • 3.5 reg(设备不同reg属性的含义就不同)
    • 3.6 name、device_type(都过时了建议不用)
  • 4 常用的 节点 node
    • 4.1 根节点
    • 4.2 cpu节点
    • 4.2 memory节点
    • 4.3 chosen节点

1 Devicetree格式

1.1 DTS文件格式

/dts-v1/; //表示版本
[memory reservations]; //格式为:/memreserve/ <address> <length>
/{
	[property definitions]
	[child nodes]
};

举例:
在这里插入图片描述

1.2 node格式

[lable:] node-name[@unit-address] {
	[properties definitions];
	[child nodes] ;
};

举例:
在这里插入图片描述
【注】:lable是标号可以省略,但一个有label的node可以被方便的引用,例如,有下面一个节点:

/dts-v1/;
/ {
	uart0: uart@fe001000 {
	compatible="ns16550";
	reg=<0xfe001000 0x100>;
	};
};

两种引用方式分别为:
①用lable引用node

&uart0 {
	status = "disable";
};

②用全路径引用node

&{/uart@fe001000} {
	status = "disable";
};

1.3 properties格式

In simple terms:“name = value”,其中value可能没有,如果有value,则有多种取值方式。

  1. arrays of cells(1 个或多个 32 位数据, 64 位数据使用 2 个 32 位数据表示),
  2. string(字符串)
  3. bytestring(1个或多个字节)

举例:
a. Arrays of cells :cell就是一个32位的数,用尖括号<>围起来
b. 64bit 数据使用 2 个 cell来表示

 clock-frequency = <0x00000001 0x00000000>;

c. A bytestring(字节序列) ,用中括号包围起来,中括号括起来的为16进制单字节

local-mac-address = [00 00 12 34 56 78]; // 每个 byte 使用 2 个 16 进制数来表示

d. 也可是各种值的组合,用逗号隔开

compatible = "ns16550", "ns8250";
example = <0xf00f0000 19>, "a strange property format";

2 dts文件包好desi文件

dts文件不需要从头开始写,可以 通过include包含设备树模板,一般命名为XXX.dtsi文件,还可以包含一些.h文件,在.h文件中定义一些宏。(因为需要涉及到预处理过程,所以需要编译&&&编译,而不能直接用spr****编译)

3 常用的 属性 properties

3.1 #address-cells、#size-cells

其中cell指的是一个32位的数值。
address-cells:指address需要多少个32位数表示
size-cells:指size需要多少个32位数表示
【注】他们影响的是子节点中的reg属性;
在这里插入图片描述
此处的reg用于表示这是第几个CPU,设备不同reg属性的含义就不同。

3.2 compatible

表示兼容,如果对于某个LED驱动,内核中A、B、C三个驱动都支持它,可以写成:

led {
	compatible = "A", "B", "C";
};

内核启动时,就会为这个LED按这样的有限顺序为它找到驱动程序。
compatible 的值,建议取这样的形式:“manufacturer,model”,即“厂家名,模块名”。

3.3 model

compatible属性可以知道兼容哪些板子,而module属性可以明确的告诉你到底是什么板。举例,根节点中可以这样写:

/{
	compatible = "samsung,smdk2440", "samsung,mini2440";
	model = "jz2440_v3";
};

3.4 status

可以决定是否启用板子上的某些驱动,比如板子上没有uart1:

&uart1 {
	status = "disabled";
};
注:反过来写 "okay"

3.5 reg(设备不同reg属性的含义就不同)

register虽然本意是寄存器,但是ARM系统中寄存器和内存是统一编址的,他们在访问上没有任何区别,所以reg用于描述一段空间,reg属性的值是一系列的address和size。用多少个32位的数来表示address和size是由其父节点中#address-cells、#size-cells的属性决定的,举例:

/ {
	#address-cell = <1>;
	#size-cell = <1>;
	memory {
		reg = <0x80000000 0x20000000>;
	};
};

上例中表示寄存器的起始地址和大小,设备不同reg属性的含义就不同。

3.6 name、device_type(都过时了建议不用)

用于表示节点名字,在platform_driver匹配时优先级最低,device_type优先级为中。而compatible属性在匹配过程中优先级最高。

4 常用的 节点 node

4.1 根节点

在这里插入图片描述

4.2 cpu节点

芯片厂家提供的dtsi文件都定义好了。

4.2 memory节点

一般需要制作电路板的公司根据自己选用的内存芯片大小来设置。

4.3 chosen节点

这个是虚拟节点,不对应具体的设备,可以通过设备树文件给内核传入一些参数,比如可在chosen节点中设置bootargs:

chosen {
	bootargs = "noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200";
};

参考:韦东山《嵌入式Linux应用完全开发手册》

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

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

相关文章

链式前向星解析

树形DP涉及到图存储&#xff0c;先复习一下链式前向星存储图&#xff0c;便于理解上篇的树形DP。对于图数据结构的存储&#xff0c;我们除了采用邻接矩阵&#xff08;消耗空间&#xff0c;不常用&#xff09;、邻接表&#xff0c;还有一种方法就是链式前向星。 链式前向星存储图…

数据结构——线性表(一)

线性表&#xff0c;顾名思义&#xff0c;是具有像线一样的性质的表。如同学生们在操场上排队&#xff0c;一个跟着一个排队&#xff0c;有一个打头&#xff0c;有一个收尾&#xff0c;在其中的学生都知道前一个是谁&#xff0c;后一个是谁&#xff0c;这样就像一根线将他们都串…

[HNCTF 2022 WEEK2]来解个方程?

标准的Z3题&#xff0c;可以拿来当模版题 题目逻辑很简单 直接看check from z3 import * # 初始化求解器 s Solver() # 定义6个未知数 n 24 x [Int(s str(i)) for i in range(0,24)] s.add(245 * x[6] 395 * x[5 ] 3541 * x[4 ] 2051 * x[3 ] 3201 * x[2 ] 1345 * x[7 ] 8…

中制交通安全统筹闪耀资本市场,成功上市引领行业新篇章

3月30日上午,随着上市钟声的敲响,中制(海南)交通安全统筹服务有限公司(股票代码:HK 31598)在香港股权交易展示中心挂牌上市,中制交通安全统筹董事长熊辉、联合创始人兼CEO张国伟、董事石杰等公司高管、股东、客户、合作伙伴出席挂牌仪式,共同见证敲钟上市,这也使中制交通安全统…

PonyAi Planning-横纵向轨迹规划

PonyAi Planning-横纵向轨迹规划 轨迹规划的探索和挑战 轨迹规划的概念安全舒适两不误&#xff1a;探讨优化算法在规划控制中的应用 轨迹规划的概念 决策 横向规划 纵向规划 优化算法在规划&#xff08;Planning&#xff09;中的应用 附赠自动驾驶学习资料和量产经验…

PP-YOLOE: An evolved version of YOLO

摘要 我们在之前 PP-YOLOv2 的基础上进行了优化&#xff0c;使用 无锚 范式&#xff0c;更强大的主干和颈部配备了 CSPRepResStage 。 ET-head 和动态标签分配算法 TAL 。 1 、介绍 受 YOLOX 的启发&#xff0c;我们进一步优化了之前的工作 PP-YOLOv2 。 PP-YOLOv2 是一款高…

使用hping3网络工具构造TCP/IP数据包和进行DDos攻击

1 概述 hping3是一个强大的命令行工具&#xff0c;用于生成、发送和解析TCP/IP协议的数据包。它是开源的网络安全工具&#xff0c;由Salvatore Sanfilippo开发&#xff0c;主要应用于网络审计、安全测试和故障排查等领域。hping3不仅可以作为普通的网络连通性检测工具&#xf…

深入理解数据结构(2):顺序表和链表详解

文章主题&#xff1a;顺序表和链表详解&#x1f331;所属专栏&#xff1a;深入理解数据结构&#x1f4d8;作者简介&#xff1a;更新有关深入理解数据结构知识的博主一枚&#xff0c;记录分享自己对数据结构的深入解读。&#x1f604;个人主页&#xff1a;[₽]的个人主页&#x…

数据结构——lesson12排序之归并排序

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

揭秘五力模型:轻松掌控企业竞争命脉,决策不再迷茫!

五力分析模型又成为波特五力模型是由著名的管理学者迈克尔波特(Michael Porter)在20世纪80年代初提出的一种理论框架&#xff0c;它对企业营销中的战略制定产生了全球性的深远影响。这一模型被广泛应用于企业竞争战略的分析&#xff0c;可以帮助企业有效地分析企业在营销环境中…

Java实验报告2

一、实验目的 本实验为Java课程的第二次实验&#xff0c;其主要目的如下&#xff1a; 理解继承和多态的概念&#xff1b; 掌握域和方法在继承中的特点&#xff1b; 掌握构造函数的继承和重载&#xff1b; 掌握this和super的用法&#xff1b; 二、实验原理 ​ 继承性是面…

上市公司-动态能力数据集(2008-2022年)

01、数据介绍 上市公司动态能力是指企业在不断变化的外部环境中&#xff0c;通过整合、创建和重构内外部资源&#xff0c;寻求和利用机会的能力。这种能力有助于企业重新构建、调配和使用其核心竞争力&#xff0c;从而保持与时俱进&#xff0c;应对市场挑战。具体来说&#xf…

Chrome DevTools中的骚操作

今天来分享 Chrome DevTools 中一些非常实用的功能和调试技巧&#xff01; 保留日志 当我们刷新完页面之后&#xff0c;通常控制台的 Console 面板就会被清空。如果想保留控制台的日志&#xff0c;就可以在设置中勾选 Preserve log 选项以保留控制台中的日志。 代码覆盖率 我…

快讯!TiDB v8 发版!超硬核 v8 引擎!

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库&#xff0c;是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品。 具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数…

【Docker】Windows中打包dockerfile镜像导入到Linux

【Docker】Windows中打包dockerfile镜像导入到Linux 大家好 我是寸铁&#x1f44a; 总结了一篇【Docker】Windows中打包dockerfile镜像导入到Linux✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 今天遇到一个新需求&#xff0c;如何将Windows中打包好的dockerfile镜像给迁移…

【Linux】进程程序替换 做一个简易的shell

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 进程程序替换 替换原理 先看代码和现象 替换函数 第一个execl()&#xff1a; 第二个execv()&#xff1a; 第三个execvp()&#xff1a; 第四个execvpe()&a…

android WMS服务

android WMS服务 WMS的定义 窗口的分类 WMS的启动 WindowManager Activity、Window、DecorView、ViewRootImpl 之间的关系 WindowToken WMS的定义 WMS是WindowManagerService的简称&#xff0c;它是android系统的核心服务之一&#xff0c;它在android的显示功能中扮演着…

YOLOv9改进策略 :卷积魔改 | 感受野注意力卷积运算(RFAConv)

💡💡💡本文改进内容:感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题 💡💡💡使用方法:代替YOLOv9中的卷积,使得更加关注感受野注意力,提升性能 💡💡💡RFAConv…

vue3:通过【自定义指令】实现自定义的不同样式的tooltip

一、效果展示 vue3自定义不同样式的tooltip 二、实现思路 1.ts文件 在ts文件中创建一个全局容器 import一个容器组件&#xff0c;用于存放自定义的各式组件 创建一个指令并获取到指令传递的数据&#xff0c;并为容器组件传值 2.容器组件 用于存放自定义Tooltip样式的组件…

最新2024年增强现实(AR)营销指南(完整版)

AR营销是新的最好的东西&#xff0c;就像元宇宙和VR营销一样。利用AR技术开展营销活动可以带来广泛的利润优势。更不用说&#xff0c;客户也喜欢AR营销&#xff01; 如果企业使用AR&#xff0c;71%的买家会更多地购物。40%的购物者准备在他们可以在AR定制的产品上花更多的钱。…