linux设备树

linux驱动开发人员必须要掌握设备树,因为新版本的linux中,ARM相关的驱动全部采用设备树(也有支持老式驱动的,比较少)。

  • 什么是设备树?
    设备树(device tree)就是"设备"和"树",描述设备树的文件叫做DTS(device tree source), 这个DTS文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如: CPU数量,内存地址,IIC和SPI接口上接了哪些设备等等。
    • 设备树的主干就是系统总线,IIC、 SPI、GPIO等控制器都是借到系统主线上的分支,其中IIC控制器又分为了IIC1和IIC2两种,其中IIC1又接了FT5206和AT24C02这两个IIC设备,IIC2上接了MPU6050这个设备。
  • DTS设备树的由来:
    linux(3.x版本)以前的内核中ARM架构并没有采用设备树,没采用设备树之前的linux内核的源码中有大量的arch/arm/mach-xxx和arch/arm/plat-xxx文件夹,这些文件夹里面的文件就是对应平台下的板级信息。这样当ARM架构的芯片增加时,会导致linux内核下的版级信息文件成指数级增长。这些板级信息文件都是些.c和.h文件,都被硬编码进入到linux内核中,导致linux内核“虚胖”。从此ARM社区就引入PowerPC等架构已经采用的设备树(Flattened Device Tree),将这些描述板级硬件信息的内容从linux中分离出来,用一个专属的文件格式来描述。这个专属的文件就叫做设备树,文件的扩展名为.dts。一个SOC可以做出不同的板子,这些板子肯定有共同的信息,将这些共同的信息提取出来作为一个通用的文件,其他的.dts文件直接引用这个通用的文件即可,这个通用的文件就是.dtsi文件,类似于C语言中的头文件。总的来说,.dts描述设备的板级信息(开发板中有哪些IIC,SPI设备等),.dtsi描述SOC信息(也就是SOC有几个CPU,主频是多少,各个外设控制器信息等)。设备树的由来:简言之就是linux内核中的ARM架构下太多冗余的垃圾板级信息,导致linux震怒,故ARM社区引入设备树。
  • DTS语法: 我们大部分时候都是在SOC厂商提供的.dts文件上进行修改,不会从头到尾重写一个.dts文件。但DTS文件的语法还是要懂的,是一种ASCII文本文件,不管是阅读还是修改都是很方面的。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值