📄 startup.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 + -