Linux-设备树

news/2024/12/19 18:36:58/

一、设备树

设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等。
树的主干就是系统总线,IIC 控制器、GPIO 控制器、SPI 控制器等都是接到系统主线上的分支。
dts文件:用一个专属的文件格式来描述,这个专属的文件就叫做设备树,文件扩展名为.dts。
dtsi文件:同一个 SOC 可以作出很多不同的板子,这些不同的板子肯定是有共同的信息,将这些共同的信息提取出来作为一个通用的文件,这个通用文件的扩展名为dtsi文件。
DTB 是将DTS 编译以后得到的二进制文件。
备注:
一般.dts描述板级信息(也就是开发板上有哪些 IIC 设备、SPI 设备等),.dtsi 描述 SOC 级信息(也就是 SOC有几个CPU、主频是多少、各个外设控制器信息等)。

二、设备树DTS语法

DTS 语法:是一种 ASCII文本文件;
1)设备节点:
设备树是采用树形结构来描述板子上的设备信息的文件,每个设备都是一个节点,叫做设备节点,每个节点都通过一些属性信息来描述节点信息,属性就是键—值对。
label: node-name@unit-address
label:标签,为了方便访问节点,&label实现对指定节点访问。
node-name:节点名称,为ASCII;
unit-address:节点设备的地址或者寄存器地址,如果节点设备没有地址可以不要unit-address。
2)设备树源码中常用的几种数据格式
①.字符串
compatible = “arm,cortex-a7”;
②.32 位无符号整数
reg = <0>;
③.字符串列表
属性值也可以为字符串列表,字符串和字符串之间采用“,”隔开;
compatible = “fsl,imx6ull-gpmi-nand”, “fsl, imx6ul-gpmi-nand”;
3)标准属性
①.compatible属性
compatible 属性也叫做“兼容性”属性,这是非常重要的一个属性!compatible 属性的值是一个字符串列表,compatible 属性用于将设备和驱动绑定起来。
compatible 属性的值格式如下:
manufacturer 表示厂商;
model 一般是模块对应的驱动名字。
②.model 属性
model 属性值也是一个字符串,一般 model 属性描述设备模块信息。
③.status属性
status 属性值也是字符串,字符串是设备的状态信息。
备注状态值:
“okay”:表明设备是可操作的。
“disabled”:表明设备当前是不可操作的,但是在未来可以变为可操作的;
“fail”:表明设备不可操作,设备检测到了一系列的错误,而且设备也不大可能
变得可操作。
④.#address-cells 和#size-cells属性
这两个属性的值都是无符号 32 位整形,#address-cells和#size-cells这两个属
性可以用在任何拥有子节点的设备中,用于描述子节点的地址信息。
#address-cells:决定了子节点reg属性中地址信息所占用的字长(32 位);
#size-cells:决定了子节点 reg 属性中长度信息所占的字长(32 位);
⑤.reg属性
reg 属性的值一般是(address,length),reg 属性一般用于描述设备地址空间资源
信息。
⑥.ranges属性
ranges 是一个地址映射/转换表,ranges 属性每个项目由子地址、父地址和地址
空间长度这三部分组成。
ranges(child-bus-address,parent-bus-address,length):
child-bus-address:子总线地址空间的物理地址,由父节点的#address-cells确定
此物理地址所占用的字长。
parent-bus-address:父总线地址空间的物理地址,同样由父节点的#address-
cells确定此物理地址所占用的字长。
length:子地址空间的长度,由父节点的#size-cells 确定此地址长度所占用的字
长。
备注:ranges 属性值为空值,说明子地址空间和父地址空间完全相同,不需要进
行地址转换。
⑦.name属性
name 属性值为字符串,name 属性用于记录节点名字。


http://www.ppmy.cn/news/1556450.html

相关文章

MySQL 实战:小型项目中的数据库应用(二)

小型项目里 MySQL 的安全与性能管理 用户权限管理 在小型项目中&#xff0c;合理的用户权限管理对于保障 MySQL 数据库的安全性至关重要。MySQL 的权限系统有着细致的层级划分和丰富的权限类型&#xff0c;能让管理员精确控制不同用户对数据库的访问与操作能力。 首先是权限…

智能算法驱动:中阳科技量化交易模型的革新之路

在金融智能化和自动化浪潮中&#xff0c;中阳科技率先以量化交易模型为核心&#xff0c;构建高效的投资生态&#xff0c;成为智能交易领域的领导者。本文将深入剖析中阳科技在模型设计、数据整合、技术创新以及未来发展策略中的核心优势&#xff0c;为读者展示其领先的技术应用…

基于 Spring Boot + Vue 的宠物领养系统设计与实现

引言 近年来&#xff0c;随着人们生活水平的提高&#xff0c;宠物逐渐成为许多家庭的重要成员。然而&#xff0c;宠物的流浪和弃养问题日益严重&#xff0c;这促使社会对宠物领养的需求不断增长。为解决宠物领养中信息不对称、领养流程复杂等问题&#xff0c;设计并实现一个基…

Django+React---从0搭建一个听音乐+聊天室的网站

文档、网站、Github地址&#xff1a; 需要梯子&#xff1a; 写开发文档的时候&#xff0c;用的就是Colab(ipython)&#xff0c;不太好转过来&#xff0c;所以这里就放个链接吧&#xff1a;Dev Note Colab 不需要梯子&#xff1a; Github地址&#xff08;有的时候需要梯子&…

使用qemu搭建armv7嵌入式开发环境

目录 目录 1 概述 2 环境准备 2.1 vexpress系列开发板介绍 2.2 安装工具 2.2.1 安装交叉工具链 2.2.2 安装qemu 2.2.3 安装其他工具 3 启动uboot 3.1 uboot下载与编译 3.1.1 下载 3.1.2 编译 3.2 使用qemu启动uboot 4 启动kernel 4.1 下载和编译kernel 4.1.1 下…

CSS学习第二天

HTML文本颜色 颜色属性被用来设置文字的颜色&#xff0c;颜色通过css最经常的指定&#xff1a; #FF000&#xff1b;RGB&#xff08;255&#xff0c;0&#xff0c;0&#xff09;&#xff1b;颜色的名称red 一个网页的背景颜色是指在主体内的选择 文本的对齐方式 文本排列属性是…

游戏AI实现-寻路算法(Dijkstra)

戴克斯特拉算法&#xff08;英语&#xff1a;Dijkstras algorithm&#xff09;&#xff0c;又称迪杰斯特拉算法、Dijkstra算法&#xff0c;是由荷兰计算机科学家艾兹赫尔戴克斯特拉在1956年发现的算法。 算法过程&#xff1a; 1.首先设置开始节点的成本值为0&#xff0c;并将…

STM32 485发数乱码怎么回事

STM32通过RS485发送数据时出现乱码,可能的原因有多种。以下是一些常见的原因及其相应的解决方法: 波特率不匹配: 检查STM32的串口波特率设置是否与接收端(如串口助手或另一设备)的波特率设置一致。波特率决定了串口数据传输的速度,如果发送和接收两端的波特率不一致,就会…