S3C6410系统控制

 
S3C6410系统控制器包括两部分:系统时钟控制和电源管理。
一、系统时钟

将产生系统所需的时钟信号。共有三个PLL(锁相环)。其中第一个(ARM PLL)为ARMCLK专用,第二个(MAIN PLL)用于HCLK和PCLK,第三个(EXTRA PLL)用于外围设备,特别是用于音频设备的时钟。每个外围设备的时钟信号可以用软件来enable和disable,用来降低功耗。

1、ARMCLK ----->   CPU

2、HCLK  ------>   AXI/Ahb 总线上的设备

3、PCLK    ------>   Apb 总线设备


1、硬件结构

S3C6410系统控制(引用自网页) - new_os - 刘强的博客

S3C6410是由ARM1176核、一些多媒体协处理器(co-processors)、多种外设IPs组成。ARM1176核是通过64位AXI总线与存储控制器相连的,这样做是为了满足带宽的需要。       多媒体协处理(MFC多格式编码器、JPEG、camera接口、TV译码器、3D加速器等)器被分为五个电源域,这五个电源域可被单独控制以降低功耗。


2、时钟结构

时钟源在外部晶振和外部时钟二者之间进行选择。时钟发生器由三个PLL组成,最高可产生1.6GHz的信号。


3、时钟源

下面为三星官方手册:

S3C6410系统控制(引用自网页) - new_os - 刘强的博客

当OM[0]为0时,选择外部晶体;当为1时,选择外部信号。下图为6400的截图,也适用6410,关于6410的启动,网上有高手称是三星隐藏了什么,见下图。

S3C6410系统控制(引用自网页) - new_os - 刘强的博客

如果使用nand flash则XSELNAND必须为1;如果使用onenand则必须为0.


4、锁相环

三个锁相环:APLL、MPLL、EPLL。

VCO(电压控制震荡器)输出的频率与输入的电压成正比。预分频器将输入频率分频(P),主分频器将VCO的输出频率分频(M)送入鉴相器,post定标器将将VCO输出的频率分频(S)。相位差检测器检测相位差和电荷泵电压的增加和减少


1)    ARM和AXI/AHB/APB时钟

ARM1176最大支持667MHZ,在不改变PLL的情况下,可以通过DIVarm来控制该频率。

S3C6410由AXI、AHB、APB总线组成。IPs可以连接相应总线来满足I/O带宽和操作性能。连接在AXI/AHB的总线上的设备,最高可以达到133MHz的速度。当连接在APB总线上时,最高可以达到66MHz的速度。总线速度很高程度上依赖于AHB和APB总线之间的同步数据传输。

S3C6410系统控制(引用自网页) - new_os - 刘强的博客

注意图中的右侧部分:

HCLKx2用于两个DDR控制器,DDR0、DDR1,最高可达到266MHZ,每个DDR控制器可以单独控制,以用来降低功耗。

所有的AHB总线上的时钟是由DIVhclk分频得来的,同样,也可以单独控制来降低功耗。HCLK_GATE寄存器来配置HCLKx2和HCLK。

APB总线与AHB总线类似,但是注意:在AHB和APB总线之间的频率比必须隔着一个偶数值,例如:如果DIVhclk是1,那么DIVpclk必须是1、3…..,否则,则不能传输数据。

在AHB总线上的JPEG和安全子系统不能运行在133MHz。AHB总线用DIVjpeg和DIVsecur为它们单独产生时钟信号,因此它们与APB之间的频率也要隔着一个偶数。

APLL单独用于ARM核,其值不作约束。


2)    MFC时钟

 


3)    camera I/F(接口) 时钟

 


4)    显示时钟(POST、LCD和scaler

 


5)    音频时钟(IIS和PCM)

 


6)    UART、SPI、MMC时钟

 


7)    IrDA 和USB HOST时钟

 


8)    时钟的开关控制

可以通过控制HCLK_GATE、PCLK_GATE、SCLK_GATE。


9)    时钟的输出

有一个时钟输出端口,产生内部时钟,用于中断或调试。


5、同步667MHz模式

使用同步接口模式(ARM核与AXI总线之间)时,ARMCLK和HCLK之间的时钟比必须是一个整数。

S3C6410在533MHZ的同步接口模式下没有任何限制,比如:ARMCLK=533M,HCLKx2=266M,HCLK=133M.但是,注意:如果超过533MHz,典型的是667MHz,那么只能使用1:2.5:5,也就是667M:266:133。

原因见下图:

S3C6410系统控制(引用自网页) - new_os - 刘强的博客

ARMCLK、HCLKx2、HCLK的产生是由各自的预分频器和后分频器组成的。其中预分频器是固定的,不可配置的,APLL后面的预频率器为2分频,而MPLL后面的预分频器为5分频。而后分频器可以通过CLK_DIV0来配置。

如果使用同步667模式,如图,如果FOUT=1.33GHz,则经过预分频器后的ARMCLK为667MHz,经过另一个预分频器的则为266MHz.

同步667操作模式的5个使用步骤:

1、  正常模式:SYNC667寄存器相应位被清0,这时,就没有任何限制,典型的分频比:1:2:4(533:266:133MHz)。

2、  晶振模式:在设置SYNC667之前,S3C6410必须使用使用的是晶振的频率(通过设置CLK_SRC的APLL_SEL位为0),分频比为1:2:4(12:6:3MHz)。

3、  DIV112模式:从1:2:4模式转变成1:1:2模式(12:12:6MHz)

4、  SYNC667低频率模式:将SYNC667相应的位置位,将分频比调整为2:5:10(6:2.4:1.2MHz)

5、  SYNC667模式:当APLL的FOUT=1.33GHz时,就工作在SYNC667模式了。

退出667模式时,步骤与上述相反。

上述五步看上去好麻烦,有时间一定要弄一下,不知道提供的程序中有没有使用到667模式。

同步667模式的一些限制:

1、  不可以使用其它的时钟分频比ARM_RATIO、HCLKx2_RATIO、HCLK_RATIO必须是0,0和1.

2、  在SYNC667模式下,如果上述三者的比不是0,0,1,则应使用异步接口模式。

3、  不允许使用DVFS(Dnamic Voltage Frequency Scale),如果使用动态的比例调整,必须在异步接口模式下。

4、  在SYNC667模式下不支持停止、深度停止、睡眠模式,如果想进入这三种模式,必须先退出SYNC667模式。


6、低功耗模式

支持正常模式、保持模式、电源选通模式和电源关闭4种模式。

所有的内部逻辑包括F/Fs(触发器)和内存运行在正常模式;保持模式是在停止或深度停止模式时用来减少不必要的功耗,但保留了预先状态和快速唤醒。注意:domain-V、I、P、F、S、G,不支持这种保持模式。它们可以通过内部的电源选择开关来控制是否选通来降低功耗。在睡眠模式下,外部的调节器将被关闭以降低功耗,这时S3C6410将最大限度的减小功耗,并将失去所有的信息除了ALIVE和RTC模块。

 


二、电源管理

多种电源管理方案以降低功耗,有6个可控的电源域(范围):domain-G, domain-V, domain-I, domain-P, domain-F, domain-S.

S3C6410的电源管理分为四部分:

1、  general模式(通常模式、正常模式)

用于控制内总总线设备时钟的开、关。可利用这种模式来优化S3C6410的功耗,例如:如果你不需要使用定时器,你可以断开定时器的时钟。

2、  空闲模式(掉电模式)

该模式是断开了ARMCLK对CPU的供电。

3、  停止模式

通过禁止PLL来断开所有时钟信号(CPU和所有外设)。此时的功耗只剩下了漏电流的损耗。

4、  睡眠模式

该模式断开了内部(除了唤醒逻辑)电源。使用这种模式需要两个独立的电源,一个电源用于供给唤醒电路;另一个用于供给内部逻辑电路(包括CPU),这个电源必须可以被控制开、关。在睡眠模式中,第二个电源将会被关闭。


1、电源域

在正常和空闲模式下,通过NORMAL_CFG控制它们,如果控制位被清0,就会改变相应部分的选通模式和先前的状态。因此,用户程序必须保存先前的状态在清0前。当S3C6410改变成停止或深度停止模式时,子电源域会自动改变选通模式。


2、正常、空闲模式

 


3、停止模式

 


4、深度停止模式

 


5、睡眠模式

 


6、唤醒

 


7、重启(复位)RST_STAT寄存器来读状态

三种方式:

1、硬件复位

通过给XnRESET引脚置低电平,完全初始化系统(寄存器和引脚)。所有信息将丢失(除了RTC)。

当XnRESET被拉低后,XnRESETOUT也被拉低.

XnRESET是不可屏蔽,始终有效的。

2、看门狗复位

是一个硬件的block

3、唤醒复位

是从睡眠模式中唤醒,S3C6410睡眠后,内部的硬件都是不可用的状态,唤醒后需重新的初始化。


三、寄存器介绍

1、0x7E00 F0xx用来配置PLL和时钟发生器。

2、0x7E00 F1xx用来配置总线和内存

3、0x7E00 F8xx用来配置电源管理

4、0x7E00 F9xx用来显示内部状态

5、0x7E00 FA0x用来保存信息

 


四、备忘

S3C6410系统控制(引用自网页) - new_os - 刘强的博客

S3C6410系统控制(引用自网页) - new_os - 刘强的博客

 

 
阅读更多
个人分类: ARM
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭