EmbedFire i.MX 6ull开发板学习笔记(五)---设备树

2024-04-13 09:08

本文主要是介绍EmbedFire i.MX 6ull开发板学习笔记(五)---设备树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

EmbedFire i.MX 6ull开发板学习笔记(五)---设备树

  • 一、什么是设备树
  • 二、dts,dtsi,dtb和dtc
  • 三、基本语法

PS:讲解什么是设备树,设备树语法的文章,网上实在是太多了,讲得都比我好。我这里仅仅是做点笔记而已。

一、什么是设备树

为在一块板子上把Linux跑起来,需要对板子上的各种设备进行描述,比如:IIC控制器,SPI控制器,GPIO控制器等,编写相应的驱动代码。各种CPU型号,板子型号太多了,每个板子都要去编写的板级源码,造成Linux越来越“臃肿”,以前这些代码都在arch/arm/mach-xxx 和 arch/arm/plat-xxx目录下,存在大量的.c和.h源码。这些代码都会被编译进linux内核,但其实很多代码是没有用的,比如B板子上的某个LCD设备在我所用的A板子上是没有的,这就导致了linux内核的虚胖。Linux它爹linus在社区看见提交了大量这些无用代码,爆了粗口,很不高兴。所以社区参考PowerPC已采用的设备树(Flattened Device Tree)方式,把这些板级信息抽离出来,采用独立文件格式来描述,这就是设备树文件(.dts)。

二、dts,dtsi,dtb和dtc

dts:设备树文件,存放在arch//boot/dts目录,如 arch/arm/boot/dts/。
dtsi:设备树文文件,类似于.h文件,被dts文件引用,dts文件也可以引用.h文件。如imx6ull.dtsi文件里包含如下内容。


#include "imx6ul.dtsi"
#include "imx6ull-pinfunc.h"
#include "imx6ull-pinfunc-snvs.h"

dtsi文件一般描述CPU级的内置外设情况,如CPU,RAM,GPIO等,即对应同一CPU的不同板子它都是共用的。
dtb:dts编译后得到的二进制文件,Linux内核加载的就是它。
dtc:编译工具,由dtc.c、flattree.c、fstree.c等文件编译得到,编译过程在scripts/dtc/Makefile文件中可以查看。
单独编译设备树的命令:

make dtbs

三、基本语法

设备树(device-tree)既然叫树,它必然像树一样,属于树形结构,带有树干,枝干,枝叶。
树干:即系统总线。
枝干:即各种控制器(总线),如IIC控制器(总线),SPI控制器(总线)等。枝干下面还有子枝干,即:挂着各种控制器(总线)上的各种设备,如挂在IIC总线上的G-Sensor和TP。
枝叶:即各种设备的属性。

1、根节点采用反斜杠/表示,多个文件中,都可以有“/”,编译

这篇关于EmbedFire i.MX 6ull开发板学习笔记(五)---设备树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/899719

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为