⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.s

📁 一个基于单片机的小型操作系统
💻 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 + -