S&T的笔记 https://bbs.21ic.com/?600909 [收藏] [复制] [RSS] science and technology!

日志

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

已有 774 次阅读2011-12-16 03:14 |个人分类:ARM|系统分类:ARM| U-Boot, ARM

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:HCLK:PCLK = 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:HCLK:PCLK = 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


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)