linux驱动:6ull(4)初看设备树文件

目录

设备树存放路径

 编译dts方法

 属性

添加节点例子

在已经添加的节点上外加属性例子 

linux内核匹配设备步骤


结合下面这个文章看

linux驱动:(16)在设备树添加自定义节点_linux设备树自定义字段-CSDN博客

设备树存放路径

  • 在linux源码中的 arch/arm/boot/dts 目录底下

 编译dts方法

  • 编译所有的dts:make dtbs
  • 编译指定的dts:make xxx.dtb

 属性

  • compatible 属性
    • 用于将设备和驱动绑定起来,一个字符串列表
  • model 属性
    • 描述设备模块信息,一个字符串
  • status 属性
    • 设备的 状态信息,一个字符串
    • “okay”:表明设备是可操作的
    • “disabled”:表明当前是不可操作的
    • “fail”:表明设备不可操作
    • “fail-sss”:表明设备不可操作并检测到错误内容
  • #address-cells 和#size-cells 属性
    • 可以用在任 何拥有子节点的设备中,用于描述子节点的地址信息
    • #address-cells 属性值决定了子节点 reg 属 性中地址信息所占用的字长(32 位)
    • #size-cells 属性值决定了子节点 reg 属性中长度信息所占的字长(32 位)
    • 都是无符号 32 位整形
  • reg 属性
    • 用于描 述设备地址空间资源信息,一般是(address,length)对
    • reg = <address1 length1 address2 length2 address3 length3……>
      • 每个“address length”组合表示一个地址范围
      • address 是起始地址,length 是地址长 度
      • #address-cells 表明 address 这个数据所占用的字长
      • #size-cells 表明 length 这个数据所占用 的字长
      • 也就是说reg受#address-cells 和#size-cells 属性影响
  • ranges 属性
    • 一个地址映射/转换表
    • 每个项目由子地址、父地址和地址空间长度 这三部分组成
    • (child-bus-address,parent-bus-address,length)
      • child-bus-address:子总线地址空间的物理地址,由父节点的#address-cells 确定此物理地址 所占用的字长
      • parent-bus-address:父总线地址空间的物理地址,同样由父节点的#address-cells 确定此物 理地址所占用的字长
      • length:子地址空间的长度,由父节点的#size-cells 确定此地址长度所占用的字长
    • 如果 ranges 属性值为空值,说明子地址空间和父地址空间完全相同,不需要进行地址转换
  • name 属性
    • 用于记录节点名字,一个字符串
  • device_type 属性
    • 只能用于 cpu 节点或者 memory 节点,描述设备的 FCode,一个字符串

添加节点例子

/{test1:test{ //别名为test1,节点名称为testcompatible = "test";//匹配的名字#address-cells = <1>;#size-cells = <1>;reg = <0x20ac000 0x0000004>;//寄存器地址};
};

在已经添加的节点上外加属性例子 

&test1{compatible = "test1";//匹配的名字status = "okay";
};

linux内核匹配设备步骤

  • 要使用DT_MACHINE_START 宏,定义在文件 arch/arm/include/asm/mach/arch.h 里面
  • 打开 arch/arm/xxx/xxx.c xxx为自己的芯片和板子查找上面的宏
  • 可以看到machine_desc 结构体中有个.dt_compat 成员变量,此成员保存着本设备兼容属性
  • 只要某个设备 ( 板子 ) 根节点“ / ”的 compatible 属性值与 imx6ul_dt_compat 表中的任何一个值相等,那么就表示 Linux 内核支持此设备
  • 具体代码匹配步骤为
    • start_kernel()----setup_arch()---setup_machine_fdt()---of_flat_dt_match_machine()
      • setup_machine_fdt 函数来获取匹配的 machine_desc,参数是dtb文件首地址,返回值就是最匹配的machine_desc
      • of_flat_dt_match_machine 来获取匹配的 machine_desc,参数 mdesc_best 是默认的 machine_desc,参数 arch_get_next_mach 是个函数,用设备树根节点的 compatible 属性值和 Linux 内核中 machine_desc 下.dt_compat 的值比较,看看那个相等,arch_get_next_mach 函数的工作就是获取 Linux 内核中 下一个 machine_desc 结构体

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

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

相关文章

【物联网技术与应用】实验15:电位器传感器实验

实验15 电位器传感器实验 【实验介绍】 电位器可以帮助控制Arduino板上的LED闪烁的时间间隔。 【实验组件】 ● Arduino Uno主板* 1 ● 电位器模块* 1 ● USB电缆*1 ● 面包板* 1 ● 9V方型电池* 1 ● 跳线若干 【实验原理】 模拟电位器是模拟电子元件&#xff0c;模…

【YOLO】(基础篇一)YOLO介绍

YOLO YOLO&#xff08;You Only Look Once&#xff09;是一种用于实时物体检测的算法&#xff0c;由Joseph Redmon等人提出。它能够同时进行物体分类和定位&#xff0c;并且因其速度和效率而广受赞誉。 工作原理 假设我们要对这张猫的图片完成目标检测&#xff0c;需要框选出…

K8S 黑魔法之如何从 Pod 拿到节点的命令行

搞 K8S 运维的时候&#xff0c;偶尔会遇到一个难题&#xff0c;定位到问题出在某个节点上&#xff0c;而由于权限审批&#xff0c;错误配置等等各种原因&#xff0c;没有办法拿到节点的 SSH 权限&#xff0c;无法进入节点命令行进一步排障。 这个时候&#xff0c;就可以用这个…

Linux-----进程处理(文件IO资源使用)

下面代码是通过父进程和子进程对同一个文件IO资源进行操作&#xff0c;父进程和子进程都对这个进程进行写入操作&#xff0c;我们都知道这两个进程实际上是并发的&#xff0c;所以需要一个同步机制来去操作同一个资源&#xff08;后面再深入去说明同步的api&#xff0c;这里使用…

golang标准库SSH操作示例

文章目录 前言一、了解SSH二、重要知识点1.安装ssh库2.ssh库重要知识牢记 三、模拟连接远程服务器并执行命令四、SSH与os/exec标准库下执行命令的几种方式对比五、SSH库下三种执行命令方式演示5.1. session.CombinedOutput()示例5.2. session.Run()示例5.3. session.Start()、s…

Pion WebRTC 项目教程

Pion WebRTC 项目教程 webrtc Pure Go implementation of the WebRTC API [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/we/webrtc 1. 项目目录结构及介绍 Pion WebRTC 项目的目录结构如下&#xff1a; pion/webrtc ├── api ├── examples ├── inter…

替代传统FTP传输,镭速大数据传输系统实现安全高效数据流转!

信息技术的快速进步让大数据成为了企业决策的关键支撑&#xff0c;但同时也带来了巨大的挑战。企业在运营过程中产生的数据量急剧增加&#xff0c;这对数据传输的速度、安全性和效率提出了更高的要求。然而&#xff0c;传统的FTP传输方式在处理大规模数据时显得力不从心&#x…

Java操作Xml

一、数据准备 1、文件头实体类 package com.xiaobai.xmlpractice;import lombok.AllArgsConstructor; import lombok.Data;/*** Author 王天文* Date 2024/12/18 21:46* Description: xml头*/ AllArgsConstructor Data public class Head {private String desc;private Strin…

MyBatis如何处理延迟加载?

大家好&#xff0c;我是锋哥。今天分享关于【MyBatis如何处理延迟加载&#xff1f;】面试题。希望对大家有帮助&#xff1b; MyBatis如何处理延迟加载&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MyBatis 支持 延迟加载&#xff08;Lazy Loading&am…

Matlab环形柱状图

数据准备&#xff1a; 名称 数值 Aa 21 Bb 23 Cc 35 Dd 47 保存为Excel文件后&#xff1a; % Load data from Excel file filename data.xlsx; % Ensure the file is in the current folder or provide full path dataTable readtable(filena…

论文研读:AnimateDiff—通过微调SD,用图片生成动画

1.概述 AnimateDiff 设计了3个模块来微调通用的文生图Stable Diffusion预训练模型, 以较低的消耗实现图片到动画生成。 论文名&#xff1a;AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning 三大模块&#xff1a; 视频域适应…

洛谷 P1014:Cantor 表

【题目来源】https://www.luogu.com.cn/problem/P1014https://www.acwing.com/problem/content/5510/【题目描述】 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。 他是用下面这一张表来证明这一命题的&#xff1a; 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 …

【网络安全零基础入门】PHP环境搭建、安装Apache、安装与配置MySQL(非常详细)零基础入门到精通,收藏这一篇就够(01)_php安装配置教程

这是大白给粉丝朋友准备的网络安全零基础入门第八章PHP入门的知识章节里的环境搭建。 喜欢的朋友们&#xff0c;记得给大白点赞支持和收藏一下&#xff0c;关注我&#xff0c;学习黑客技术。 一、php简介 php定义&#xff1a;一种服务器端的 HTML脚本/编程语言&#xff0c;是…

ssh 完全命令行 登录服务器 , 无需交互的方法

在写脚本的时候,ssh到⼀台客户机执⾏命令的时候,如果客户机设置了密码,这时候,就会提⽰我们需要通过交互式的⽅式输⼊密码。当我们不想执⾏这⼀步操作的时候,我们可以在ssh的同时带上密码,不⽤我们⼿动输⼊。 先安装⼀个软件包 yum install -y sshpass 只需要在ssh命令的…

RBTree(红黑树)

目录 红黑树的概念 红黑树的性质 红黑树节点的定义 红黑树的插入 1. 按照二叉搜索的树规则插入新节点 2. 检测新节点插入后&#xff0c;红黑树的性质是否造到破坏 红黑树的检测 红黑树的删除 红黑树和AVL树的比较 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&…

JS 三种添加元素的方式、区别( write、createElement、innerHTML )

文章目录 1. 区别结论2. write 不同场合的效果3. createElement 和 innerHTML 耗时对比 1. 区别结论 方式说明document.write不建议使用, 使用时要小心, 不同场合, 效果不同document.createElement添加少量元素时建议使用, 结构清晰易读innerHTML添加大量元素时建议使用 2. wr…

【gulp】gulp 的基本使用

gulp 是一个基于node的自动化打包构建工具&#xff0c;前端开发者可以使用它来处理常见任务&#xff1a; 创建项目 进入项目 npm init -ynpm i gulp -g &#xff08;使用命令 gulp&#xff09;npm i gulp -D # 开发依赖&#xff08;前端工具都是开发依赖 本地安装 代…

300多种复古手工裁剪拼贴艺术时尚字母、数字、符号海报封面Vlog视频MOV+PNG素材

300复古时尚大小写字母、数字、符号拼贴海报封面平面设计Vlog视频标题动画 Overlay - Cut-Out Letters Animations Pack - Animated Letters, Numbers, and Symbols 使用 Cut-Out Letters Animations Pack 提升您的内容&#xff01;包含 300多个高品质动画资源&#xff0c;包括…

SpringCloudAlibaba技术栈-Dubbo

1、什么是Dubbo? 简单来说&#xff0c;dubbo就像是个看不见的手&#xff0c;负责专门从注册中心nacos调用注册到nacos上面的服务的&#xff0c;因为在微服务环境下不同的功能模块可能在不同的服务器上。dubbo调用服务就像是在调用本地的服务一样。 分布式调用与高并发处理 Du…

ES7+ React/Redux/GraphQL/React-Native snippets 使用指南

VS Code React Snippets 使用指南 目录 简介基础方法React 相关React Native 相关Redux 相关PropTypes 相关控制台相关React 组件相关 简介 ES7 React/Redux/GraphQL/React-Native snippets 是一个用于 VS Code 的代码片段插件&#xff0c;它提供了大量用于 React 开发的代…