标签:alt mod 过程 输出 art glob mode syn 设备
转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992482.html
S3C6410芯片有3路PLL, APLL用于ARM时钟操作,MPLL用于主时钟操作(用于操作AXI、AHB、APB总线操作),EPLL用于特殊用途。当OM[0]=0,表示使用晶振,CLK_SRC[0]=1表示选择APLL。
时钟设置的过程根据6410芯片手册的说明,可以总结为如下过程:
(1)设置锁定时间,对0x7E00F000,0x7E00F004,0x7E00F008进行操作。
(2)设置异步模式,对0x7E00F900进行操作,使用bic清除功能。
(3)循环等待,读取0x7E00F900。
(4)设置PLL, 0x7E00F020
(5)设置APLL,0x7E00F00C
(6)设置MPLL,0x7E00F010
(7)切换时钟源(0x7E00F01C)
具体的代码如下:
.globl _start
_start:
/*硬件相关的设置-该设置是ARM11中特有的,告诉CPU外围设备的基地址*/
ldr r0, =0x70000000
orr r0, r0, #0x13
/*设置协寄存器,在ARM11内核手册中有说明*/
/*r0 = 0x70000013 表示 长度为256M*/
mcr p15, 0, r0, c15, c2, 4
/*关看门狗*/
/*WTCON(0X7E004000) = 0*/
ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
/*设置PLL*/
/*设置APLL_LOCK MPLL_LOCK S3C6410手册的在139页*/
ldr r0, =0x7E00F000
ldr r1, =0x0000FFFF
str r1, [r0]
ldr r0, =0x7E00F004
ldr r1, =0x0000FFFF
str r1, [r0]
/*设置异步模式 OTHERS s3c6410手册169页*/
ldr r0, =0x7E00F900
ldr r1, [r0]
bic r1, r1, #0xc0
str r1, [r0]
/*循环等待 syncack [11:8] SYNC mode acknowledge(Read Only) 0x0*/
loop1:
ldr r0, =0x7E00F900
ldr r1, [r0]
and r1, r1, #0xf00
cmp r1, #0
bne loop1
/*设置CLK_DIV0 参考手册125页*/
#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]
/*设置APLL 参考手册142页*/
#define APLL_ENABLE 1
#define MDIV 266
#define PDIV 3
#define SDIV 1
ldr r0, =0x7E00F00C
ldr r1, =(APLL_ENABLE << 31) | (MDIV << 16) | (PDIV << 8) | (SDIV)
str r1, [r0]
/*设置MPLL 参考手册*/
ldr r0, =0x7E00F010
ldr r1, =(APLL_ENABLE << 31) | (MDIV << 16) | (PDIV << 8) | (SDIV)
str r1, [r0]
/*时钟源选择*/
ldr r0, =0x7E00F01C
ldr r1, =0x03
str r1, [r0]
/*设置GPKCON0让 GPK4,GPK5,GPK6,GPK7作为输出引脚*/
ldr r0, =0x7F008800
ldr r1, =0x11110000
str r1, [r0]
/*设置GPKDAT让 GPK4 = 0, GPK5 = 1, GPK6 = 0, GPK7 = 1*/
/*即LED1亮,LED2暗,LED3亮,LED4暗*/
ldr r0, =0x7F008808
mov r1, #0x00A0
str r1, [r0]
loop:
mov r1, #0x00A0
str r1, [r0]
bl delay
mov r1, #0x0080
str r1, [r0]
bl delay
b loop
delay:
ldr r2, =0xF4240
delay_loop:
sub r2, r2, #1
cmp r2, #0
bne delay_loop
mov pc, lr
halt:
b halt
通过编译,将bin文件焼入之后,会发现LED灯的闪烁速度明显比http://www.cnblogs.com/flyingcloude/p/3172654.html的要快很多
转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992482.html
标签:alt mod 过程 输出 art glob mode syn 设备
原文地址:http://www.cnblogs.com/flyingcloude/p/6992482.html