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

📄 init.s

📁 展讯SC6600D例程
💻 S
字号:
;Copyright Spreadtrum 2005, All rights reserved.
;2005-11-11
;
;This is the example of reset handler.
;It mainly does the flowing operations:
;1. Initializes stack pointers and interrupt for each mode.
;2. Branch to __main in C library.(__main initializes C lib and calls main()).
; 
;On reset, the ARM core starts up in supervistor(SVC) mode, 
; in ARM state, with IRQ and FIQ disabled.
;
;
;
;Import __main.

	IMPORT __main
;
;	
;Export reset handler.

	EXPORT SCI_HandleReset

;
;Const data define.
USER_MODE	EQU	0xD0
FIQ_MODE	EQU	0x11
IRQ_MODE	EQU	0x12
SVC_MODE	EQU	0x13
ABT_MODE	EQU	0xD7
UND_MODE	EQU	0xDB
SYS_MODE	EQU	0xDF

I_Bit		EQU 0x80	; When I bit is set, IRQ is disabled
F_Bit		EQU 0x40	; When F bit is set, FIQ is disabled

;Disable IRQ
INT_IRQ_DISABLE_ADDR	EQU	0x8000000C
INT_IRQ_DISABLE_VALUE	EQU	0xFFFFFFFF
;
;Disable FIQ
INT_FIQ_DISABLE_ADDR	EQU	0x8000002C
INT_FIQ_DISABLE_VALUE	EQU	0xFFFFFFFF
;
;Set external memory access time to max value.
EXT_MEM_CTL0_ADDR		EQU	0x20000000
EXT_MEM_CTL0_VALUE		EQU	0x08026708
;
;
;System RAM locations
RAM_Limited		EQU	0x04080000
FIQ_STACK		EQU RAM_Limited
IRQ_STACK		EQU FIQ_STACK - 256
ABT_STACK		EQU IRQ_STACK - 256
UND_STACK		EQU ABT_STACK - 256
SYS_STACK		EQU UND_STACK - 256
SVC_STACK		EQU SYS_STACK - 256

	AREA ResetHandler, CODE, READONLY
	CODE32
	ENTRY
	
SCI_HandleReset
;
;Disable IRQ
	LDR	R0, =INT_IRQ_DISABLE_ADDR
	LDR R1, =INT_IRQ_DISABLE_VALUE
	STR R1, [R0]
;
;Disable FIQ
	LDR	R0, =INT_FIQ_DISABLE_ADDR
	LDR R1, =INT_FIQ_DISABLE_VALUE
	STR R1, [R0]	
;
;Set external memory access time to max value.
	LDR	R0, =EXT_MEM_CTL0_ADDR
	LDR R1, =EXT_MEM_CTL0_VALUE
	STR R1, [R0]	
;
;Initializes stack pointers and interrupt for each mode.
;Disable IRQ and FIQ
;
;FIQ Mode
	MSR	CPSR_c, #FIQ_MODE:OR:I_Bit:OR:F_Bit
	LDR SP, =FIQ_STACK
;
;IRQ Mode
	MSR	CPSR_c, #IRQ_MODE:OR:I_Bit:OR:F_Bit
	LDR SP, =IRQ_STACK	
;
;ABT Mode
	MSR	CPSR_c, #ABT_MODE
	LDR SP, =ABT_STACK
;
;UND Mode
	MSR	CPSR_c, #UND_MODE
	LDR SP, =UND_STACK
;
;SYS Mode
	MSR	CPSR_c, #SYS_MODE
	LDR SP, =SYS_STACK		
;		
;SVC Mode
	MSR	CPSR_c, #SVC_MODE:OR:I_Bit:OR:F_Bit
	LDR SP, =SVC_STACK		
;
;Branch to __main in C library.(__main initializes C lib and calls main()).
	B 	__main

    END

⌨️ 快捷键说明

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