startup.s

来自「ucos2.85移植LPC2104的接口和原代码」· S 代码 · 共 97 行

S
97
字号
FIQ_STACK_LEGTH     EQU         32
IRQ_STACK_LEGTH     EQU         64
ABT_STACK_LEGTH     EQU         0
UND_STACK_LEGTH     EQU         0
SYS_STACK_LEGTH     EQU         64
VICVectAddr         EQU         0xFFFFF030

		IMPORT  OS_CPU_IRQ_ISR
        IMPORT  OSIntCtxSw                      
        IMPORT  OSIntExit                      
        IMPORT  OSTCBCur                        
        IMPORT  OSTCBHighRdy                    
        IMPORT  OSIntNesting     
        IMPORT  __main
        IMPORT  TargetResetInit
        IMPORT  OS_CPU_TIMETICK
        
        EXPORT  __rt_div0
        EXPORT  __user_initial_stackheap
        EXPORT  Vectors
                       
    CODE32
	PRESERVE8
    AREA    startup,CODE,READONLY
    ENTRY
Vectors
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80
        LDR     PC, IRQ_Addr
        LDR     PC, FIQ_Addr

ResetAddr           DCD     Reset
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterrupt
PrefetchAddr        DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
nouse               DCD     0
IRQ_Addr            DCD     OS_CPU_IRQ_ISR
FIQ_Addr            DCD     FIQ_Handler

Undefined
        B       Undefined
PrefetchAbort
        B      	PrefetchAbort
DataAbort
        B      	DataAbort
SoftwareInterrupt
		B      	Reset
FIQ_Handler
		B		OS_CPU_TIMETICK
		
InitStack    
        MOV     R0, LR
        MSR     CPSR_c, #0xd2
        LDR     SP, StackIrq
        MSR     CPSR_c, #0xd1
        LDR     SP, StackFiq
        MSR     CPSR_c, #0xd7
        LDR     SP, StackAbt
        MSR     CPSR_c, #0xdb
        LDR     SP, StackUnd
        MSR     CPSR_c, #0xdf
        LDR     SP, StackSys
        MOV     PC, R0

Reset 
		BL		InitStack
		BL      TargetResetInit
		B       __main

__user_initial_stackheap    
    	LDR   	R0,=bottom_of_heap
    	MOV   	PC,LR
    
__rt_div0
		B		__rt_div0
		
StackIrq           DCD     (IrqStackSpace + IRQ_STACK_LEGTH * 4 - 4)
StackFiq           DCD     (FiqStackSpace + FIQ_STACK_LEGTH * 4 - 4)
StackAbt           DCD     (AbtStackSpace + ABT_STACK_LEGTH * 4 - 4)
StackUnd           DCD     (UndtStackSpace + UND_STACK_LEGTH * 4 - 4)
StackSys		   DCD     (SysStackSpace + SYS_STACK_LEGTH * 4 - 4)

        AREA    Myheap, DATA, NOINIT, ALIGN=2
bottom_of_heap     SPACE   256
IrqStackSpace      SPACE   IRQ_STACK_LEGTH * 4  
FiqStackSpace      SPACE   FIQ_STACK_LEGTH * 4  
AbtStackSpace      SPACE   ABT_STACK_LEGTH * 4  
UndtStackSpace     SPACE   UND_STACK_LEGTH * 4  
SysStackSpace      SPACE   SYS_STACK_LEGTH * 4

    END

⌨️ 快捷键说明

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