📄 flash.s
字号:
;/*
;*********************************************************************************************************************
;* 东软培训中心教学项目:基于ARM和uc/os-II的PDA系统
;*
;* (c) Copyright 2005, 东软培训中心
;* All Rights Reserved
;*
;* 模块名称:FLASH驱动程序模块
;* 文件名:FLASH.S
;* 作者:朱成果
;* 时间:2005年9月20日
;* 版本:V0.01
;**********************************************************************************************************************
;*/
AREA FlASH,CODE,READONLY
EXPORT Flash_Reset
EXPORT Erase_Cluster
EXPORT ReadPage
EXPORT WritePage
ENTRY
Flash_Reset
ldr r0,=0x01d20000
ldr r1,[r0,#0x14]
orr r1,r1,#0x800
str r1,[r0,#0x14]
ldr r1,[r0,#0x14]
bic r1,r1,#0x8400
str r1,[r0,#0x14]
mov r0,#0xff
mov r1,#0x4000000
strb r0,[r1,#0]
mov r0,#0
12 add r0,r0,#1
subs r12,r0,#0x800
subges r12,r12,#0x3b8
blt %B12
mov pc,r14
ReadPage
stmfd r13!,{r3-r5,r14}
mov r3,r0
mov r0,r2
add r2,r1,r3,lsl #5
mov r5,#0x1e00000
ldr r1,[r5,#0xc] ;mask interrupt
orr r1,r1,#0x6000000
str r1,[r5,#0xc]
sub r1,r5,#0xe0000
ldr r3,[r1,#0x14]
orr r3,r3,#0x800
str r3,[r1,#0x14]
ldr r3,[r1,#0x14]
bic r3,r3,#0x8400
str r3,[r1,#0x14]
mov r12,#0
mov r3,#0x4000000
strb r12,[r3,#0]
ldr r14,[r1,#0x14]
orr r14,r14,#0x400
str r14,[r1,#0x14]
ldr r14,[r1,#0x14]
bic r14,r14,#0x8800
str r14,[r1,#0x14]
strb r12,[r3,#0]
strb r2,[r3,#0]
mov r2,r2,lsl #16
mov r2,r2,lsr #24
strb r2,[r3,#0]
mov r2,#0
13 add r2,r2,#1
cmp r2,#3
blt %B13
ldr r2,[r1,#0x14]
bic r2,r2,#0x8c00
str r2,[r1,#0x14]
mov r4,r1
14 ldr r1,[r4,#0x2c]
tst r1,#1
beq %B14
bl __RdPage528
ldr r0,[r4,#0x14]
orr r0,r0,#0x8000
str r0,[r4,#0x14]
ldr r0,[r4,#0x14]
bic r0,r0,#0xc00
str r0,[r4,#0x14]
ldr r0,[r5,#0xc] ;open interrupt
and r0,r0,#0x1ffffff
str r0,[r5,#0xc]
ldmfd r13!,{r3-r5,pc}
Erase_Cluster
mov r1,r0,lsl #5
mov r3,#0x1e00000 ;mask interrupt
ldr r0,[r3,#0xc]
orr r0,r0,#0x6000000
str r0,[r3,#0xc]
sub r0,r3,#0xe0000
ldr r2,[r0,#0x14]
orr r2,r2,#0x800
str r2,[r0,#0x14]
ldr r2,[r0,#0x14]
bic r2,r2,#0x8400
str r2,[r0,#0x14]
mov r12,#0x60
mov r2,#0x4000000
strb r12,[r2,#0]
ldr r12,[r0,#0x14]
orr r12,r12,#0x400
str r12,[r0,#0x14]
ldr r12,[r0,#0x14]
bic r12,r12,#0x8800
str r12,[r0,#0x14]
strb r1,[r2,#0]
mov r1,r1,lsl #16
mov r1,r1,lsr #24
strb r1,[r2,#0]
mov r1,#0
15 add r1,r1,#1
cmp r1,#2
blt %B15
ldr r1,[r0,#0x14]
orr r1,r1,#0x800
str r1,[r0,#0x14]
ldr r1,[r0,#0x14]
bic r1,r1,#0x8400
str r1,[r0,#0x14]
mov r1,#0xd0
strb r1,[r2,#0]
mov r1,#0
16 add r1,r1,#1
cmp r1,#3
blt %B16
ldr r1,[r0,#0x14]
bic r1,r1,#0x8c00
str r1,[r0,#0x14]
17 ldr r1,[r0,#0x2c]
tst r1,#1
beq %B17
ldr r1,[r0,#0x14]
orr r1,r1,#0x800
str r1,[r0,#0x14]
ldr r1,[r0,#0x14]
bic r1,r1,#0x8400
str r1,[r0,#0x14]
mov r12,#0x70
strb r12,[r2,#0]
mov r1,r2
ldr r2,[r0,#0x14]
bic r2,r2,#0x8c00
str r2,[r0,#0x14]
ldrb r1,[r1,#0]
tst r1,#1
ldr r2,[r0,#0x14]
orr r2,r2,#0x8000
str r2,[r0,#0x14]
ldr r2,[r0,#0x14]
bic r2,r2,#0xc00
str r2,[r0,#0x14]
ldr r1,[r3,#0xc] ;open interrupt
and r1,r1,#0x1ffffff
str r1,[r3,#0xc]
moveq r0,#1
movne r0,#0
mov pc,r14
WritePage
add r1,r1,r0,lsl #5
str r14,[r13,#-4]!
mov r12,#0x1e00000 ;mask interrupt
ldr r0,[r12,#0xc]
orr r0,r0,#0x6000000
str r0,[r12,#0xc]
sub r0,r12,#0xe0000
ldr r3,[r0,#0x14]
orr r3,r3,#0x800
str r3,[r0,#0x14]
ldr r3,[r0,#0x14]
bic r3,r3,#0x8400
str r3,[r0,#0x14]
mov r14,#0x80
mov r3,#0x4000000
strb r14,[r3,#0]
ldr r14,[r0,#0x14]
orr r14,r14,#0x400
str r14,[r0,#0x14]
ldr r14,[r0,#0x14]
bic r14,r14,#0x8800
str r14,[r0,#0x14]
mov r14,#0
strb r14,[r3,#0]
strb r1,[r3,#0]
mov r1,r1,lsl #16
mov r1,r1,lsr #24
strb r1,[r3,#0]
ldr r1,[r0,#0x14]
bic r1,r1,#0x8c00
str r1,[r0,#0x14]
mov r1,#0
18 ldrb r14,[r2],#1
strb r14,[r3,#0]
add r1,r1,#1
cmp r1,#0x210
blt %B18
ldr r1,[r0,#0x14]
orr r1,r1,#0x800
str r1,[r0,#0x14]
ldr r1,[r0,#0x14]
bic r1,r1,#0x8400
str r1,[r0,#0x14]
mov r1,#0x10
strb r1,[r3,#0]
mov r1,#0
19 add r1,r1,#1
cmp r1,#0xa
blt %B19
20 ldr r1,[r0,#0x2c]
tst r1,#1
beq %B20
mov r1,#0x70
strb r1,[r3,#0]
ldr r1,[r0,#0x14]
bic r1,r1,#0x8c00
str r1,[r0,#0x14]
mov r1,#0
21 add r1,r1,#1
cmp r1,#3
blt %B21
ldrb r1,[r3,#0]
tst r1,#1
ldr r2,[r0,#0x14]
orr r2,r2,#0x8000
str r2,[r0,#0x14]
ldr r2,[r0,#0x14]
bic r2,r2,#0xc00
str r2,[r0,#0x14]
ldr r1,[r12,#0xc] ;open interrupt
and r1,r1,#0x1ffffff
str r1,[r12,#0xc]
moveq r0,#1
movne r0,#0
ldr pc,[r13],#4
__RdPage528
stmfd r13!,{r1-r11}
mov r1,#0x4000000
mov r2,#0x200
22 ldmia r1,{r4-r11}
stmia r0!,{r4-r11}
subs r2,r2,#0x20
bne %B22
ldmia r1,{r4-r7}
stmia r0!,{r4-r7}
ldmfd r13!,{r1-r11}
mov pc,r14
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -