Linux学习之设备树(DeviceTree)(一)

本文介绍了Linux驱动开发中的设备树概念,它是从Linux内核3.x版本开始引入的功能,用于描述系统硬件配置。设备树包括设备节点,如IIC、GPIO和SPI控制器等,以及它们连接的设备。DTS是设备树源文件,DTB是编译后的二进制文件,DTC是用于转换两者之间的工具。设备树语法支持头文件包含,并通过键值对描述设备节点属性。设备树在理解SoC支持的外设和配置板级信息方面起着关键作用。
摘要由CSDN通过智能技术生成

和笔者新人,正在跟着正点原子的驱动指南自学Linux驱动开发。

一、什么是设备树

设备树,在Linux内核3.x版本以后,新增了支持设备树的功能。那么设备树到底是什么呢?

 从图上可以看到, 树的主干就是系统总线, IIC 控制器、 GPIO 控制器、 SPI 控制器等都是接到系统主线上的分支。IIC 控制器有分为 IIC1 和 IIC2 两种,其中 IIC1 上接了 FT5206 和 AT24C02这两个 IIC 设备, IIC2 上只接了 MPU6050 这个设备。

所以,不难发现,通过设备树就可以了解到当前SOC上所支持哪些外设;设备树可以来面熟板子上的设备信息。

二、DTS、DTB、DTC

在进行开发时总能看到一些以xxxx.dts和xxxxx.dtb为后缀的文件。

DTS:(Device Tree Source)表示当前文件是设备树的源文件

DTB:表示当前文件是由dts文件通过dtc工具编译而成的设备树文件的二进制文件。

DTC: 将.dts 编译为.dtb的工具,DTC 工具源码在 Linux 内核的 scripts/dtc 目录下,
scripts/dtc/Makefile
 

在工具中可能会需要将dtb和dts文件进行反编译,指令为:

dtbf反编译生成dts:

dtc -I dtb -O dts -o xxxxx.dts xxxx.dtb

dtc -I fs -O dts /proc/device-tree/ > xxxxx.dts

dts编译生成dtb:

dtc -I dts -O dtb -o xxxxxx.dtb  xxxxx.dts 

三、设备树的语法

1,支持头文件包含

和 C 语言一样,设备树也支持头文件,设备树的头文件扩展名为.dtsi
如下例子,既可以包含.h文件,dts文件。

我们在编写设备树头文件的时候最好选择.dtsi 后缀。

#include "imx6ull-14x14-evk.dts"
#include <dt-bindings/gpio/gpio.h>
#include "skeleton.dtsi"

一般.dtsi 文件用于描述 SOC 的内部外设信息,比如 CPU 架构、主频、外设寄存器地址范围,比如 UART、 IIC 等等。

2.设备节点

设备树是采用树形结构来描述板子上的设备信息的文件,每个设备都是一个节点,叫做设备节点,每个节点都通过一些属性信息来描述节点信息,属性就是键值对。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值