s3c2440之cpu提速

2024-07-19  

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

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 = 400:100: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]


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。