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

📄 boot.s

📁 《嵌入式网络系统设计-基于Atmel ARM7 系列》这个本书的光盘资料
💻 S
字号:
;--------------------------------------------------------------------------------------------------
;							- AT91SAM7x256启动程序 - 作者:焦海波 - 
;--------------------------------------------------------------------------------------------------
;- 文件名称 : cstartup.s
;- 功能描述 : 这是启动代码文件,其主要为系统各个处理模式分配堆栈,建立SWI系统调用
;-   版本 : V0.1
;- 建立时间 : 2007/02/22 18:34
;--------------------------------------------------------------------------------------------------
						INCLUDE		at91sam7x256/include/AT91SAM7X256.inc
						INCLUDE		arm7tdmi/include/arm.inc
;--------------------------------------------------------------------------------------------------
;- 仅本文件使用的一些宏定义
;--------------------------------------------------------------------------------------------------
AT91C_SRAM_AFTER_REMAP	EQU		0x0
	
;- 系统各内核模式使用的堆栈,注意这是重映射指令之后的堆栈分配
IRQ_STACK_SIZE      	EQU     (256 * 4)
FIQ_STACK_SIZE	    	EQU	    (16 * 4)
ABT_STACK_SIZE      	EQU     (16 * 4)
UND_STACK_SIZE      	EQU     (16 * 4)

;--------------------------------------------------------------------------------------------------
;- 代码区
;--------------------------------------------------------------------------------------------------
					AREA        Startup, CODE, READONLY
					ENTRY
					EXPORT		SYSEntry
					
SYSEntry
;--------------------------------------------------------------------------------------------------
;- 应用系统初始化函数
;--------------------------------------------------------------------------------------------------
		IMPORT	vLowLevelInit										

		LDR     R13, = (AT91C_SRAM_AFTER_REMAP+AT91C_ISRAM_SIZE)	
        BL      vLowLevelInit
;------------------------------------------------------------------------------
;- 为各种内核模式分配堆栈
;------------------------------------------------------------------------------
		LDR     R0, = (AT91C_SRAM_AFTER_REMAP + AT91C_ISRAM_SIZE)

;- FIQ模式
		MSR     CPSR_c, #ARM_MODE_FIQ:OR:I_BIT:OR:F_BIT
		MOV     R13, R0
		SUB     R0, R0, #FIQ_STACK_SIZE

;- IRQ模式
		MSR     CPSR_c, #ARM_MODE_IRQ:OR:I_BIT:OR:F_BIT
		MOV     R13, R0
		SUB     R0, R0, #IRQ_STACK_SIZE

;- 异常终止模式
		MSR     CPSR_c, #ARM_MODE_ABORT:OR:I_BIT:OR:F_BIT
		MOV     R13, R0
		SUB     R0, R0, #ABT_STACK_SIZE

;- 未定义指令模式
		MSR     CPSR_c, #ARM_MODE_UNDEF:OR:I_BIT:OR:F_BIT
		MOV     R13, R0
		SUB     R0, R0, #UND_STACK_SIZE

;- 管理模式
		MSR     CPSR_c, #ARM_MODE_SVC
		MOV     R13, R0
;------------------------------------------------------------------------------
;- 进入C程序
;------------------------------------------------------------------------------
		IMPORT	CMain

		LDR		R0, =CMain
		MOV		LR, PC
		BX		R0

End
        B       End

;------------------------------------------------------------------------------
;- 运行在RAM中的各个系统函数的入口函数,它们完成各自相应函数的调用
;------------------------------------------------------------------------------		
;- 首先定义一个系统调用宏,负责完成系统函数的调用		
		MACRO
		__macSYSCaller $NUM
		STMFD	SP!, {LR}
		SWI		$NUM
		LDMFD	SP!, {LR}
		BX		LR
		MEND
		
;- 各系统函数的入口函数
		EXPORT	DFL_IsLockedPage
		EXPORT	DFL_PageLock		
		EXPORT	DFL_PageUnlock
		EXPORT	DFL_WriteFlash
		EXPORT	DFL_WriteAndLockFlash
		EXPORT	DFL_EraseAllFlash
		EXPORT	DFL_SetNVM
		EXPORT	DFL_ClearNVM
		
DFL_IsLockedPage
		__macSYSCaller	0
		
DFL_PageLock
		__macSYSCaller	1
		
DFL_PageUnlock
		__macSYSCaller	2
		
DFL_WriteFlash
		__macSYSCaller	3
		
DFL_WriteAndLockFlash
		__macSYSCaller	4
		
DFL_EraseAllFlash
		__macSYSCaller	5
		
DFL_SetNVM
		__macSYSCaller	6
		
DFL_ClearNVM
		__macSYSCaller	7

    			END
        

⌨️ 快捷键说明

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