[004-u-boot-Exynos4412] Clock Management Unit

来源:互联网 发布:类似算法谜题的书 编辑:程序博客网 时间:2024/06/06 09:22

0. 前言

本文以Exynos4412芯片为例,介绍了CMU(Clock Management Unit)。CMU通过控制PLL产生系统时钟,总线时钟和外设时钟。

1. 时钟域

Exynos4412包含5个时钟域,如图所示:

  • CMU_CPU:提供Cortex-A9 MPCore处理器,L2 cache控制器,and CoreSight(调试器)的时钟。
  • CMU_DMC:提供DRAM内存控制器,安全子系统和通用中断控制器的时钟。
  • CMU_LEFTBUS / CMU_RIGHTBUS:提供全局数据总线和全局外设总线的时钟,总线用于在DRAM和外设之间进行数据传输。
  • CMU_TOP:给所有剩余的模块提供时钟,如TV,LCD,CAM等。

2. 时钟源

外部时钟

  • XRTCXTI:提供RTC的时钟。
  • XXTI:外部时钟源,一般接12MHz~50MHz的晶振。当前的硬件未使用该时钟源。
  • XUSBXTI:外部时钟源,推荐为24MHz。当前的硬件使用该时钟源作为系统时钟。

内部时钟

  • APLL:主要给CPU_BLK提供时钟,也可以作为MPLL的补充。
  • MPLL:主要给DMC_CLK,LEFTBUS_CLK,RIGHTBUS_CLK和CMU_TOP提供时钟。
  • EPLL:主要给音频提供时钟。
  • VPLL:主要给视频提供时钟。
  • USB PHY:给USB提供30MHz~48 MHz时钟。
  • HDMI PHY:产生54MHz时钟。

时钟命名规则

  • FIN~Xpll~:pll的输入时钟。
  • FOUT~Xpll~:pll的输出时钟。
  • MOUT~Xpll~:pll经过MUX的输出时钟。
  • SCLK~Xpll~:PAD上的xpll时钟,可能经过了dividor,也可能就是MOUT~Xpll~。
  • DOUT~xxx~:dividor的输出时钟。

其中’X’为A/M/E/V

3. 时钟组件

PLL

功能:把低频率的输入时钟提高后输出。

设置步骤:
1. 设置PLL的 P、M、S值,这是根据频率用公式计算出来的(寄存器为 XPLL_CON0)
2. 设置PLL的其他控制参数
3. 使能PLL
4. 等待一段时间使PLL稳定
5. 设置MUX ,选择PLL所输出的时钟

MUX

功能:多路复用,从多个输入源中选择一个作为输出。时钟复用器的配置寄存器被定义为CLK_SRC_XXX。

  1. 灰色的时钟复用器表示一种无干扰的时钟复用器,也就是说在改变时钟选区时不受干扰。
    对该复用器需要在改变时钟时确保时钟源在工作。如果不能保证,这就表明了选择时钟的过程并没有完成,会导致未知的时钟输出状态。时钟复用器的状态寄存器被定义为CLK_MUX_STAT_XXX。

  2. 白色的时钟复用器表示有干扰的时钟复用器,也就是说在改变时钟源时,要遭受脉冲信号。
    对该复用器在改变时钟时可能有毛刺信号产生。因此建议在修改时钟复用器之前,先关闭这种复用器的输出功能。在完成选择的更换后,再重新使能复用的输出功能。时钟源屏蔽控制寄存器被定义为CLK_SRC_MASK_XXX。

divider

功能:时钟分频器,可以从其输入源来对时钟进行分频。时钟分频器的配置寄存器被定义为CLK_DIV_XXX。

4. 时钟配置

配置CMU_CPU

配置CMU_DMC

配置CMU_TOP

配置CMU_BUS

配置UART_BLK

配置FSYS_BLK

5. 代码

具体可参考:clock_init_exynos4412.c

原创粉丝点击