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

📄 entry.s

📁 from wangkj@yahoo.com 电路原理图和详细说明: amd.9966.org或者 arm.9966.org 都是原创,包括boot, loader,u-boot,linu
💻 S
字号:
#include <at91rm9200dk.h>		.text		.align#define STACK             0x22000000/* ------------------------ List of Exported resources -------------------------*/		.globl	__entry,_entry		.globl	__stext,_stext		.globl _start,start		/*------------------------------------------------------------------------------*//*  Define the vector table.*//*  The reset vector jumps to the handler code.*//*  All others just dead loop on themselves!*//*------------------------------------------------------------------------------*//*------------------------------------------------------------------------------*//*    InitReset. This code is executed with the FLASH at address 0.*//*------------------------------------------------------------------------------*/startoftext:rstvec:                B           InitReset undefvec:                B           undefvec swivec:                B           swivec   pabtvec:                B           pabtvec  dabtvec:                B           dabtvec  rsvdvec:                B           rsvdvec  irqvec:                ldr         pc, [pc,#-0xF20]        fiqvec:                ldr         pc, [pc,#-0xF20]       #-------------------#- The reset handler#-------------------InitReset:# Get the CKGR Base Address	ldr     r1, = AT91C_BASE_CKGR		#-Main oscillator Enable register	APMC_MOR : Enable main oscillator , OSCOUNT = 0xFF#	ldr 	r0, = AT91C_CKGR_MOSCEN:OR:AT91C_CKGR_OSCOUNT	ldr 	r0, =0x0000FF01	str     r0, [r1, #CKGR_MOR]#------------------------------------------------------------------------------#-Low level Init (PMC, AIC, EBI, ....)#------------------------------------------------------------------------------#- Add loop to compensate Main Oscillator startup time	ldr 	r0, =0x00000010LoopOsc:	subs    r0, r0, #1              	bhi     LoopOsc		ldr 	r1, = 0x00204000	#- Set up Supervisor Mode and set SVC Stack	msr     cpsr_c, #(ARM_MODE_SVC | I_BIT | F_BIT)# Insure word alignement	bic     r1, r1, #3                  # Init stack SYS		mov     sp, r1                      		bl AT91F_LowLevelInit#-------------------------------------# Read/modify/write CP15 control register #-------------------------------------# read cp15 control registre (cp15 r1) in r0    mrc     p15, 0, r0, c1, c0, 0# Reset bit :Little Endian end fast bus mode    ldr     r3, =0xC0000080      # Set bit :Asynchronous clock mode, Not Fast Bus    ldr     r4, =0xC0000000          bic     r0, r0, r3                 orr     r0, r0, r4             # write r0 in cp15 control registre (cp15 r1)    mcr     p15, 0, r0, c1, c0, 0     #---------------------------------#- Setup the stack for each mode#---------------------------------   ldr		r0, =STACK#- Set up Fast Interrupt Mode and set FIQ Mode Stack	msr     CPSR_c, #(ARM_MODE_FIQ | I_BIT | F_BIT)# Init stack FIQ	mov     r13, r0                      	sub     r0, r0, #FIQ_STACK_SIZE#- Set up Interrupt Mode and set IRQ Mode Stack	msr     CPSR_c, #(ARM_MODE_IRQ | I_BIT | F_BIT)# Init stack IRQ	mov     r13, r0                     	sub     r0, r0, #IRQ_STACK_SIZE #- Set up Abort Mode and set Abort Mode Stack	msr     CPSR_c, #(ARM_MODE_ABORT | I_BIT | F_BIT)# Init stack Abort	mov     r13, r0	sub     r0, r0, #ABT_STACK_SIZE#- Set up Undefined Instruction Mode and set Undef Mode Stack	msr     CPSR_c, #(ARM_MODE_UNDEF | I_BIT | F_BIT)# Init stack Undef	mov     r13, r0 	sub     r0, r0, #UND_STACK_SIZE#- Set up Supervisor Mode and set Supervisor Mode Stack	msr     CPSR_c, #(ARM_MODE_SVC | I_BIT | F_BIT)# Init stack Sup	mov     r13, r0#------------------------------------------------------------------------------#- Branch on C code Main function (with interworking)#----------------------------------------------------#- Branch must be performed by an interworking call as either an ARM or Thumb #- main C function must be supported. This makes the code not position-#- independant. A Branch with link would generate errors #------------------------------------------------------------------------------ 		b _main#------------------------------------------------------------------------------#- Loop for ever#---------------#- End of application. Normally, never occur.#- Could jump on Software Reset ( B 0x0 ).#------------------------------------------------------------------------------End:	b           End

⌨️ 快捷键说明

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