设备树语法

设备树语法

  • 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应用完全开发手册》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业知识库搭建不再是难题,靠这几个软件就可以了

在当今知识为王的时代&#xff0c;具备一套强大且实用的企业知识库&#xff08;Knowledge Base&#xff09;已成为提升工作效率、促进团队合作不可或缺的工具。那么&#xff0c;问题来了&#xff0c;我们该如何搭建一套属于自己的知识库呢&#xff1f;今天&#xff0c;我就给大…

软件工程 - 04 需求分析

文章目录 需求分析需求分析方法系统建模用例图类图对象图活动图时序图协作图构件图部署图 软件开发各个阶段的图 需求分析 软件开发中非常重要的一环&#xff1b;好的需求分析方法&#xff0c;可以帮助更好地理解用户需求&#xff0c;准确定义系统的功能和性能要求&#xff0c…

深入理解数据结构(3):栈和队列详解

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

系统优化都没做过?看这篇就够了

目录 一、系统优化指标 二、系统优化简介 三、系统优化 3.1 CPU 高 3.2 内存占用高 业务引起的内存升高 程序自身引起的内存问题 3.3 磁盘I/O 3.4 网络 3.5 数据库优化 3.6 响应时间高 3.7 吞吐量 3.8 代码层面优化 3.9 业务优化 四、JVM优化 4.1 堆内存设置 4.2 选择何时的…

半导体工艺技术

完整内容点击&#xff1a;【半导体工艺技术】

win10蓝牙开关不见了怎么办,win10设置里面蓝牙开关不见了

最近&#xff0c;有用户在使用win10系统的时候&#xff0c;发现设置蓝牙和其他设备中蓝牙开关不见了。正常情况下&#xff0c;“蓝牙和其他设备”下面是有蓝牙开启开关的&#xff0c;没有的话是怎么回事呢?出现这样的情况&#xff0c;可能是应为系统没有将测到蓝牙设备或者蓝牙…

高德地图key注册教程_地图数据采集软件

1.先注册成为开发者账号。 2.再申请高德地图Key。 3.把申请得到的高德地图Key填入软件中。 1.请先打开以下连接 高德地图key注册地址 易地图数据采集大师手机App版介绍 易地图数据采集大师电脑PC版介绍 2.注册新用&#xff08;如果已有开发者账号&#xff0c;本步可省略&am…

知识蒸馏详解及pytorch官网demo案例

知识蒸馏Knowledge Distillation(KD) 1、简介 一种模型压缩方法 知识蒸馏的一般框架&#xff08;如下图&#xff09; 三部分&#xff1a;知识、蒸馏算法、师生架构。 知识 将知识分为三种形式&#xff1a;基于响应的&#xff08;response-based&#xff09;、基于特征的&…

pytest--python的一种测试框架--pytest常用断言类型

一、pytest常用断言类型 等于: 不等于&#xff1a;&#xff01; 大于&#xff1a;> 小于&#xff1a;< 属于&#xff1a;in 不属于&#xff1a;not in 大于等于&#xff1a;> 小于等于&#xff1a;< 是&#xff1a;is 不是&#xff1a;is not def test_two():ass…

酷得单片机方案 2.4G儿童遥控漂移车

电子方案开发定制&#xff0c;我们是专业的 东莞酷得智能单片机方案之2.4G遥控玩具童车具有以下比较有特色的特点&#xff1a; 1、内置充电电池&#xff1a;这款小车配备了可充电的电池&#xff0c;无需频繁更换电池&#xff0c;既环保又方便。充电方式可能为USB充电或者专用…

LATTICE进阶篇DDR2--(0)获取ddr2 IP核

前言 想要仿真lattice的DDR2由来已久&#xff0c;但苦于对其了解甚少&#xff0c;在查阅过很多资料后&#xff0c;终于对这个IP核的仿真有了一些了解。 现做一些总结&#xff0c;以备不时之需&#xff0c;也让有需要的朋友&#xff0c;少走一些弯路。 环境&#xff1a;win10…

算法学习——LeetCode力扣动态规划篇5

算法学习——LeetCode力扣动态规划篇5 198. 打家劫舍 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统…

通知中心架构:打造高效沟通平台,提升信息传递效率

随着信息技术的快速发展&#xff0c;通知中心架构作为一种关键的沟通工具&#xff0c;正逐渐成为各类应用和系统中必不可少的组成部分。本文将深入探讨通知中心架构的意义、设计原则以及在实际场景中的应用。 ### 什么是通知中心架构&#xff1f; 通知中心架构是指通过集中管…

信息学奥赛一本通T1268-完全背包问题

solution1 二维形式 #include<iostream> #include<algorithm> using namespace std; const int maxn 35, maxv 210; int w[maxn], c[maxn], dp[maxn][maxv]; int main(){int n, m;scanf("%d%d", &m, &n);for(int i 1; i < n; i){scanf(&…

电脑win10系统更新后很卡怎么办,win10电脑更新完系统特别卡

更新或者升级win10系统后发现电脑变卡了,这是什么原因呢?如果电脑硬件不是特别差,那么可以按照下面的方法来缓解卡顿,因为可能是内存不足所引起的,试试清理更新缓存和禁用开机启动项。但如果是硬件较低或者太老旧,并且本身的内存就很小的话,那么建议你还是升级硬件吧。下…

.NET 开发支持技术路线 .Net 7 将停止支持

.NET 开发技术路线图 微软方面强调&#xff0c;使用 .NET 7 的应用程序将在支持结束后继续运行&#xff0c;但用户可能无法获得 .NET 7 应用程序的技术支持。他们不会继续为 .NET 7 发布新的安全更新&#xff0c;用户可能会面临安全漏洞问题。 开发人员必须使用 .NET 8 SDK 构建…

Windows提权!!!

之前讲过一下提权&#xff0c;但是感觉有点不成体系&#xff0c;所以我们就成体系的来讲一下这个操作系统的提权 目录 Windows的提权 1.Widnows的内核溢出提权 1.MSF自带的提权模块&#xff08;Win11都能提上来&#xff0c;有点牛逼&#xff09; 2.CS的插件提权 3.补丁对比…

毕设论文目录设置

添加目录 选择一种格式的自动目录 更新目录 发现该目录中只有1、2章&#xff0c;3、4章 然后再点击更新目录 对应的&#xff0c;小标题添加二级目录

基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现

基于JavaSpringMVCMybatisJquery高校毕业设计管理系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…

【C语言】结构体详解(一)

目录 1、什么是结构体? 2、结构体成分 3、结构体变量的定义与初始化 3.1、结构体变量的三种定义方式 3.2、结构体变量的初始化 4、结构体成员的访问&#xff08;两种方式&#xff09; 4.1、直接访问 4.2、间接访问 5、结构的特殊声明 5.1、不完全声明&#xff08;匿…