历史上的今天
返回首页

历史上的今天

今天是:2024年12月13日(星期五)

正在发生

2021年12月13日 | exynos 4412 时钟配置

2021-12-13 来源:eefocus

—————————————————————————————--------

本文解决的问题:

  1、宏观上几个大模块的时钟配置顺序。

  2、小模块的时钟选择、分频和一般的配置顺序。

  3、对小模块来说,官方手册推荐的时钟源选择问题。

  4、本文只以手册的“ 推荐配置”进行说明,“自由玩法”不保证稳定性。

—————————————————————————————--------

多路选择器选择原则:

  1、尽量保持默认配置不动。

  2、尽量选择前端频率最高的源。

  3、其它手册要求的特殊情况。

—————————————————————————————--------

几个符号:


左边深色的:


无抖动多路选择器,无抖动意味着在多路选择切换的瞬间,下游时钟就可以稳定下来。需要注意是在切换时要保证上游时钟已经存在并稳定,不然下游时钟状态不确定。


右边浅色的:

有抖动多路选择器,意味着多路选择切换后,要经历一段时间的不稳定时间,但是有稳定后有相应寄存器标志位标示下游时钟已经稳定,这类指示寄存器器一般以 CLK_MUX_STAT开头。

—————————————————————————————--------

全局约束条件:

  1、无抖动多路选择器的时钟源需要存在并且稳定。

  2、当某个PLL被设置为关闭状态,是不可以使用它的输出信号的。

—————————————————————————————--------

晶振说明:

由于一般USB IP核需要直接使用高精度时钟,所以在XUSBXTI引脚上接24M晶振,XXTI引脚就不需要接了。手册上说由于iROM代码是根据24M晶振频率设计的,所以24M的选择没什么好说的。

—————————————————————————————--------

一、时钟之源PLL配置

原因:根据全局约束条件2,如果PLL关闭那么不可以使用它的输出,再根据全局约束条件1,多路选择器此时只能选择外部时钟!而24M的时钟直接作为系统的时钟显然是不合适的!


4412有4个PLL: APLL, MPLL, EPLL, and VPLL。推荐使用24M外部晶振作为它们的时钟源。


理论上讲,4个PLL均可以在22 ~ 1400MHz之间自由设置,但是手册强烈推荐的频率范围为:

—————————————————————————————--------

  APLL & MPLL:200 ~ 1400MHz

  EPLL:90 ~ 416MHz

  VPLL:100 ~ 440MHz

—————————————————————————————--------

1.0 设置PLL_LOCKTIME

原因:参考  https://bbs.eeworld.com.cn/thread-417491-1-1.html


PLL频率从小变到指定频率需要一段时间(图中标红框的部分虽然不是PLL实际波形但可以参考着理解),当PLL频率在变化的时候,比如由复位后的初始的400MHz升到1000MHz, 这时,首先把CPU的频率锁定,因这此时CPU的频率是变化的,频率变化,CPU的状态就无法确定,所以,此时用 PLL_LOCKTIME 将CPU频率锁定一段时间,直到频率输出稳定为止。芯片手册上显示APLL最大的锁定时间为100us(Table 60 -9),如果外部晶振是24MHz,100us换算成tick就是2400个tick,所以

  APLL_LOCK(Address:0x1004_4000)寄存器该写入0x960

  MPLL_LOCK(Address:0x1004_0008)寄存器该写入0x190

  EPLL_LOCK(Address:0x1003_C010)寄存器该写入0xBB8

  VPLL_LOCK(Address:0x1003_C020)寄存器该写入0x190

1.1 APLL & MPLL的倍频值:

设定对应寄存器的 P、M、S 三个值,不同的搭配最终频率不同,无须自己计算,系统推荐的搭配如下:

1.2 EPLL的倍频值:

设定对应寄存器的 P、M、S、K 四个值,不同的搭配最终频率不同,无须自己计算,系统推荐的搭配如下:

1.3 VPLL的倍频值

设定对应寄存器的 P、M、S、K 四个值,不同的搭配最终频率不同,无须自己计算,系统推荐的搭配如下:

1.4 等待PLL稳定

如果PLL输出稳定了,那么PLL_CON0的Bit[29]会由0变1。

查询用汇编实现,以APLL为例:

/*———————————————————————*/

wait_pll_lock:

    ldr r1, [r0, r2]

    tst r1, #(1<<29)

    beq wait_pll_lock

    mov pc, lr

 

ldr r0, =CMU_BASE /* 0x10030000 */

ldr r2, =APLL_CON0_OFFSET /* 0x14100 */

bl wait_pll_lock

/*———————————————————————*/


二、主要模块的初始化顺序

虽然官方文档中并没有强制按下面的顺序初始化,但是按照逻辑来讲,是应该使用这个顺序的。

  locktime -> pll -> mux -> div

  cpi -> dmc -> top -> leftbus -> rightbus 

上个直观点的图:


三、上游多路选择器的配置

上游多路选择器决定下游模块的时钟源,CMU_CPU有4个MUX,CMU_DMC有四个MUX,CMU_TOP有14个MUX,CMU_LEFTBUS有2个MUX,CMU_RIGHTBUS有2个MUX。


当然下游还有其它非常多的MUX,先搁置一下暂且不说。


3.1 CMU_CPU MUXs配置

CMU_CPU有4个MUX,配置寄存器CLK_SRC_CPU,基地址0x1004_4200。配置完成后,最靠近PLL的两个MUX均切换时钟源至PLL。


3.2 CMU_DMC MUXs配置

CMU_DMC有8个MUX,配置寄存器CLK_SRC_DMC,基地址0x1004_0200。配置完成后,最靠近PLL的一个MUX切换时钟源至PLL。


3.3 CMU_TOP MUXs配置

CMU_TOP有13个MUX,配置寄存器CLK_SRC_TOP0 CLK_SRC_TOP1,基地址0x1003_C210 0x1003_C214。


3.4 CMU_LEFTBUS & CMU_RIGHTBUS MUXs配置

CMU_LEFTBUS & CMU_LEFTBUS各有2个MUX,配置寄存器CLK_SRC_LEFTBUS CLK_SRC_RIGHTBUS,基地址0x1003_4200 0x1003_8200。

四、分频器的配置

分频器的位置一般在MUX之后,通常是一个MUX,但如果需要旁路时钟输出,可能需要两个或更多个分频器级连来获取最终的频率。


分频器设置的前提条件(手册并无强制要求,根据各种约束条件获得,有疑问留言讨论):

  1、如果分频器上级还有分频器,请首先保证上级分频器频率已稳定,一直确认到上级是MUX为止。

  2、确认上级级连的一个或多个MUX已使能且输出稳定,一直确认到上级是APLL MPLL EPLL VPLL这四个PLL为止。

  3、确认APLL MPLL EPLL VPLL已使能且输出稳定。


分频器设置时,必然会影响与它相连的所有IP核,所以个人认为设置分频器时,应保证下游IP核停止工作,待分频器稳定后再重新初始化下游IP核。

 

五、举例

按照PLL -> MUX ->分频器的顺序举例说明。

5.1 PLLLOCKTIME

  APLL_LOCK(Address:0x1004_4000)寄存器该写入0x00000960

  MPLL_LOCK(Address:0x1004_0008)寄存器该写入0x00000190

  EPLL_LOCK(Address:0x1003_C010)寄存器该写入0x00000BB8

  VPLL_LOCK(Address:0x1003_C020)寄存器该写入0x00000190

 

5.2 PLL

 APLL 1000MHz : APLL_CON0:0x10044100 写入 0x807D0300

            APLL_CON1:0x10044104 bit[22] 写入 0 ,默认值

注:为什么此时APLL一般不设置到1400MHz?因为ARM_CORE从APLL取时钟,但是此时电源管理芯片上电默认给ARM_CORE只提供1.1V的电压,反查手册后发现在1.1V下,ARM核最高只能运行在1000MHz,要想运行在1400MHz需要设置电源管理芯片输出1.4V电压。


  MPLL 800MHz :  MPLL_CON0:0x10040108 写入 0x80640300

            MPLL_CON1:0x1004010C bit[22] 写入 0 ,默认值

  EPLL 400MHz :  EPLL_CON0:0x1003C110 写入 0x80640301 

            EPLL_CON1:0x1003C114 写入 0x66010000 ,默认值

             EPLL_CON2: 0x1003C118 写入 0x00000080 ,默认值

  VPLL 100MHz :  VPLL_CON0:0x1003C120 写入 0x80640303  

            VPLL_CON1:0x1003C124 写入 0x66016000 ,默认值

            VPLL_CON2:0x1003C128 写入 0x00000080 ,默认值


5.3 MUX

  按照3.1 - 3.4节配置后的通路。

  CMU_CPU:CLK_SRC_CPU :0x10044200 寄存器写入 0x01000001

  CMU_DMC:CLK_SRC_DMC :0x10040200 寄存器写入 0x00011000

  CMU_TOP:CLK_SRC_TOP0:0x1003C210 寄存器写入 0x00000110

        CLK_SRC_TOP1:0x1003C214 寄存器写入 0x00011000

  CMU_LEFTBUS :CLK_SRC_LEFTBUS :0x10034200 寄存器写入 0x00000010

  CMU_RIGHTBUS:CLK_SRC_RIGHTBUS:0x10038200 寄存器写入 0x00000010


5.4 分频器

5.4.1 LEFTBUS

    CLK_DIV_LEFTBUS:0x10034500 寄存器写入 0x00000013 ,这样ACLK_GDL = 200MHz ACLK_GPL = 100MHz。 



5.4.2 RIGHTBUS

CLK_DIV_RIGHTBUS:0x10038500 寄存器写入 0x00000013,这样ACLK_GDR = 200MHz ACLK_GPR = 100MHz。


5.4.3 DMC

  CLK_DIV_DMC0:0x10040500 寄存器写入 0x00111113

  CLK_DIV_DMC1:0x10040504 寄存器写入 0x01011113

这样,

  ACLK_ACP = 200MHz

  PCLK_ACP = 100MHz

  SCLK_DPHY = 400MHz

  SCLK_DMC (DDR时钟) = 400MHz

  ACLK_DMCD = 200MHz

  ACLK_DMCP = 100MHz

  SCLK_G2D_ACP = 200MHz

  SCLK_C2C = 400MHz

  ACLK_C2C = 200MHz

  SCLK_PWI = 12MHz 


5.4.4 CPU

  CLK_DIV_CPU0:0x10044500寄存器写入 0x01143730

  CLK_DIV_CPU1:0x10044504寄存器写入 0x00000004


5.4.5 TOP

  CLK_DIV_TOP:0x1003C510 寄存器写入 0x01205473


至此,时钟所有配置结束。


经过整理后的JLink时钟初始化脚本,会放到这里 《JLink V8初始化exynos4412脚本》。


参考资料:《Exynos 4412  SCP User’s Manual Rev 0.10》。  

推荐阅读

史海拾趣

Curtis Electromusic Specialties Inc公司的发展小趣事

在全球化的大背景下,供应链管理对于企业的运营效率至关重要。CUI公司高度重视供应链的优化和管理,通过建立完善的采购、生产和销售体系,实现了原材料的稳定供应和产品的快速交付。此外,公司还积极引入先进的生产设备和信息化管理系统,提高了生产效率和产品质量,为公司的快速发展提供了有力保障。

Agere System(LSI Logic)公司的发展小趣事

随着全球环保意识的不断提高,电子行业对环保材料的需求也日益增长。CUI公司敏锐地抓住了这一市场机遇,积极投入研发,成功开发出了一种绿色环保型的碘化亚铜生产工艺。这种工艺不仅降低了生产过程中的能耗和排放,而且提高了产品的纯度和质量。通过推广这一工艺,CUI公司不仅赢得了客户的青睐,也为行业的绿色发展做出了积极贡献。

CTS公司的发展小趣事

CTS公司,全称CTS Corporation,于1896年在美国印第安那州创立。在创立初期,公司主要生产和销售电器元件,凭借对技术的深入理解和市场需求的敏锐洞察,逐渐在行业中崭露头角。随着业务的扩展,CTS的产品线逐渐丰富,涵盖了汽车及电脑配件、通讯产品、精密仪器及装置等多个领域。

Adaptive Interconnect Electronics, Inc. [AIE]公司的发展小趣事

为了适应全球电子市场的快速发展,AIE公司积极实施全球化战略。公司在多个国家和地区设立了分支机构或办事处,以便更好地服务当地客户。同时,AIE还积极参加国际电子展会和论坛,与全球各地的合作伙伴和客户建立了广泛的联系。这些举措不仅拓展了AIE的市场份额,也提升了公司的国际影响力。

APM Hexseal公司的发展小趣事

APM Hexseal的创始人Milton Morse是一位自学成才的工程师和杰出的创新者。他敏锐地洞察到电子行业对密封解决方案的迫切需求,于是开始设计原始的密封开关“靴子”。这种模制的覆盖物能够保护拨动开关和安装面板免受各种液体和气体的渗透。这一创新产品迅速取得了巨大的成功,为APM Hexseal公司奠定了坚实的基础。

GWP Group公司的发展小趣事

APM Hexseal的产品很快在军事领域获得了广泛应用。公司的密封靴子通过了严格的军事检查和独立的QPL等效项,证明了其卓越的性能和可靠性。此外,APM Hexseal还协助开发了MIL-B-5423规范(现为MIL-DTL-5423),为军方的新设备保护要求设定了初始标准。这一合作不仅提升了APM Hexseal在军事领域的影响力,也为其在电子行业中的发展打开了新的大门。

问答坊 | AI 解惑

高薪招聘招聘逆向调试人员!

高薪招聘招聘逆向调试人员! 工作地点:吉林省长春市 工作性质: 全职(可兼职) 薪    水: 不求学历,只看实力,薪水看你的能力另谈!(一旦录用,如工作尽职,三个月后可加薪) 岗位职责: 网络游戏安全问题,分析.(外挂、木马等 ...…

查看全部问答>

一本书讲C、C++状态机编程,算得上是经典

本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata   这本书讲C、C++状态机编程,算得上是经典    …

查看全部问答>

2011造什么?造飞碟

如果我说造飞碟,你认为是天方夜谭那么我告诉你,你落后了。在网上有几千UFO研究者和制造者!以下是关于飞碟制造的资料和设计参考!!! 瑟尔效应反重力研究群: 永动机: 分别介绍我所有的资料: 1、纳粹德国飞碟制造:  &n ...…

查看全部问答>

对于每日一问的建议

论坛里开的这个每日一问真的很不错,不管对于哪个层次的来说都很有好处,个人建议下提过问题以后,能不能对每个问题做一个总结,这个总结不一定要是结果,而且是解决问题的方法和思路。 不好意思我现在只能对我们初学者提点建议,有说错话的地方请 ...…

查看全部问答>

帖子审核能不能快一点,我等着收钱呢

帖子审核能不能快一点,我等着收钱呢开点玩笑,共同学习…

查看全部问答>

空间定位指令?

能不能请教一个问题啊,就是IAR汇编语言有条指令ORG 1100H,应该是指定程序的起始空间吧,程序将程序烧录在0x1100开始的空间地址,那想问一下,C语言怎么写这条指令呢?            & ...…

查看全部问答>

DCO测试工程

这个工程可以测试DCO的4096个设置值所对应的频率值,并使用串口发送到上位机。测试平台是使用32KHz晶振的G2系列MSP430.横坐标是DCOCTL (DCOx, MODx)值纵坐标为频率值16条线为RSELx 值…

查看全部问答>

LED家族新兵 WiFi节能灯 貌似出现!

      目前来说,世界范围内一直提倡着高效节能,而电力的有效利用也是其中的重要一项。一家照明公司宣称,已经开发研制成功WiFi节能LED灯.介绍中说,假如一家公司安装了200盏这种LED灯,电量消耗最多可以降低至原来的一半。如 ...…

查看全部问答>

3轴加速传感器

本人用了MPU6000 3轴加速传感器和3轴陀螺仪。 进行物体3D描绘 想用加速度积分求速度 再用速度积分求位移。 可是位移的偏移量太大了。 太不准了。 有没有什么办法解决啊!!!!!!…

查看全部问答>