FDT设备树(dts)和CCF框架

本文介绍了FDT(Flattened Device Tree)设备树在ARM Linux中的应用,强调其作为硬件描述数据结构的角色,减少驱动代码与硬件信息的耦合。设备树包括CPU、内存、总线、外设等信息,并通过dts文件编译成dtb供uboot和kernel使用。此外,文章还探讨了CCF(Common Clock Framework)的引入,旨在统一不同SoC的时钟API,提供时钟提供商和消费者接口,涵盖时钟振荡器、锁相环、选择器、分频器和门电路等组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设备树

在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data。 社区必须改变这种局面,于是PowerPC等其他体系架构下已经使用的Flattened Device Tree(FDT)进入ARM社区的视野。
Device Tree是一种描述硬件的数据结构,它起源于OpenFirmware(OF)。它的出现可以实现驱动代码与设备的硬件信息相互的隔离,减少了代码中的耦合性。在此之前,一些与硬件设备相关的具体信息都要写在驱动代码中,如果外设发生相应的变化,那么驱动代码就需要改动。但是在引入了设备树之后,这种尴尬的情况找到了解决的办法,通过设备树对硬件信息的抽象,驱动代码只要负责处理逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化而没有驱动逻辑的变化,开发者只需要修改设备树文件信息,不需要改写驱动代码。Device Tree 可描写的硬件数据有:

  • CPU的数量和类别
  • 内存基地址和大小
  • 总线和桥
  • 外设链接
  • 中断控制器和中断使用情况
  • GPIO控制器和GPIO使用情况

Device Tree文件的格式是dts,他是人能看懂的格式,但是uboot和kernel看不懂,他们会把dts问件编译成dtb文件,通过dtc编译工具,linux源码scripts/dtc下包含dtc的源码,也可以选

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值