www.pudn.com > 44B0X_uCOS276.rar > 44binit.s


;*************************************************************** 
;Name	:	44BINIT.S 
;Edit	:	Tianbing 
;Date	:	2006-6-23 
;Function	:	这是一段44b0的初始化程序 
;*************************************************************** 
 
;*************************************************************** 
;寄存器定义 
;*************************************************************** 
rSYSCFG		EQU		0x01c00000 
rNCACHBE0	EQU		0x01c00004 
rNCACHBE1	EQU		0x01c00008 
rBWSCON		EQU		0x01c80000 
rBANKCON0	EQU		0x01c80004 
rBANKCON1	EQU		0x01c80008 
rBANKCON2	EQU		0x01c8000c 
rBANKCON3	EQU		0x01c80010 
rBANKCON4	EQU		0x01c80014 
rBANKCON5	EQU		0x01c80018 
rBANKCON6	EQU		0x01c8001c 
rBANKCON7	EQU		0x01c80020 
rREFRESH	EQU		0x01c80024 
rBANKSIZE	EQU		0x01c80028 
rMRSRB6		EQU		0x01c8002c 
rMRSRB7		EQU		0x01c80030 
rPCONA		EQU		0x01d20000 
rPCONB		EQU		0x01d20008 
rPCONC		EQU		0x01d20010 
rPDATC		EQU		0x01d20014 
rPUPC		EQU		0x01d20018 
rPCOND		EQU		0x01d2001c 
rPDATD		EQU		0x01d20020 
rPUPD		EQU		0x01d20024 
rPCONE		EQU		0x01d20028 
rPDATE		EQU		0x01d2002c 
rPUPE		EQU		0x01d20030 
rPCONF		EQU		0x01d20034 
rPDATF		EQU		0x01d20038 
rPUPF		EQU		0x01d2003c 
rPCONG		EQU		0x01d20040 
rPDATG		EQU		0x01d20044 
rPUPG		EQU		0x01d20048 
rSPUCR		EQU		0x01d2004c 
rEXTINT		EQU		0x01d20050 
rWTCON		EQU		0x01d30000 
rPLLCON		EQU		0x01d80000 
rCLKCON		EQU		0x01d80004 
rLOCKTIME	EQU		0x01d8000c 
rINTCON		EQU		0x01e00000 
rINTPND		EQU		0x01e00004 
rINTMOD		EQU		0x01e00008 
rINTMSK		EQU		0x01e0000c 
rI_CMST		EQU		0x01e0001c 
rI_ISPR		EQU		0x01e00020 
 
 
;*************************************************************** 
;处理器模式定义 
;*************************************************************** 
USERMODE    EQU	0x10 
FIQMODE	    EQU	0x11 
IRQMODE	    EQU	0x12 
SVCMODE	    EQU	0x13 
ABORTMODE   EQU	0x17 
UNDEFMODE   EQU	0x1b 
MODEMASK    EQU	0x1f 
NOINT	    EQU	0xc0 
 
;*************************************************************** 
;栈定义 
;*************************************************************** 
_ISR_STARTADDRESS	EQU	0x0c7fff00 
SVCStack	EQU	_ISR_STARTADDRESS - 0xa00		;0xc7ff500 
UserStack	EQU	_ISR_STARTADDRESS - 0x800		;0xc7ff700 
UndefStack	EQU	_ISR_STARTADDRESS - 0x600		;0xc7ff900 
AbortStack	EQU	_ISR_STARTADDRESS - 0x400		;0xc7ffb00 
IRQStack	EQU	_ISR_STARTADDRESS - 0x200		;0xc7ffd00 
FIQStack	EQU	_ISR_STARTADDRESS				;0xc7fff00 
 
;*************************************************************** 
;中断入口定义 
;*************************************************************** 
HandleReset		EQU	_ISR_STARTADDRESS				;0xc7fff00 
HandleUndef		EQU	_ISR_STARTADDRESS + 0x04		;0xc7fff04 
HandleSWI		EQU	_ISR_STARTADDRESS + 0x08		;0xc7fff08 
HandlePabort	EQU	_ISR_STARTADDRESS + 0x0c		;0xc7fff0c 
HandleDabort	EQU	_ISR_STARTADDRESS + 0x10		;0xc7fff10 
HandleReserved	EQU	_ISR_STARTADDRESS +	0x14		;0xc7fff14 
HandleIRQ		EQU	_ISR_STARTADDRESS + 0x18		;0xc7fff18 
HandleFIQ		EQU	_ISR_STARTADDRESS + 0x1c		;0xc7fff1c 
HandleADC		EQU	_ISR_STARTADDRESS + 0x20		;0xc7fff20 
HandleRTC		EQU	_ISR_STARTADDRESS + 0x24		;0xc7fff24 
HandleUTXD1		EQU	_ISR_STARTADDRESS + 0x28		;0xc7fff28 
HandleUTXD0		EQU	_ISR_STARTADDRESS + 0x2c		;0xc7fff2c 
HandleSIO		EQU	_ISR_STARTADDRESS + 0x30		;0xc7fff30 
HandleIIC		EQU	_ISR_STARTADDRESS + 0x34		;0xc7fff34 
HandleURXD1		EQU _ISR_STARTADDRESS + 0x38		;0xc7fff38 
HandleURXD0		EQU	_ISR_STARTADDRESS + 0x3c		;0xc7fff3c 
HandleTIMER5	EQU	_ISR_STARTADDRESS + 0x40		;0xc7fff40 
HandleTIMER4	EQU	_ISR_STARTADDRESS + 0x44		;0xc7fff44 
HandleTIMER3	EQU	_ISR_STARTADDRESS + 0x48		;0xc7fff48 
HandleTIMER2	EQU	_ISR_STARTADDRESS + 0x4c		;0xc7fff4c 
HandleTIMER1	EQU	_ISR_STARTADDRESS + 0x50		;0xc7fff50 
HandleTIMER0	EQU	_ISR_STARTADDRESS + 0x54		;0xc7fff54 
HandleUERR01	EQU	_ISR_STARTADDRESS + 0x58		;0xc7fff58 
HandleWDT		EQU	_ISR_STARTADDRESS + 0x5c		;0xc7fff5c 
HandleBDMA1		EQU	_ISR_STARTADDRESS + 0x60		;0xc7fff60 
HandleBDMA0		EQU	_ISR_STARTADDRESS + 0x64		;0xc7fff64 
HandleZDMA1		EQU	_ISR_STARTADDRESS + 0x68		;0xc7fff68 
HandleZDMA0		EQU	_ISR_STARTADDRESS + 0x6c		;0xc7fff6c 
HandleTICK		EQU _ISR_STARTADDRESS + 0x70		;0xc7fff70 
HandleEINT4567	EQU	_ISR_STARTADDRESS + 0x74		;0xc7fff74 
HandleEINT3		EQU	_ISR_STARTADDRESS + 0x78		;0xc7fff78 
HandleEINT2		EQU	_ISR_STARTADDRESS + 0x7c		;0xc7fff7c 
HandleEINT1		EQU	_ISR_STARTADDRESS + 0x80		;0xc7fff80 
HandleEINT0		EQU	_ISR_STARTADDRESS + 0x84		;0xc7fff84 
 
;*************************************************************** 
;引入全局变量 
;*************************************************************** 
	IMPORT	|Image$$RO$$Base|	; ROM code start	 
	IMPORT	|Image$$RO$$Limit|	; RAM data starts after ROM program 
	IMPORT	|Image$$RW$$Base|	; Pre-initialised variables 
	IMPORT	|Image$$RW$$Limit|	; End of Variable RAM space 
	IMPORT	|Image$$ZI$$Base|	; uninitialised variables 
	IMPORT	|Image$$ZI$$Limit|	; End of variable RAM space 
	 
	IMPORT 	Main 
	IMPORT	OSTickISR 
 
;*************************************************************** 
;程序入口点,Init段 
;*************************************************************** 
 
	AREA	Init,CODE,READONLY 
	ENTRY 
ResetEntry 
	b ResetHandler				;复位异常跳转 
	b HandlerUndef				;未定义指令异常跳转 
	b HandlerSWI				;软件中断异常跳转 
	b HandlerPabort				;指令预取中止异常跳转 
	b HandlerDabort				;数据访问中止异常跳转 
	b .							;保留 
	b HandlerIRQ				;IRQ中断异常跳转 
	b HandlerFIQ				;FIQ中断异常跳转 
 
;*************************************************************** 
;未定义指令异常跳入口 
;*************************************************************** 
HandlerUndef 
	b . 
	 
;*************************************************************** 
;软件中断异常跳转 
;*************************************************************** 
HandlerSWI 
	b . 
	 
;*************************************************************** 
;指令预取中止异常跳转 
;*************************************************************** 
HandlerPabort 
	b . 
;*************************************************************** 
;数据访问中止异常跳转 
;*************************************************************** 
HandlerDabort 
	b . 
 
;*************************************************************** 
;IRQ中断异常入口 
;*************************************************************** 
HandlerIRQ	 
	b IsrIRQ 
;	sub		sp,sp,#4		; 
;	stmfd	sp!,{r0}		; 
							; 
							; 
;	ldr		r0,=HandleIRQ	; 
;	ldr		r0,[r0]			; 
							; 
;	str		r0,[sp,#4]		; 
;	ldmfd	sp!,{r0,pc}		; 
	 
;*************************************************************** 
;FIQ中断异常入口 
;*************************************************************** 
HandlerFIQ 
	b . 
 
ResetHandler 
	 
;*************************************************************** 
;禁止中断并转到SVC模式 
;CPSR 
; 31  30  29  28             7     6     5      4      3      2      1      0 
; N   Z   C   V              I     F     T      M4     M3     M2     M1     M0 
; |   |   |   |              |     |     |      1      0      0      0      0     用户 
; |   |   |   |              |     |     |      1      0      0      0      1     FIQ 
; |   |   |   |              |     |     |      1      0      0      1      0     IRQ 
; |   |   |   |              |     |     |      1      0      0      1      1     SVC 
; |   |   |   |              |     |     |      1      0      1      1      1     中止 
; |   |   |   |              |     |     |      1      1      0      1      1     未定义 
; |   |   |   |              |     |     |      1      1      1      1      1     系统  
; |   |   |    --Overflow    |     |      --工作状态位      1:Thumb   0:ARM 
; |   |    ------Carry       |      --------FIQ中断禁止位   1:Disable 0:Enable 
; |    ----------Zero         --------------IRQ中断禁止位   1:Disable 0:Enable 
;  --------------Negative 
;                                                            
;*************************************************************** 
	mrs		r0,CPSR 
	bic		r0,r0,#0x1f		;清模式位 
	orr		r0,r0,#0x13		;设为SVC模式 
	orr		r0,r0,#0xc0     ;关IRQ和FIQ 
	msr		CPSR_cxsf,r0    ;启用新的CPSR 
	 
;*************************************************************** 
;禁止所有中断 
;*************************************************************** 
	ldr		r0,=rINTCON		; 
	ldr		r1,=0x07		;非矢量中断模式,关IRQ和FIQ 
	str		r1,[r0]			; 
	 
	ldr		r0,=rINTMSK		; 
	ldr		r1,=0x07ffffff	;关所有中断 
	str		r1,[r0]			; 
	 
;*************************************************************** 
;关看门狗 
;*************************************************************** 
	ldr		r0,=rWTCON		; 
	ldr		r1,=0x0			; 
	str		r1,[r0]			; 
	 
;*************************************************************** 
;配置cache 
;*************************************************************** 
	ldr		r0,=rSYSCFG		; 
	ldr		r1,=0x0e		; 
	str		r1,[r0]			; 
	 
	ldr		r0,=rNCACHBE0	; 
	ldr		r1,=0xb0000000	; 
	str		r1,[r0]			; 
	 
	ldr		r0,=rNCACHBE1	; 
	ldr		r1,=0xc000c000	; 
	str		r1,[r0]			; 
 
;*************************************************************** 
;配置PORT A,把PORT A配置为地址总线 
;ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0		       
;  1      1	     1      1      1      1      1	    1      1      1 
; 
;***************************************************************		 
	ldr		r0,=rPCONA		; 
	ldr		r1,=0x3ff		; 
	str		r1,[r0]			; 
 
;*************************************************************** 
;配置PORT B 
;nGCS0 - FLASH 
;nGCS1 - 74HC244 AND 74HC273 
;nGCS2 - CS8900A 
;nGCS3 - PDIUSBD12 
;nGCS4 - SEG7 
;nGCS5 -  
;nSCS6 - SDRAM 
; 
;nGCS5 nGCS4 nGCS3 nGCS2 nGCS1 nWBE3 nWBE2 nSRAS nSCAS SCLK SCKE 
;  1     1     1     1     1     1     1    1      1     1    1	 
; 
;*************************************************************** 
	ldr 	r0,=rPCONB		; 
	ldr		r1,=0x7ff		; 
	str		r1,[r0]			; 
	 
;*************************************************************** 
;配置PORT C 
;nCTS0 nRTS0 OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT VD4 VD5 VD6 VD7 IISCLK IISDI IISDO IISLRCK  
;  11    11    01     01     01     01     01     01   11  11  11  11    11    11    11    11    
; 
;*************************************************************** 
	ldr		r0,=rPCONC		; 
	ldr		r1,=0xf555ffff	; 
	str		r1,[r0]			; 
	 
	ldr		r0,=rPUPC		; 
	ldr		r1,=0x00ff		; 
	str		r1,[r0]			; 
	 
	ldr		r0,=rPDATC		; 
	ldr		r1,=0xeeff		; 
	str		r1,[r0]			; 
 
 
;*************************************************************** 
;配置PORT D 
;VFRAME VM   VLINE  VCLK   VD3   VD2   VD1   VD0 (LCD/MODE) 
;  10   10     10    10    10    10    10    10  
; 
;*************************************************************** 
	ldr		r0,=rPCOND		; 
	ldr		r1,=0xaaaa		; 
	str		r1,[r0]			; 
 
	ldr		r0,=rPUPD		; 
	ldr		r1,=0xff		; 
	str		r1,[r0]			; 
	 
;*************************************************************** 
;配置PORT E 
;CODECLK OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT TOUT0 RXD0 TXD0   FOUT OUT 
;   10      01     01     01     01     01     10     10     11 
 
;*************************************************************** 
	ldr		r0,=rPCONE		; 
	ldr		r1,=0x255ab		; 
	str		r1,[r0]			; 
 
	ldr		r0,=rPDATE		; 
	ldr		r1,=0x0f		; 
	str		r1,[r0]			; 
 
	ldr		r1,=rPUPE		; 
	ldr		r0,=0x0			;                 
	str		r0,[r1]			; 
 
;*************************************************************** 
;配置PORT F 
; 
;***************************************************************	 
	ldr		r0,=rPCONF		; 
	ldr		r1,=0x124be9	; 
	str		r1,[r0]			; 
 
	ldr		r0,=rPUPF		; 
	ldr		r1,=0xff		;	 
	str		r1,[r0]			;	 
	 
;*************************************************************** 
;配置PORT G 
; 
;*************************************************************** 
	ldr		r0,=rPCONG		; 
	ldr		r1,=0x57ff		;   
	str		r1,[r0]			; 
	 
	ldr		r0,=rPUPG		; 
	ldrb	r1,=0x00		;只装载一个字节 
	strb	r1,[r0]			; 
	 
;*************************************************************** 
;配置上拉电阻控制寄存器(SPUCR) 
;***************************************************************	 
	ldr		r0,=rSPUCR		; 
	ldrb	r1,=0x7			; 
	strb	r1,[r0]			;控制信号保持高阻状态,DATA[15;0]上拉电阻不允许 
	 
;*************************************************************** 
;配置外部中断控制寄存器(EXTINT) 
;*************************************************************** 
	ldr		r0,=rEXTINT		; 
	ldr		r1,=0x42422		; 
	str		r1,[r0]			; 
	 
	ldr		r0,=rINTMSK		; 
	ldr		r1,=0x7ffffff	; 
	str		r1,[r0]			; 
 
;*************************************************************** 
;配置时钟控制 
;*************************************************************** 
	ldr		r0,=rLOCKTIME	; 
    ldr		r1,=800			; 
    str		r1,[r0]			; 
 
   	ldr 	r0,=rPLLCON		; 
   	ldr		r1, =0x34031	;  
   	str		r1,[r0]			; 
   	ldr		r0,=rCLKCON		;		  
   	ldr		r1,=0x7ff8		;	     
   	str		r1,[r0]			; 
   	 
 
;*************************************************************** 
;配置存储器控制 
;*************************************************************** 
	ldr		r0,=rBWSCON		; 
   	ldr		r1,=0x11000100	; 
    str		r1,[r0] 		; 
     
    ldr		r0,=rBANKCON0	; 
    ldr		r1,=0x700		;     
    str		r1,[r0] 		; 
         
    ldr		r0,=rBANKCON1	; 
	ldr		r1,=0x700     	; 
	str		r1,[r0]			;        
		 
	ldr		r0,=rBANKCON2	; 
	ldr		r1,=0x700    	;  
	str		r1,[r0]			;        
		 
	ldr		r0,=rBANKCON3	; 
	ldr 	r1,=0x7568		; 
	str		r1,[r0]       	; 
	 
	ldr		r0,=rBANKCON4	; 
	ldr		r1,=0x700		; 
	str		r1,[r0]			;       
	  
	ldr		r0,=rBANKCON5	; 
	ldr		r1,=0x700		; 
	str		r1,[r0]			; 
	 
	ldr		r0,=rBANKCON6	; 
	ldr		r1,=0x18008		; 
	str		r1,[r0] 		; 
		       
	ldr		r0,=rBANKCON7	; 
	ldr		r1,=0x18000		; 
	str		r1,[r0] 		; 
	 
	ldr		r0,=rREFRESH	; 
	ldr		r1,=0xac03e1	; 
	str		r1,[r0]			;        
	 
	ldr		r0,=rBANKSIZE	; 
	ldr		r1,=0x16		; 
	str		r1,[r0]			;        
	 
	ldr		r0,=rMRSRB6		; 
	ldr		r1,=0x020		; 
	str		r1,[r0]			;        
	 
	ldr		r0,=rMRSRB7		; 
	ldr		r1,=0x020		; 
	str		r1,[r0]			; 
	 
;*************************************************************** 
;调用初始化堆栈 
;*************************************************************** 
	ldr		sp, =SVCStack	;	 
    bl		InitStacks		; 
;*************************************************************** 
;设置IRQ Handler 
;*************************************************************** 
;	ldr		r0,=HandleIRQ	; 
;	ldr		r1,=IsrIRQ		; 
;	str		r1,[r0]			; 
	 
;*************************************************************** 
;初始化RAM 
;                       -----------------------  ---- 
;                      |                       |   | 
;                      |-----------------------|   | 
;                      |                       |   | 
;                      |-----------------------|   R 
;                      |                       |   A 
;                      |-----------------------|   M 
;                      |                       |   | 
;                      |-----------------------|   | 
;                      |                       |   | 
;                      |=======================| ---- 
;                      |                       |   | 
;                      |-----------------------|   | 
;                      |                       |   | 
;                      |-----------------------|   | 
;                      |                       |   | 
;                      |-----------------------|   R 
;                      | Initialized RW Segment|   O 
;                      |-----------------------|   M 
;                      |       RO Segment      |   | 
;                       -----------------------  ---- 
;                            (Load View) 
; 
; 
; 
;                       -----------------------  ---- 
;                      |                       |   | 
;                      |-----------------------|   | 
;                      |                       |   | 
;                      |-----------------------|   R 
;Image$$ZI$$Limit      |                       |   A 
;Image$$RW$$Limit----> |-----------------------|   M 
;                      |    ZI Segment         |   | 
;Image$$ZI$$Base ----> |-----------------------|   | 
;                      | Initialized RW Segment|   | 
;Image$$RW$$Base ----> |=======================| ---- 
;                      |                       |   | 
;                      |-----------------------|   | 
;                      |                       |   | 
;                      |-----------------------|   | 
;                      |                       |   | 
;                      |-----------------------|   R 
;                      |                       |   O 
;Image$$RO$$Limit----> |-----------------------|   M 
;                      |       RO Segment      |   | 
;Image$$RO$$Base ---->  -----------------------  ---- 
;                            (Excute View) 
;***************************************************************	 
	ldr		r0,ImageZIBase	; 
	mov		r2,#0			; 
	ldr		r1,ImageZILimit	; 
	cmp		r0,r1			;比较ImageZIBase与ImageZILimit是否相等 
	beq		move_data		;如果相等就是说不用清零 
clear_loop 
	str		r2,[r0],#4		; 
	cmp		r0,r1			; 
	bne		clear_loop		; 
move_data 
	ldr		r0,ImageRWBase	; 
	ldr		r1,ImageROLimit	; 
	ldr		r2,ImageZIBase	; 
	cmp		r0,r2			;比较ImageRWBase与ImageZIBase是否相等 
	beq		goto_main		;如果相等说明RW段为零,即没有变量,则可进入主函数 
move_loop 
	ldr		r3,[r1],#4		;否则把Initialized RW Segment段拷到应有的位置 
	str		r3,[r0],#4		; 
	cmp		r0,r2			; 
	bne		move_loop		; 
 
 
;*************************************************************** 
;进入C语言主函数 
;*************************************************************** 
goto_main 
	b		Main			; 
 
;*************************************************************** 
;初始化堆栈过程 
;*************************************************************** 
InitStacks 
	mrs		r0,cpsr						;					 
    bic		r0,r0,#0x1f					; 
    										 
    orr		r1,r0,#UNDEFMODE|NOINT		; 
	msr		cpsr_cxsf,r1				;				 
	ldr		sp,=UndefStack				; 
	 
	orr		r1,r0,#ABORTMODE|NOINT   	; 
	msr		cpsr_cxsf,r1				; 	    	 
	ldr		sp,=AbortStack				;			 
 
	orr		r1,r0,#IRQMODE|NOINT		; 
	msr		cpsr_cxsf,r1 	    		; 
	ldr		sp,=IRQStack				;              
 
	orr		r1,r0,#FIQMODE|NOINT		; 
	msr		cpsr_cxsf,r1 	    		; 
	ldr		sp,=FIQStack				;              
 
	bic		r0,r0,#MODEMASK|0x80		; 
	orr		r1,r0,#SVCMODE				; 
	msr    	cpsr_cxsf,r1				; 
	ldr		sp,=SVCStack				;      	 
    	 
	mov		pc,lr						; 
	  
	  
;*************************************************************** 
;中断分发函数 
;*************************************************************** 
IsrIRQ 
;	sub		lr,lr,#4		; 
;	stmfd	sp!,{lr}		; 
;	stmfd	sp!,{r0-r4}		; 
	sub	    sp,sp,#4		; 
	stmfd   sp!,{r8-r9}		; 
	ldr     r9,=rI_ISPR    	; 
	ldr     r9,[r9]  	  	; 
	cmp	    r9, #0x0   		; 
	beq		%F2				; 
	mov		r8,#0x0			; 
0 
	movs	r9,r9,lsr #1	; 
	bcs		%F1				; 
	add		r8,r8,#4		; 
	b		%B0				; 
1 
	ldr		r9,=HandleADC	; 
	add		r9,r9,r8		; 
	ldr		r9,[r9]			; 
	str		r9,[sp,#8]		; 
;	mov		lr,pc			; 
	ldmfd	sp!,{r8-r9,pc}	; 
;	ldmfd	sp!,{r0-r4,pc}^	; 
2 
	ldmfd	sp!,{r8-r9}		; 
	add		sp,sp,#4		; 
	sub		lr,lr,#4 
	mov 	pc,lr 
;	ldmfd	sp!,{r0-r4,pc}^	; 
;************************************ 
;暂时的中断分发函数,只响应timer0中断,如果有其他中断就直接返回 
;IsrIRQ 
;	        stmfd   sp!,{r8-r9}    ;/* save r8-r9           */    
;       ldr     r9,=rI_ISPR     ;/* distribute the irq   */ 
;        ldr     r9,[r9]     
;        cmp	    r9, #0x0    
;        beq	    i2		        
;        mov     r8,#0x0         
;i0                            ;/* check every bit      */ 
;        movs    r9,r9,lsr #1	 
;        bcs     i1				 
;        add     r8,r8,#4		 
;        b       i0			  ; /* next bit             */ 
;i1                            ;/* one interrupt trigged*/ 
;        ldr     r9,=HandleADC  ;/* isr vector base address    */ 
;        add     r9,r9,r8	   ;/* compute the offset         */ 
;        ldr     r8,=HandleTIMER0 
;        cmp     r9, r8 
;        beq     i3 
;        ldr     r9,[r9]        ;/* obtain the isr address     */ 
;        stmfd   sp!,{lr}       ;/* save lr           */    
;        mov     lr,pc          ;/* return to 'ldmfd   sp!,{r0-r4, pc}^' */ 
;        mov     pc,r9 
;        ldmfd   sp!,{lr}	;/* restore r8-r9, call isr and return  */ 
;        ldmfd   sp!,{r8-r9} 
;        subs    pc, lr, #4 ;/* restore r0-r4 and return */ 
;i2         
;        ldmfd	sp!,{r8-r9}     ;/* restore the r8-r9 */ 
;        subs    pc, lr, #4 ;/* restore r0-r4 and return */ 
;i3 
;		ldmfd	sp!,{r8-r9}     ;/* restore the r8-r9 */ 
;		b OSTickISR    	 
		 
 
;*************************************************************** 
;定义变量 
;*************************************************************** 
ImageROBase		DCD	|Image$$RO$$Base| 
ImageROLimit	DCD	|Image$$RO$$Limit| 
ImageRWBase		DCD	|Image$$RW$$Base| 
ImageRWLimit	DCD |Image$$RW$$Limit| 
ImageZIBase		DCD	|Image$$ZI$$Base| 
ImageZILimit	DCD	|Image$$ZI$$Limit|	    	 
	END