Linux BSP实战课(clock 驱动篇):时钟子系统的实现

科技   2023-11-28 08:18   江苏  
  • Clock Provider

    • 数据结构

    • 注册方式

  • Clock Consumer

    • 获取 clock

    • 操作 clock

  • 总结

Clock 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。这些不同的clock设置,都需要从某个或某几个时钟源头而来,最终开枝散叶,形成一颗时钟树。可通过 cat /sys/kernel/debug/clk/clk_summary 查看这棵时钟树。

内核中用 CCF 框架来管理 clock,如下所示,右边是 clock 提供者,即 Clock Provider;中间是 CCF;左边是设备驱动的 clock 使用者,即 Clock Consumer。

Clock Provider

  • 点一般是 Oscillator(有源振荡器)或者 Crystal(无源振荡器)。
  • 节点有很多种,包括 PLL(锁相环,用于提升频率的),Divider(分频器,用于降频的),Mux(从多个clock path中选择一个),Gate(用来控制ON/OFF的)。
  • 点是使用 clock 做为输入的、有具体功能的 HW block。

根据 clock 的特点,clock framework 将 clock 分为 fixed rate、gate、devider、mux、fixed factor、composite 六类。

人人极客社区
工程师们自己的Linux底层技术社区,分享体系架构、内核、网络、安全和驱动。
 最新文章