设备树基本概念

[DTS]设备树基本概念

原创: 杨永达  嵌入式软件开发交流 2月28日

 

前言

    最近在总结一些关于设备树相关的知识,对于做驱动这一块的人应该都会接触到。平常可能很多人移植驱动时也会去改dts文件,但是很多人都是按照模板改,或者网上找过来改,知其然不知其所以然。

 

什么是设备树

    在Linux3.x之前的内核源码中,存在大量对板级细节信息描述的代码。这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录。为了解决这个问题而引入设备树。

 官方对设备树的描述是,一种描述硬件资源的数据结构。它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立。

 设备树的主要优势:对于同一SOC的不同主板,只需更换设备树文件.dtb即可实现不同主板的无差异支持,而无需更换内核文件。

 

设备树组成

    设备树包含DTC(device tree compiler),DTS(device tree source和DTB(device tree blob)

 

DTS: dts文件是对Device Tree的描述,放置在内核的/arch/arm/boot/dts目录。一个*.dts文件对应一个ARM的machine。dts文件描述了一个板子的硬件资源。以前写在mach-xxx文件中的内容被转成了dts文件。

DTC: DTC为编译工具,它可以将.dts文件编译成.dtb文件。

DTB: DTC编译*.dts生成的二进制文件(.dtb),bootloader在引导内核时,会预先读取.dtb到内存,进而由内核解析。

 

设备树中还有一种文件 ------- dtsi文件,由于一个SOC可能有多个不同的电路板,而每个电路板拥有一个 .dts。这些dts势必会存在许多共同部分,为了减少代码的冗余,设备树将这些共同部分提炼保存在.dtsi文件中,供不同的dts共同使用。

 

Bootloader在设备树中的作用

     设备树文件在kernel源码中,难道是像驱动一样编译进内核吗?其实不是的,上面我们说了dts会最终编译成dtb文件。然后上电之后BootLoader就会将设备树在内存中的地址传给内核。然后内核去解析和读取对应的硬件资源。所以要支持设备树不仅仅需要内核支持,BootLoader也要支持。

 

 

这篇文章只是提一些基本概念,后面会再写几篇文章来讲解设备树相关的东西。

 

 

欢迎加入QQ群聊

如果你喜欢就请分享给你的朋友,感谢大家的支持

 

转载于:https://www.cnblogs.com/idyllcheung/p/11183753.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值