S3C6410时钟分析(蜗牛我的原创)

来源:互联网 发布:我的世界服务器开挂js 编辑:程序博客网 时间:2024/06/05 09:02

简单分析.S 文件理解开机过程
/***********************************************************************************************************************************************************************/
.globl _start
_start:

/*硬件相关设置*/
    /* Peri port setup */
    ldr r0, =0x70000000
    orr r0, r0, #0x13
    mcr p15,0,r0,c15,c2,4       @ 256M(0x70000000-0x7fffffff)
    
/*关看门狗*/
ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
上面这些都是套路,设置硬件告诉CPU  外部RAM在哪,关闭看门狗。 
/***********************************************************************************************************************************************************************/
#define OTHERS 0x7e00f900
ldr r0,=OTHERS
ldr r1,[r0]
bic r1,r1, #0xc0    
str r1,[r0]

loop1:   
ldr r0,=OTHERS
ldr r1,[r0]
and r1,r1,#0xf00     
cmp  r1,#0
bne  loop1  
0: Asynchronous mode,  MPLL作为HCLK  PCLK等的时钟源         1: Synchronous mode  APLL作为HCLK  PCLK等的时钟源
图片
图片


/***********************************************************************************************************************************************************************/
#define ARM_RATIO 0  
#define HCLKX2_RATIO  1    
#define HCLK_RATIO    1     
#define PCLK_RATIO    3     
#define MPLL_RATIO    0     
ldr  r0,=0x7E00F020   
ldr  r1,=(ARM_RATIO)|(MPLL_RATIO<<4)|(HCLK_RATIO<<8)|(HCLKX2_RATIO<<9)|(PCLK_RATIO<<12)
str  r1,[r0]

CLK_DIV0      0x7E00_F020      读/写    选择时钟分频器的比例。      
图片
图片 



上面这些是设置 选择时钟分频器的比例 ,就是时钟框图中右面那些DIVDE
/***********************************************************************************************************************************************************************/

/*设置ARMCLK*/
ldr r0, =0x7E00F00C  /*FOUT_APLL = 533 APLL_EN = 1<<31, MDIV = 266<<16, PDIV = 3<<8, SDIV = 1*/
ldr r1, =0x810a0301
str r1, [r0]

#define MPLL_CON_VAL ((1<<31)|(266<<16)|(3<<8)|(1))
ldr  r0,=0x7E00F010
ldr  r1,=MPLL_CON_VAL
str  r1,[r0]  
图片
图片
 
上面这些是设置MPLL  和APLL 的倍频,就是把12M晶振提供的时钟进行倍频,经过后期分频提供给片上系统
/***********************************************************************************************************************************************************************/
 

ldr  r0,=0x7E00F01C
ldr  r1,=0x03
str  r1,[r0]
图片 
时钟发生器框图中说有选择门都是由这个寄存器控制的   CLK_SRC  0x7E00_F01C   
图片

上面是时钟选择,框图上绝大多数的选择门都是通过这个寄存器控制的
/***********************************************************************************************************************************************************************/
ldr sp, =8*1024
bl main
halt:
b halt


程序结束。 

0 0
原创粉丝点击