s3c2440之cpu提速

刚看完韦东山老师的教学视频,写个随笔巩固一下下。

2440芯片上不止有cpu,还有 AHB高速总线(LCD,中断,USB,内存 控制器等),APB低速外设总线(I2C,I2S,GPIO等)。存在3个时钟,FCLK,HCLK(AHB),PCLK(APB).

2440有一个12m的晶振(时钟源),是通过锁相环PLL硬件实现倍频。2440芯片有两个PLL:MPLL、UPLL,时钟源经过MPLL, MPLL和UPLL (供给USB)通过 M、P、S 这3个参数确定FCLK输出频率。MPLL通过HDIVN和PDIVN分频之后确定HCLK和PCLK的频率,通过通过设置MPLL、HDIVN、PDIVN 给CPU提速。

 

2440CPU 启动过程。

1.上电之后,复位芯片等待电源稳定,会处于低电平一段时间,电源稳定之后才输出高电平。

2.根据OM[3:2]的值,此时的FCLK为12MHZ(时钟源的频率)

3.复位芯片输出高电平之后,会锁存OM[3:2]的值。

4.设置PLL的值,此时PLL开始工作,并等待PLL输出稳定之后(LOCK TIME寄存器)

5.FCLK输出新时钟。

 

涉及寄存器

 

 设置CLKDIVN寄存器设置HDIVN和PDIVN。

 设置MPLL寄存器

 

 

 具体如何设置MDIV PDIV SDIV,下图提供了相关参考:

 

 具体代码如下:

 1 //设置LOCKTIME
 2 ldr r0, =0x4C000000
 3 ldr r1, =0xFFFFFFFF
 4 str r1, [r0]
 5     
 6 //设置MPLL FCLK:HCLK:PCLK = 400100:50(1:4:8)
 7 ldr r0, =0x4C000014
 8 ldr r1, =0x5 //CLKDIV = Ox5 (0b101)
 9 str r1, [r0]
10 
11 //设置cpu为异步模式
12 mrc p15, 0, r0, c1, c0, 0 
13 orr r0, r0, #0xc0000000
14 mcr p15, 0, r0, c1, c0, 0
15 
16 /*设置时钟以最高频率运行 400MHZ*/
17 //MPLL= (92 << 12) | (1 << 4) | (1 << 0)
18 ldr r0, =0x4C000004
19 ldr r1, =(92 << 12) | (1 << 4) | (1 << 0)
20 str r1, [r0]

 

posted @ 2019-06-04 20:13  rookie_zw  阅读(368)  评论(0编辑  收藏  举报