//基于韦东山老师时钟体系课程第一课
外部时钟晶振----OM[3:2]----被选择为时钟源(此时FCLK=时钟晶振)
----->时钟源--->通过MPLL锁相环--产生新FCLK-->
1 -----> 通过 HDIVN ---->产生 HCLK ----> 用于AHP BUS
2 -----> 通过 PDIVN ---->产生 PCLK ---> 用于APB BUS
/*
* 时钟体系
* 2020.03.30
*/
.text
.global _start
_start:
ldr r0=0x53000000 //关闭看门狗
mov r1,#0
str r1,[r0]
ldr r0,=0x4c000000//设置locktime (0x4c000000)=0xFFFFFFFF
ldr r1,=0xFFFFFFFF
str r1,[r0]
/* 设置 FCLK=400 HCLK=100 PCLK=50
*clkdivn-->fclk-->hdivn pdivn-->hclk pclk
* CLKDIVN(0x4c000014) PDIVN [0] 1 HCLK/2
* HDIVN [2:1] 10 : HCLK = FCLK/4 when CAMDIVN[9] = 0.
*/
ldr r0,=0x4c000014
ldr r1,=0x5
str r1,[r0]
mrc p15,0,r0,c1,c0,0 //设置CPU为异步模式
orr r0,r0,#0xc0000000 // #R1_nF:OR:R1_iA
mcr p15,0,r0,c1,c0,0
/*设置mpll--hclk pllcon--->m p s
* m=MDIV+8
* p=PDIV+2
* s=SDIV
* MPLL=(2*m*Fin)/(p*2^s)
* MPLLCON(0x4c000004) MDIV [19:12] PDIV[9:4] SDIV [1:0]
*/
ldr r0, =0x4C000004
ldr r1, =(92<<12) | (1 << 4) | (1 << 0)
str r1, [r0]
mov r0,#0 //选择nor nand 设置栈
ldr r1,[r0]
str r0,[r0]
ldr r2,[r0]
cmp r0 ,r2
ldr sp,= 0x40000000+4096
moveq sp,#4096
streq r1,[r0]
bl main
halt:
b halt