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

📄 init.s

📁 4510简单例子程序(转载)
💻 S
字号:
;;; Copyright ARM Ltd 2001. All rights reserved.
;
; This module performs ROM/RAM remapping (if required), initializes stack 
; pointers and interrupts for each mode, and finally branches to __main in 
; the C library (which eventually calls main()).
;
; On reset, the ARM core starts up in Supervisor (SVC) mode, in ARM state, 
; with IRQ and FIQ disabled.


; --- Standard definitions of mode bits and interrupt (I & F) flags in PSRs


        AREA    Init, CODE, READONLY
		CODE32
		GET snds.s
		
        ENTRY

;disable interrupts in CPU and switch to SVC32 mode
start
	MRS	r0, cpsr
	BIC	r0, r0, #MASK_MODE
	ORR	r0, r0, #MODE_SVC32
	ORR r0, r0, #I_BIT
	ORR r0, r0, #F_BIT
	MSR	cpsr_c, r0
;disable individual interrupts in the interrupt controller

	LDR	r2, =ARM7_INTMASK			 ;R2->interrupt controller
	MVN	r1, #0						 ;&FFFFFFFF
	STR	r1, [r2]					 ;disable all interrupt soucres

	LDR	r2, =ARM7_INTPEND			 ;R2->interrupt pend register.
	MVN	r1, #0						 ;&FFFFFFFF
	STR	r1, [r2]					 ;clear all interrupt flags.

SYNC_DRAM
	LDR	r0, =ARM7_SYSCFG			;ARM7_SYSCFG=0x03ff0000
	LDR	r1, =0x87ffff90				;config syscofig register.
	STR	r1, [r0] 					;Cache,WB disable

;ROM and RAM Configuration(Multiple Load and Store).  Multiple load
;LDMIA instruction cannot be used as there is no way to load the
;address L$_SystemInitDataSDRAM into a register (LDR Rn,=sym is broken)
 

	LDR	r1, =rEXTDBWTH   ;根据snd100.h中的宏定义,初始化sysconfig,总线宽度及各组sdram和rom*/
	LDR	r2, =rROMCON0    ;配置bootrom地址从0开始,sdram从16M开始
	LDR	r3, =rROMCON1
	LDR	r4, =rROMCON2
	LDR	r5, =rROMCON3
	LDR	r6, =rROMCON4
	LDR	r7, =rROMCON5
	LDR	r8, =rSDRAMCON0
	LDR	r9, =rSDRAMCON1
	LDR	r10,=rSDRAMCON2
	LDR	r11,=rSDRAMCON3
	LDR	r12,=rSREFEXTCON
	LDR	r0, =ARM7_EXTDBWTH		 			; Extdbwth Offset : 0x3010
;	STMIA	r0, {r1-r12}
 
                                    
; Initialize the stack pointer to just before where the
; uncompress code, copied from ROM to RAM, will run.
	
	LDR	sp, =STACK_STAR_ADDR       			;设置堆栈起始地址在cofigall.h中定义的位置(本案为1M处)
	MOV	fp, #0								;zero frame pointer

;jump to C entry point in ROM: routine - entry point + ROM base */;
    IMPORT  C_ENTRY
;    B      C_Entry
;     BL     C_Entry
	LDR	pc, =C_ENTRY       ;跳到C代码入口.
        END

⌨️ 快捷键说明

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