首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

U-Boot启动过程完全分析(3)

U-Boot启动过程完全分析(3)

6)设置MPLLCON,UPLLCON, CLKDIVN
# if defined(CONFIG_S3C2440)

#define MPLLCON
0x4C000004
#define UPLLCON
0x4C000008



ldr
r0, =CLKDIVN



mov
r1, #5


str
r1, [r0]




ldr
r0, =MPLLCON


ldr
r1, =0x7F021



str
r1, [r0]





ldr
r0, =UPLLCON



ldr
r1, =0x38022


str
r1, [r0]
# else

/*FCLK:HCLKCLK = 1:2:4 */

/*default FCLK is 120 MHz ! */

ldr
r0, =CLKDIVN

mov
r1, #3

str
r1, [r0]
#endif

CPU上电几毫秒后,晶振输出稳定,FCLK=Fin(晶振频率),CPU开始执行指令。但实际上,FCLK可以高于Fin,为了提高系统时钟,需要用软件来启用PLL。这就需要设置CLKDIVNMPLLCONUPLLCON3个寄存器。


CLKDIVN寄存器用于设置FCLKHCLKPCLK三者间的比例,可以根据表2.2来设置。

2.2 S3C2440 CLKDIVN寄存器格式

  

CLKDIVN

  
  


  
  

说明

  
  

初始值

  
  

HDIVN

  
  

[2:1]

  
  00 : HCLK = FCLK/1.
  01 : HCLK = FCLK/2.
  10 : HCLK = FCLK/4 (当 CAMDIVN[9] = 0  时)

  HCLK= FCLK/8
(当 CAMDIVN[9] = 1 时)

  11 : HCLK = FCLK/3 (当 CAMDIVN[8] = 0  时)

  HCLK = FCLK/6 (当 CAMDIVN[8] = 1时)

  
  

00

  
  

PDIVN

  
  

[0]

  
  

0: PCLK =  HCLK/1
1: PCLK = HCLK/2

  
  

0

  



设置CLKDIVN5,就将HDIVN设置为二进制的10,由于CAMDIVN[9]没有被改变过,取默认值0,因此HCLK = FCLK/4PDIVN被设置为1,因此PCLK=HCLK/2。因此分频比FCLK:HCLKCLK= 1:4:8


MPLLCON寄存器用于设置FCLKFin的倍数。MPLLCON的位[19:12]称为MDIV,位[9:4]称为PDIV,位[1:0]称为SDIV


对于S3C2440FCLKFin的关系如下面公式:


MPLL(FCLK)= (2×m×Fin)/(p×)

其中: m=MDIC+8p=PDIV+2s=SDIV

MPLLCONUPLLCON的值可以根据参考文献4“PLL VALUE SELECTION TABLE”设置。该表部分摘录如下:

2.3 推荐PLL

  

输入频率

  
  

输出频率

  
  

MDIV

  
  

PDIV

  
  

SDIV

  
  

12.0000MHz

  
  

48.00  MHz

  
  

56(0x38)

  
  

2

  
  

2

  
  

12.0000MHz

  
  

405.00  MHz

  
  

127(0x7f)

  
  

2

  
  

1

  

mini2440系统主频设置为405MHZUSB时钟频率设置为48MHZ时,系统可以稳定运行,因此设置MPLLCONUPLLCON为:


MPLLCON=(0x7f<<12)| (0x02<<4) | (0x01) = 0x7f021

UPLLCON=(0x38<<12)| (0x02<<4) | (0x02) = 0x38022
继承事业,薪火相传
返回列表