转:S3C6410系统控制器

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

一、系统时钟

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

1ARMCLK ----->   CPU

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

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

1 、硬件结构

 

 

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

2 、时钟结构

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

3 、时钟源

下面为三星官方手册:

 

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

 

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

4 、锁相环

三个锁相环:APLLMPLLEPLL

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

1)    ARM AXI/AHB/APB时钟

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

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

注意图中的右侧部分:

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

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

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

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

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

2)    MFC 时钟

 

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

 

4)    显示时钟( POSTLCDscaler

 

5)    音频时钟( IISPCM

 

6)    UART SPIMMC时钟

 

7)    IrDA  和USB HOST时钟

 

8)    时钟的开关控制

可以通过控制HCLK_GATEPCLK_GATESCLK_GATE

9)    时钟的输出

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

5 、同步667MHz模式

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

S3C6410533MHZ的同步接口模式下没有任何限制,比如:ARMCLK=533MHCLKx2=266MHCLK=133M.但是,注意:如果超过533MHz,典型的是667MHz,那么只能使用12.55,也就是667M266133

原因见下图:

 

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

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

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

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

2、  晶振模式:在设置SYNC667之前,S3C6410必须使用使用的是晶振的频率(通过设置CLK_SRCAPLL_SEL位为0),分频比为1241263MHz)。

3、  DIV112模式:从124模式转变成112模式(12126MHz

4、  SYNC667低频率模式:将SYNC667相应的位置位,将分频比调整为251062.41.2MHz

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

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

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

同步667模式的一些限制:

1、  不可以使用其它的时钟分频比ARM_RATIOHCLKx2_RATIOHCLK_RATIO必须是001.

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

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

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

6 低功耗模式

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

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

 

二、电源管理

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

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

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

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

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

该模式是断开了ARMCLKCPU的供电。

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睡眠后,内部的硬件都是不可用的状态,唤醒后需重新的初始化。

三、寄存器介绍

10x7E00 F0xx用来配置PLL和时钟发生器。

20x7E00 F1xx用来配置总线和内存

30x7E00 F8xx用来配置电源管理

40x7E00 F9xx用来显示内部状态

50x7E00 FA0x用来保存信息

 

四、备忘

 

转自:http://dogking.chinaunix.com/space.php?uid=24189228&do=blog&id=64167

你可能感兴趣的:(c,Flash,mfc,div,三星,IIS)