android设备树

编程 阿里云知识 1个月前 (04-18) 58次浏览 扫描二维码

设备树(Device Tree)是一种描述硬件的数据结构,可以把嵌入式系统资源抽象成一颗树形结构,可以直观查看系统资源分布。内核可以识别这棵树,并根据它展开出Linux内核的platfrom_device等。

设备树是一种简单的节点和属性的树形结构。属性是键值对,而节点可能包括属性和子节点。画一颗电路板上CPU、总线、设备组成的树,内核根据这棵树展开出platform_device、i2c_client、spi_device等设备,并根据节点注册相关设备。

设备树由一系列node(节点)和property(属性)组成,节点本身可包含更多的子节点。属性是成对出现的name-value键值对。在device tree中主要描述如下信息:

  • CPU的数量及类别
  • 内存基地址和size
  • 总线和桥
  • 外设连接
  • 中断
  • GPIO
  • CLOCK

Device Tree在内核的作用类似于描述出PCB上的CPU、内存、总线、设备及IRQ GPIO等组成的tree结构。然后经由bootloader传递给内核,内核再根据此设备树解析出需要的i2c、spi等设备,然后将内存、IRQ、GPIO等资源绑定到相应的设备。

当前的device tree主要应用于ARM、X86、Microblaze、PowerPC等架构中并向其他的平台进行扩展,以便在基于kernel架构下完成平台设备描述的统一化,所有的设备在平台上都以设备树的形式进行注册,而系统可以通过设备树的解析来完成相关设备的查找和。

设备树的规范可以参照 Source)就是我们经常修改的*.dts和*.dtsi文件。DTB(DeviceTree Blob)是由DTS编译成的二进制文件,用于嵌入式系统中。

设备树改变了原来用hardcode方式将HW配置信息嵌入到内核代码的方法,消除了arch/arm下大量的冗余编码。使得各个厂商可以更专注于driver开发,开发流程遵从mainline kernel的规范。

喜欢 (0)
阿里云最新优惠活动,点击查看
腾讯云最新优惠活动,点击查看
腾讯云香港及海外免备案服务器优惠活动,点击查看
华为云服务器本周优惠活动,点击查看