设备树_基础知识

news2024/11/20 12:33:00

设备树

格式

/dts-v1/;                                   // 版本号
/ {                                         // `/`表示根节点
    string-property = "xxx";                // string 类型
    string-list-property = "xxx", "yyy";    // string list 类型
    u32-property = <a>, ;                   // u32类型,默认十进制
    u32-property = /bits/ 8 <a>, ;          // u32类型,默认十进制
    u32-array-property = <a,b,c,d>;         // 数组类型,
    byte-property = [a];                    // 数组类型, 默认十六进制
    byte-array-property = [a,b,c,d];        // 数组类型
    a-property;                             // 可以没有值只有名, 表示bool值
    a-property = <@labela>;                 // 取标签地址
    child-node1 {
        ...                                 // 节点中可以什么都没有
    };
    labela : child-node2 {
        ...
    };

};

文件含义

文件含义
.dts设备树的文件格式格式为, 一般为最终某个板子的设备树
.dtsi设备树的头文件格式, 通常被被人依赖的设备树
.h一般只使用里面的宏定义
.dtb设备树的二进制文件, 打包到resource里面

请添加图片描述


结构

层层包含关系, 减少了冗余代码, 增加了可复用代码.

请添加图片描述


写法含义
<8>一个值, <> 表示u32, 十进制数
<8,7,6,8,4>一个数组
"memory"striong
"PowerPC,970"string list

node 节点

[label:] node-name[@unit-address] {
   [properties definitions]
   [child nodes]
}
  • []为可选的

aliases节点

  • 定义一些别名
    aliases {
        serial3 = &uart_3;
    };

memory device 节点

  • 设备树文件的必备节点,它定义了系统物理内存的布局
memory@0 {
    device_type = "memory";
    reg = <0x30000000 0x4000000>;
};
device_type定义了该node的设备类型

属性定义 (只讲标准属性)

根node必须是 /

model指明了该设备属于哪个设备生产商的哪个model
interrupt-parent统一为下游设备定义interrupt-parent

compatible指明了用哪一个driver来驱动该设备
compatible = "aaa”, "bbb"首选aaa, 备选bbb

node-name@unit-address节点名字
注意如果节点包含reg 那么节点名字中必须不能包括@unit-address
unit-address和具体设备相关

reg该device node的地址信息
注意如果有它 那么节点名字中必须不能包括@unit-address

phandle节点标识,用于引用(不好用, 一般很少用)

修改节点属性

  • 通过标签的形式
&label {                // 必须是在节点外
    xxx = xxx;
};
  • 节点内单独写节点 ( 全路径写节点 )
/{
    ...
    node {                   // 被重写的节点
        ...
    };
    ...
};
  • 父节点有标签, 被改写的没有标签
&label {
    ...
    node {                   // 被重写的节点
        ...
    };
};

删除节点属性

&label {
   /delete-property/ xxx;   // 删除 xxx 属性
   /delete-node/ node;      // 删除 node 节点
};

编译和反编译

支持编译和反编译, 下载方式有以下三种

  • 安装工具(推荐) dtc (device-tree-compiler)
    sudo apt-get install device-tree-compiler

  • scripts/dtc 下面有编译的工具, 可以编译

  • 自己网上下载编译安装


编译 dts -> dtb

dtc -I dts -O dtb -o 目标名字.dtb 源文件.dts

预编译我的dtb

gcc -E -nostdinc -Ulinux -I./ -I./include -x assembler-with-cpp sun8iw11p1-OKT3_C.dts -o sun8iw11p1-OKT3_C.my.tmp

生成我的dtb

dtc -I dts -O dtb sun8iw11p1-OKT3_C.my.tmp -o sun8iw11p1-OKT3_C.my.dtb

反编译 dtb -> dts

dtc -I dtb -O dts -o 目标名字.dts 源文件.dtb

dtc -I dtb -O dts -o sun8iw11p1-OKT3_C.fan.yuanchang.dts sun8iw11p1-OKT3_C.dtb
dtc -I dtb -O dts -o sun8iw11p1-OKT3_C.fan.my.dts sun8iw11p1-OKT3_C.my.dtb

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

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

相关文章

Linux下的Framebuffer编程

文章目录前言一、LCD操作原理二、代码解析及编写程序的步骤0.定义各类参数1.打开LCD设备节点2.获取触摸屏数据3.mmap映射Framebuffer&#xff0c;在Framebuffer中写入数据三、LCD操作函数解析1.描点函数2.显示字符函数总结前言 本篇文章将会介绍Linux下的Framebuffer编程&…

html中的定位知识点如何使用

目录 系列文章目录 文章目录 前言 一、定位是什么&#xff1f;有什么用&#xff1f; 二、定位方式有哪些&#xff1f;怎么使用&#xff1f; 1、静态定位&#xff1a;就是默认的定位方式&#xff0c;意思就是没有定位; 2、相对定位&#xff1a; 3、绝对定位&…

PDF怎么转成Word?安利几个转换小技巧

平时我们工作学习的时候&#xff0c;经常要跟文件打交道&#xff0c;并且接触最多的文件形式就是PDF与Word两种文件格式&#xff0c;它们各有各的好处&#xff0c;PDF的保密性以及兼容性好&#xff0c;便于我们进行文件分享查阅&#xff0c;而Word就方便我们进行编辑。如果我们…

Ubuntu Server 22.04.1配置(配置root账号、设置固定IP、更改SSH端口、配置UFW、VM扩展磁盘后Ubuntu的扩容)

为了能快速的创建虚拟机&#xff0c;通过VM创建了一个2核CPU、4G内存、40G硬盘&#xff0c;安装Ubuntu Server 22.04.1的虚拟机&#xff0c;以便在需要的时候随时克隆一个新的虚拟机出来。 在新的虚拟机克隆出来后可能会调整硬件的配置&#xff0c;例如将40G硬盘扩展到50G&…

Python编程 字典创建

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.字典 1.字典介绍 &#xff08;了解&#xff09; 2.字典创建&#xff0…

艾美捷nickases内切酶活性检测及相关研究

艾美捷nickases内切酶组分&#xff1a; NLS-Cas9(D10A) Nickase(0.1 μg/μl) 500 μL 10Reaction Buffer 1 ml 艾美捷nickases内切酶切割活性检测&#xff1a; NLS-Cas9(D10A) Nickase(0.1 μg/μl) 500 μL 10Reaction Buffer 1 ml 经多次柱纯化&#xff0c;SDS-PAGE 胶检…

70. 爬楼梯(动态规划解法)

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&a…

【异常】com.alicp.jetcache.CacheException: refresh error

jetcache refresh error一、背景描述二、报错内容三、报错原因四、解决方案4.1 解决方案一&#xff0c;使用一级缓存4.2 解决方案二&#xff0c;开启写入权限一、背景描述 技术栈&#xff1a;Spring Boot(2.1.5.RELEASE) Spring Cloud Oopenfeign(2.1.1.RELEASE) jetCache(2.…

基于nodejs电商购物系统的设计与实现(论文+源码+ppt文档+视频录制)

资料下载地址&#xff1a;请点击》》》》 1 前言 2 1.1课题背景 2 1.2课题内容 3 2 需求分析 4 2.1 功能需求 4 2.2 性能需求 5 系统安全性 5 系统数据完整性 5 2.3 数据需求 6 2.4 运行环境需求 6 客户端配置 6 服务器配置 6 2.5 nodejs框架分析 6 3 系统设计 7 3.1 系统设计…

软件项目管理期中准备(自用,仅供参考)

考前拿到了样卷(#^.^#) 直接面向样卷备考 软件项目管理期中准备&#xff08;自用&#xff0c;仅供参考&#xff09;选择题计算题1.进度管理-关键路径法&#xff0c;时间压缩法2.进度管理-任务历时估计3.成本管理-COCOMO估算法4.项目的执行与控制-挣值分析法5.成本管理-专家估算…

数据库-----JDBC技术

JDBC概述 数据的持久化 持久化(persistence)&#xff1a;将内存中的数据保存到可永久保存的存储 设备中&#xff08;如磁盘&#xff09;。 持久化的主要应用是将内存中的数据存储在关系型数据库中&#xff0c;当 然也可以存储在磁盘文件、XML数据文件中。 什么是 JDBC 1、JDBC…

DIN EN ISO 4589-2塑料 用氧指数法测定燃烧行为 第2 部分:室温试验

ISO 4589-2 塑料-用氧指数法测定燃烧行为-第2部分:室温测试&#xff0d;标准名称&#xff1a; ISO 4589-2 塑料-用氧指数法测定燃烧行为-第2部分:室温测试 ISO 4589-2 Plastics-Determination of burning behaviour by oxygen index –Part 2: Ambient-temperature test ISO 4…

推荐10个不错的React开源项目

1&#xff0c;Kutt.it Kutt是一个现代的URL缩短器&#xff0c;支持自定义域&#xff0c;可以用来缩短网址、管理链接并查看点击率统计信息。Kutt支持自定义域名&#xff0c;设置链接密码和描述&#xff0c;缩短URL的私人统计信息&#xff0c;查看、编辑、删除和管理链接&#…

LPWA物联网通信

物联网LPWA是物联网中的无线通信技术之一。 根据物联网无线通信技术的覆盖距离&#xff0c;大致可分为两类&#xff1a;一类是短距离通信技术&#xff0c;包括蓝牙(蓝牙)&#xff1b;NFC,Zigbee、WIFI、NFC&#xff0c;主要用于室内智能家庭、消费电子等场景&#xff1b;另一种…

C++异常

21 C异常 21.1 什么时候会发生异常 1.打开一个不存在的文件 2.请求存储空间失败 3.数组越界等等 21.2 使用abort()函数 1.包含在cstdlib头文件中&#xff0c;包含在std命名空间中 2.当调用abort()函数时&#xff0c;会引发异常并中断程序(Visual Studio 2019)&#xff1b;…

【PlasticSCM Could Edition】新版本云托管浅试 (与踩一些坑)

【PlasticSCM Could Edition】新版本云托管浅试前言尝试对比前言 UnityHub 3.3.0-c7 中&#xff0c;下载了一个 2021LST 的版本&#xff0c;毕竟为了做毕设&#xff0c;用 2020LST 的感觉老了点… 然后新建了一个项目&#xff0c;勾选使用 版本控制 &#xff0c;但是报错 那先…

【附源码】计算机毕业设计JAVA药品管理系统

【附源码】计算机毕业设计JAVA药品管理系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA mybati…

STM32CubeMX学习笔记(48)——USB接口使用(MSC基于外部Flash模拟U盘)

一、USB简介 USB&#xff08;Universal Serial BUS&#xff09;通用串行总线&#xff0c;是一个外部总线标准&#xff0c;用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、…

HTTP —— HTTP 响应详解, 构造 HTTP 请求

JavaEE传送门JavaEE 【前端】JavaScript —— WebAPI HTTP —— HTTP 协议中的细节(超详细!!) 目录HTTP 响应详解认识 "状态码"状态码小结认识响应 "报头" headerContent-Type认识响应 "正文" body构造 HTTP 请求form 表单ajaxpostmanHTTP 响应…

API接口怎么使用(教你使用api接口获取数据)

API是应用程序的开发接口&#xff0c;在开发程序的时候&#xff0c;我们有些功能可能不需要从到到位去研发&#xff0c;我们可以拿现有的开发出来的功能模块来使用&#xff0c;而这个功能模块&#xff0c;就叫做库(libary)。比如说&#xff1a;要实现数据传输的安全&#xff0c…