bootloader系列四——时钟初始化

2440的时钟模块如下图(2440芯片手册237页) ,下载链接见上一篇博客。

S3C2440可以使用外部晶振(XTIpll)(默认为12MHZ)
和外部时钟(EXTCLK)两种方式输入时钟信号。它由跳
线OM[3:2]决定。 S3C2440 默认的工作主频为12MHz
(晶振频率),S3C2440有两个PLL:MPLL和UPLL。通
过MPLL会产生三个部分的时钟频率:FCLK、HCLK、
PLCK。UPLL则负责产生USB所需时钟UCLK。如下图

 开发板上电后,时钟初始化流程如下图,刚通电时,FCLK为晶振频率12MHz,经过软件配置及Lock Time之后,FCLK变为高频(本例中为405MHz)。

 

从2440芯片手册243页可以看到下图所示的信息

 

于是,可以总结出时钟初始化的流程:

  配置Lock Time  —》 设置分频系数  —》设置CPU总线模式为异步模式  —》 设置FCLK

 

首先,

设置Lock Time的寄存器如下图,(2440芯片手册254页)。但由于Lock Time一般取默认值,所以可以省去“配置Lock Time”这一步骤。

之后,

2440设置FCLK、PCLK、HCLK的比例关系如下图所示,本例选1:4:8的比例。(2440芯片手册242页)。

设置分频系数所使用的寄存器如下图所示,(2440芯片手册258页) 

接下来, 

根据243页的NOTES,将CPU总线模式设置为异步模式。

最后,

设置FCLK的寄存器如下图(2440芯片手册第255页)

 得到以上信息后,时钟初始化的代码如下

#define CLKDIVN 0x4c000014
#define MPLLCON 0x4c000004
#define MPLL_405MHZ ((127<<12)|(2<<4)|(1<<0))

init_clock:
	ldr r0, =CLKDIVN
	mov r1, #0x5
	str r1, [r0]
	
	mrc p15,0,r0,c1,c0,0
	orr r0,r0,#0xc0000000
	mcr p15,0,r0,c1,c0,0
	
	ldr r0, =MPLLCON
	ldr r1, =MPLL_405MHZ
	str r1, [r0]
	mov pc, lr

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值