当前位置: 首页 > article >正文

Linux-设备树

一、设备树

设备树(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.kler.cn/a/442099.html

相关文章:

  • python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)图像变换
  • PCL K4PCS算法实现点云粗配准【2025最新版】
  • 企业分类相似度筛选实战:基于规则与向量方法的对比分析
  • Jenkins-Pipeline简述
  • QT 使用QTableView读取数据库数据,表格分页,跳转,导出,过滤功能
  • 统信V20 1070e X86系统编译安装PostgreSQL-13.11版本以及主从构建
  • IDEA 使用 Gradle 强制清除缓存,更新快照
  • MySQL学习之DDL操作
  • xlsx预览
  • LeetCode 热题 100_K 个一组翻转链表(31_25_困难_C++)(四指针法)
  • LSTM长短期记忆网络
  • QNX系统和android系统文件互拷贝
  • 《两道有趣的编程题解析与解法》
  • Spring 不推荐使用@Autowired
  • LeetCode5. 最长回文子串(2024冬季每日一题 35)
  • 在微服务架构中,处理日志的中间件和工具非常重要,它们帮助开发者收集、存储、分析和监控日志数据。一些常用的日志处理中间件及其特点、优缺点介绍。
  • 计算机网络信息系统安全问题及解决策略
  • 在优化算法中常见哪些数学函数(根据数学性质分类)
  • 用python实现滑雪小游戏,附源码
  • CSS 核心属性详解
  • 联邦学习:披着隐私外衣的“纸老虎“?
  • docker搭建Redis集群及哨兵(windows10环境,OSS Cluster)
  • 预处理内容
  • SafeRPlan: 用于椎弓根螺钉置入术中规划的安全深度强化学习|文献速递-生成式模型与transformer在医学影像中的应用
  • lettuce 默认情况下连接池不生效,源码分析
  • 阿尔茨海默症数据集,使用yolo,voc,coco格式对2013张原始图片进行标注,可识别轻微,中等和正常的症状