mov r1,#0x00028000
ldr r2,=0x00000c12
ldr r3,=4096
mov r5,#0
Loop1
str r2,[r1],#4
add r2,r2,#0x100000
add r5,r5,#4
cmp r5,r3
bne Loop1
ldr r1,=0x00028e00;//放置段描述符
ldr r2,=0x80000c12
str r2,[r1]
; ldr r1,=0x00028800;//放置段描述符
; ldr r2,=0xe0000c12
; str r2,[r1]
LDR R0, =0x00028000;//设置描述符基址
mcr p15,0,r0,c2,c0,0
ldr r0,=0xffffffff;//设定域权限
mcr p15,0,r0,c3,c0,0
mov r0,#0
mcr p15,0,r0,c7,c7,0;//清除cache
mcr p15,0,r0,c7,c10,4;//排干写缓存
mcr p15,0,r0,c8,c7,0;//TLB无效
;mrc p15,0,r0,c1,c0,0;//使能对齐检查
;orr r0,r0,#0x02
;mcr p15,0,r0,c1,c0,0
mrc p15,0,r0,c1,c0,0;//使能MMU
orr r0,r0,#0x01
mcr p15,0,r0,c1,c0,0
nop
nop
nop
nop
nop
nop
mrc p15,0,r0,c1,c0,0;//使能ICache
orr r0,r0,#R1_I
mcr p15,0,r0,c1,c0,0
当执行到使能MMU时,程序跑飞,检测到0xe0000000中变为无续的数字
FAR寄存器返回了使能MMU指令的地址。
:'( |