我是直接在初始化代码中设置的,代码如下:
AREA Init,CODE,READONLY
ENTRY
GET S3C2440.INC
IMPORT _TestMain
IMPORT IRQ_Handle
b Start
nop
nop
nop
nop
nop
b IRQ_Handle
nop
Start
ldr r0,=WTCON ;watch dog disable
ldr r1,=0x0
str r1,[r0]
mrc p15,0,r0,c1,c0,0 ;将CPU总线模式从fast bus mode 改为asynchronous bus mode ,
;如在fast bus mode下,HDIVN非0,则CPU频率为HCLK,而不是FCLK
orr r0 ,r0,#0xc000000 ;R1_nF:OR:R1_iA ;R1_nF:OR:R1_iA=0xc000000
mcr p15,0,r0,c1,c0,0
ldr r0,=LOCKTIME ;设置LOCK频率改变时的锁定时间,使用默认值。
ldr r1,=0xfffffff
str r1,[r0]
ldr r0,=MPLLCON ;设置FCLK时钟其中MDIV[19:12]=0x5c,PDIV[9:4]=0x1,SDIV[1:0]=0x1
;FCLK=(2*(MDIV+8)*Fin)/((PDIV+2)*2^SIDV) Fin=12Mhz FCLK=400Mhz
ldr r1,=(0x5c<<12+0x1<<4+0x1)
str r1,[r0]
ldr r0,=CLKDIVN ;设置FCLK/HCLK/PCLK比例,其中1:4:8 FCLK=400Mhz HCLK=100Mhz PCLK=50Mhz
ldr r1,=(0x2<<1+0x1)
str r1,[r0]
ldr r0,=INTMSK
ldr r1,=0xffffffff ;all interrupt disable
str r1,[r0]
ldr r0,=SUBINTMSK
ldr r1,=0x7fff ;all sub interrupt disable
str r1,[r0]
msr cpsr_c,#0xd2 ;设置中断模式堆栈指针
ldr sp,=4096
msr cpsr_c,#0xdf ;系统模式并关闭IQR中断
ldr sp,=3072
;初始化存储控制器寄存器,使SDRAM可用
adrl r0,MEMDAT
ldr r1,=BWSCON
add r2,r0,#52
0
ldr r3,[r0],#4
str r3,[r1],#4
cmp r2,r0
bne %b0
b _TestMain
MEMDAT DATA
DCD 0x22121110
DCD 0x7ff4
DCD 0x2e50
DCD 0x2e50
DCD 0x2e50
DCD 0x2e50
DCD 0x2e50
DCD 0x18005
DCD 0x18005
DCD 0x9404f4
DCD 0x32
DCD 0x30
DCD 0x30
end