?? 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 + -