itop-3568开发板驱动学习笔记(22)设备树(一)设备树基础

news/2024/4/20 8:52:26/文章来源:https://blog.csdn.net/weixin_43772810/article/details/130235885

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记

文章目录

  • 设备树简介
  • 设备树编译
  • 设备树语法
    • 设备根节点
    • 设备子节点
    • 节点名称
    • reg 属性
    • #address-cell 和 #size-cells 属性
    • model 属性
    • status 属性
    • compatible 属性
    • aliases 节点
    • chosen 节点
    • device_type 属性
    • 自定义属性

设备树简介

什么是设备树

设备树是保留着存在于系统中的设备信息,当机器引导时,OS通过使用驱动程序和其他组件获得的信息建立此树,并且当添加或删除设备时更新此树。

上一篇笔记提到了平台设备模型,它将设备和驱动区分开来,一份驱动可以与多份设备匹配,但随着 device (板级文件)的增多,Linux 内核代码变得越来越多,这些代码相对于内核来说都算是”垃圾代码“,为了解决这个问题,linux 就引入了设备树来替代 device 文件。

既然设备树是用来替代平台总线 device 文件的,那么设备树的运作原理还是基于平台总线模型,只是设备树采用的是文本格式,不像 device.c 一样每次修改都要重新编译内核。

设备树基本名词

名词含义
DTDevice Tree 设备树
FDTFlattened Device Tree 展开设备树,起源 OpenFirmware(OF)
dtsdevice tree source 设备树源码
dtsidevice tree source include 通用的设备树源码
dtbdevicedevice tree blob dts 编译生成的文件
dtcdevice tree compiler 设备树编译器

设备树编译

编译设备树命令:

dtc -I dts -O dtb -o xxx.dtb xxx.dts

反编译设备树:

dtc -I dtb -O dts -o xxx.dts xxx.dtb

示例:

在这里插入图片描述

设备树语法

设备根节点

根节点是设备树必须添加的节点,节点名为 /。

示例:

/dts-v1/; // dts 版本
/{        // 根节点
};

设备子节点

子节点格式:

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

Tip:同级节点下节点名称不能相同,不同级别节点名称可以相同。

示例:

在这里插入图片描述

节点名称

在对节点命名时,需要体现设备的特征,如串口一般命名为 uart 或 serial,

在这里插入图片描述
节点名称是必选项,标签和设备地址是可选项,标签是节点的别名,设备地址用于区分不同的设备。

reg 属性

reg 属性用来描述地址信息,如寄存器地址,格式为:

reg = <addr1 len1 addr2 len2 ...>

在这里插入图片描述

#address-cell 和 #size-cells 属性

reg 属性的长度是可变的,#address-cell 和 #size-cells 属性用来决定 reg 的长度,比如下面这个例子,#address-cell 为 1,表示有一个地址,#size-cells 为 0,表示有 0 个地址长度。

在这里插入图片描述

model 属性

model 属性是一个字符串,用来描述设备信息,例如:

在这里插入图片描述

status 属性

status 属性表示设备的状态,该属性值是一个字符串,可取值包括:

status 值含义
okay设备可用
disabled设备不可用
fail设备不可用且有错误
fail-sss设备不可用且有 sss 错误(sss 是错误内容)

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

compatible 属性

compatible 是设备树与驱动进行匹配的属性,属性值为字符串,compatible 属性值的推荐格式:"manufacturer,model"(“厂商名,模块驱动名”)。

该属性可以有多个值,驱动会从第一个值开始匹配,示例:

在这里插入图片描述

aliases 节点

aliases 用来定义节点的别名,它和节点标签类似,但它可以批量定义别名。

示例:

在这里插入图片描述

chosen 节点

chosen 节点用来 uboot 给内核传递参数(重点是 bootargs 参数),该节点必须是根节点的子节点。

示例:

在这里插入图片描述

device_type 属性

device_type 属性值为字符串,只用于 cpu 或 memory 节点。

示例:

在这里插入图片描述

自定义属性

设备树可以自定义一些属性,

比如 mipi 背光参数,

在这里插入图片描述

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

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

相关文章

Linux云服务器的使用,以及运行Python程序

目录 1、使用Linux云服务器的软件 2、Linux系统运行Python程序 3、Linux系统查看包、虚拟环境、安装包等 以下几个深度学习服务器都不错&#xff1a;智星云、AutoDL、恒源云 1、使用Linux云服务器的软件 MobaXterm_Personal 推荐MobaXterm_Personal mobaxterm是一款方便网站…

数据库管理新定义:一款纯Web化免费SQL开发工具,免安装

SQL Studio是一款由麦聪软件研发的多数据库管理工具&#xff0c;提供Windows、Linux 和 MacOS三种版本的软件包&#xff0c;支持中英文两种语言。SQL Studio是用Java编写的&#xff0c;默认使用 JDK 8进行编译。 下载看这里: [SQLStudio] (http://www.maicongs.com/#/home/web)…

地热井监测控制系统解决方案

概述 地热井监测控制系统主要是对地热井采水和回灌进行流量、温度、水位&#xff08;压力&#xff09;等参数的实时监测&#xff0c;对地热站现场环境进行实时视频监控。地热井现场和取水井、回灌井安装监测装置&#xff0c;通过无线传输设备将数据实时传输至自然资源局已建中…

上海车展:预售价109.8万元,仰望U8见证国产品牌崛起

如果要评选2023上海车展上比亚迪展台“最亮的星”&#xff0c;估计很多媒体和观众都会毫不迟疑地把票投给仰望U8。 没办法&#xff0c;因为在本届车展上&#xff0c;仰望U8的表现实在是太吸睛了。 作为比亚迪旗下的高端新能源品牌&#xff0c;仰望汽车在上海车展上携两款车型—…

【Leetcode -141.环形链表 -2.两数相加】

Leetcode Leetcode -141.环形链表Leetcode -2.两数相加 Leetcode -141.环形链表 题目&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给…

测试Ocr工具IronOCR(续2:编写圈选图片识别文本的程序)

上篇文章介绍了加载图片并圈选图片中文字区域的程序实现方式&#xff0c;本文基于此实现识别圈选区域文字内容的程序。主要识别语言包括英文和中文。IronOCR包中自带英文语言包&#xff0c;项目还需安装中文语言包&#xff0c;建议直接安装IronOcr.Languages.Chinese语言包&…

什么样的测试才是优秀的测试

什么样的测试才是优秀的测试 优秀的测试应该包括以下要素&#xff1a; 测试代码的可读性和可维护性 代码在项目中及特定源代码中的组织方式 测试所检查的内容 测试的可靠性及可重复性 测试对测试替身的使用 可读的代码才是可维护的代码 代码较差的可读性与缺陷密度密切相…

软件测试技术那么多,我们该如何分辨?

经典软件测试技术分类&#xff1a; 测试技术是指顺利完成测试的一系列相关过程&#xff0c;有很多可能的分类方式&#xff0c;表2-1就是其中的一种。表中列出了流行的测试技术&#xff0c;也按照上面的讨论对其进行分类&#xff1a;手工测试、自动测试、静态测试、动态测试、功…

今年SMETA审核费用即将涨价

【今年SMETA审核费用即将涨价】 SMETA全称&#xff08; Sedex Members Ethical Trade Audit &#xff09;&#xff0c;即Sedex会员社会道德贸易审核&#xff0c;它是Sedex发起的一种负责任的供应链审计方法/项目。 Sedex是一个全球性的责任商业平台&#xff0c;SMETA是审核方法…

手推FlinkML2.2(三)

SQLTransformer&#xff08;SQL转换器&#xff09;是一种数据预处理方法&#xff0c;允许您使用SQL语句对数据进行转换和操作。SQL转换器通常用于数据清洗、特征工程和数据聚合等任务&#xff0c;以提高数据分析和机器学习模型的性能。它可以与各种数据处理和存储系统&#xff…

本地搭建属于自己的ChatGPT:基于PyTorch+ChatGLM-6b+Streamlit+QDrant+DuckDuckGo

本地部署chatglm及缓解时效性问题的思路&#xff1a; 模型使用chatglm-6b 4bit&#xff0c;推理使用hugging face&#xff0c;前端应用使用streamlit或者gradio。 微调对显存要求较高&#xff0c;还没试验。可以结合LoRA进行微调。 缓解时效性问题&#xff1a;通过本地数据库…

你的车有通风座椅吗?新款奔驰S400升级原厂主副驾座椅通风

大家好&#xff0c;我是奔之升小志&#xff08;bzs878&#xff09;&#xff0c;专注名车原厂升级&#xff0c;欢迎戳戳右上角“”号关注一下&#xff0c;持续为您带来精彩改装案例。 座椅通风有什么用&#xff1f;能改善身体与座椅接触面空气流通&#xff0c;达到不出汗的效果…

选择美国虚拟主机需注意的安全问题

在选择美国虚拟主机时&#xff0c;安全性应该是您首要关注的问题。虚拟主机通常是网站托管的最便宜和最方便的方式之一&#xff0c;但也存在安全问题。在本文中&#xff0c;我们将讨论一些您应该注意的安全问题&#xff0c;并提供一些解决方案来保护您的网站。 一、了解虚拟主机…

C++(继承(上))

目录 &#xff1a; 1.引出继承的概念 2.继承的关系和方式 3.继承中的作用域 ------------------------------------------------------------------------------------------------------------------------------ 1.引出继承的概念 这些学生、老师、后勤都具有相同的特征&…

elementUI-el-table组件使用总结

一、背景 vue2项目中用到el-table这个组件&#xff0c;但基础的功能不够用&#xff0c;所以需要自定义 二、表头自定义 比如要让表头展现出下面的形式&#xff1a; 只需使用 slot"header" slot-scope"scope" 对插槽进行定义&#xff0c;并绑定变量 <…

CPU Cache:访问存储速度是如何大幅提升的?

我们了解到不同的物理器件&#xff0c;它们的访问速度是不一样的&#xff1a;速度快的往往代价高、容量小&#xff1b;代价低且容量大的&#xff0c;速度通常比较慢。为了充分发挥各种器件的优点&#xff0c;计算机存储数据的物理器件不会只选择一种&#xff0c;而是以 CPU 为核…

java的validation框架(参数校验)

一.bean validation和hibernate validator参数校验常用约束注解&#xff1a; 空值校验类&#xff1a;Null&#xff0c;NotNull&#xff0c;NotEmpty&#xff0c;NotBlank等 范围校验类&#xff1a;Min&#xff0c;Size&#xff0c;Digits&#xff0c;Future&#xff0c;Negati…

微信小程序自定义搜索标题栏

一&#xff1a;需求 把微信小程序标题栏处变成搜索栏。自定义返回上级页面。 二&#xff1a;需求分析 首先要把小程序标题栏设置为可自定义。然后计算原标题栏的高度组成结构。根据计算高度设置搜索框和返回按钮的布局。最后进行代码功能实现。 三&#xff1a;功能实现 1&…

4月19号软件更新资讯合集....

JavaWeb 微服务前后端分离 EurekaEleVue 版 v1.5.0 发布 v1.5.0 更新如下&#xff1a; 1、解决 token 过期无法跳转至登录页的问题&#xff1b; 2、授权服务进行重构与优化&#xff1b; 一款 Java 语言基于 SpringCloud、SpringSecurity、OAuth2、Eureka、Vue、ElementUI、…

Go Fuzzing:发现你未曾发现的漏洞

文章目录 Fuzzing(模糊测试)要求示例模拟crash 总结参考资料 Fuzzing(模糊测试) go fuzz文档 对于软件开发者而言&#xff0c;一项重要的任务就是确保程序的安全性。而其中一种风险就是软件中可能存在的漏洞。传统的测试方法往往需要耗费大量的时间和人力&#xff0c;而使用F…