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

📄 startup.s

📁 UCOS在ARM7TDMI上的移植。与它的官方版不同的是
💻 S
字号:
;--------------------------------------------------------------------------
;
;       File name    : startup.s
;       Project      : TC35610
;
;	Ver.1.0: 2005-03-10  by TSB(TsuS1)
;	TOSHIBA CONFIDENTIAL
;--------------------------------------------------------------------------
	IMPORT	os_Main
	IMPORT	OS_CPU_IRQ_ISR

Mode_USR	EQU	0x10	
Mode_FIQ	EQU	0x11	
Mode_IRQ	EQU	0x12	
Mode_SVC	EQU	0x13	
Mode_ABT	EQU	0x17	
Mode_UND	EQU	0x1b	
Mode_SYS	EQU	0x1f	

I_Bit		EQU	0x80
F_Bit		EQU	0x40
T_Bit		EQU	0x20

P0_FUNC_ADDR	EQU	0x00100b02
P0_FUNC_SET		EQU	0x01

nBBPDOWN_ADR	EQU	0x00100680
nBBPDOWN_SET	EQU	0x01




        AREA    Vectors, CODE, READONLY
        ENTRY

        CODE16
_RES	LDR	r0,=_Start	;Reset
	BX	r0
	ALIGN
	CODE32
;_RES	B _Start	;Reset
; --- Real vector table ----------
;	B	_Start		;Reset
_UND	B	_UND		;Undef
_SWI	B	_SWI	 	;SWI
_PAB	B	_PAB		;Program abort
_DAB	B	_DAB		;Data abort
_EXP	B	_EXP		;Address exception
_IRQ	B	OS_CPU_IRQ_ISR		;Irq interrupt
_FIQ	B	_FIQ		;Fiq interrupt


; --- Start Reset Program --------
_Start
;POWERHOLD pin OUTPUT HIGH
	ldr r1,	=nBBPDOWN_ADR
	ldr r0, =nBBPDOWN_SET
	strb r0, [r1,#0]			;POWERHOLD 输出高电平;

;nMPCS0 output enable. because RAM are controled by it
	ldr r1,	=P0_FUNC_ADDR
	ldr r0, =P0_FUNC_SET
	strb r0, [r1,#0]			;mMPCS0作为RAM的片选信号;

;the stack in each mode set up
;FIQ MODE
	mov r0, #Mode_FIQ:OR:I_Bit:OR:F_Bit
	msr cpsr_c, r0		
	ldr r13, =DummyStackBase
	
;ABT MODE
	mov r0, #Mode_ABT:OR:I_Bit:OR:F_Bit
	msr cpsr_c, r0		
	ldr r13, =DummyStackBase
	
;UND MODE
	mov r0, #Mode_UND:OR:I_Bit:OR:F_Bit
	msr cpsr_c, r0		
	ldr r13, =DummyStackBase
	
;SVC MODE
	mov r0, #Mode_SVC:OR:I_Bit:OR:F_Bit
	msr cpsr_c, r0		
	ldr r13, =DummyStackBase
	
;IRQ MODE
	mov r0, #Mode_IRQ:OR:F_Bit
	msr cpsr_c, r0		
	ldr r13, =IRQStackBase

;now enter sys mode, the os run in this mode. statck is set to small size,
;because when os run, each task will have their own statck
;SYS MODE
	mov r0, #Mode_SYS:OR:F_Bit
	msr cpsr_c, r0		
	ldr r13, =SYSStackBase
	



	B	os_Main
	
_FOREVER
	B	_FOREVER



        AREA    Stacks, DATA, READWRITE
        ALIGN
        %       0x040                     ; words for SVC stack
DummyStackBase
        %       0x0100                     ; words for IRQ stack
IRQStackBase
        %       0x040                     ; words for SYS stack
SYSStackBase


        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -