LinuxBSP实战课(设备树篇):设备树的基本用法

科技布道师 2024-03-05 16:23:01

DeviceTree 的结构

DeviceTree的文件引用

DeviceTree 中 dts、 dtc 和 dtb 的关系

DeviceTree 的语法

节点格式

属性格式

一些标准属性

reg 属性

常用的节点

设备树是一种描述硬件的数据结构,它起源于OpenFirmware(OF)。在Linux 2.6中, ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx中,采用设备树后,许多硬件的细节可以直接通过它传递给Linux,而不再需要在内核中进行大量的冗余编码。

DeviceTree 的结构

先抛开语法本身,我们先用框图的形式理解DeviceTree表达的是什么。如下图是一个示例,描述了一块板子,上面一个中断控制器gic,定时器timer,还有一颗soc、soc下面通过三个aips系统总线连着不同的设备,比如edma,system_counter,wdog,iomuxc,clk,src,以及高速设备网卡控制器fec,camera,显示控制器lcdif等。

首先,DeviceTree是一个树状结构。那么,树状结构的层次结构是由什么决定的?是什么决定了节点之间的父子关系?

答案是:首先看总线的主从关系、其次看硬件的包含关系。

具体来说,就是:

SoC的所有外设都在ARM地址空间内可被寻址(AHB总线和APB总线,这里用aips表示),因此edma, wdog, iomux, clk等外设节点都是SoC的子节点;lcdif等显示设备没有基于总线,直接挂在SoC下面,它只是便于人类面向对象编程的。因此,这里的lcdif就根据硬件的包含关系,直接挂在SoC下面即可;DeviceTree的文件引用

.dts可以引用其他的.dts或.dtsi。这样板卡级dts就可以引用厂商写好的芯片级dtsi,从而减少编写dts的工作量。

0 阅读:0

科技布道师

简介:感谢大家的关注