一:概述
1、时钟子系统
本章节所指的时钟是给SOC各个组件提供时钟的树状框架,而非内核使用的时钟。和其他模块一样,CLOCK也有框架,用以适配不同的平台。适配层之上是客户代码和接口,也就是各模块(如需要时钟信号的外设)的驱动。适配层之下是具体的SOC的时钟操作细节。
2、时钟树结构
可运行LINUX的主流处理器平台,都有非常复杂的时钟树(CLOCK TREE),由CLOCK相关的器件,以及这些器件输出的CLOCK组成。
3、相关器件
CLOCK相关的器件包括:用于生产CLOCK的有源振荡器(也称谐振荡器)或者无源振荡器(也称晶振);用于倍频的PLL(锁相环);用于分频的Divider;用于多路选择的MUX;用于CLOCK ENABLE控制的与门;使用CLOCK的硬件模块等等。
4、总体流程
主要内容包括:
- Enable/Disable Clock
- 设置Clock的频率
- 选择Clock的Parent
5、代码结构
CLOCK的软件框架由CLOCK的Device Tree(CLOCK的寄存器描述,CLOCK之间的树状关系等),Device driver的CLOCK配置和CLOCK API三部分构成。