📄 init.s
字号:
;/*************************************************************************/ ;/* */ ;/* FILE NAME */ ;/* */ ;/* init.s */ ;/* */ ;/* VERSION */ ;/* 1.0 */ ;/* */ ;/* COMPONENT */ ;/* */ ;/* IN - Initialization */ ;/* */ ;/* DESCRIPTION */ ;/* */ ;/* This file contains the initialization code. */ ;/* User selectable defines are also defined here. */ ;/* */ ;/* DATA STRUCTURES */ ;/* */ ;/* NONE */ ;/* */ ;/* FUNCTIONS */ ;/* */ ;/* NONE */ ;/* */ ;/* DEPENDENCIES */ ;/* */ ;/* NONE */ ;/* */ ;/* HISTORY */ ;/* */ ;/* NAME DATE REMARKS */ ;/* */ ;/* M. De Martino 05.10.27 */;/* */ ;/*************************************************************************/ PRESERVE8;/*************************************************************************/;/* INCLUDE FILE AND EXTERNAL INCLUSIONS */;/*************************************************************************/ INCLUDE platform_defs.s IMPORT mymain IMPORT __main EXPORT __rt_entry;/*************************************************************************/;/* DEFINES */;/*************************************************************************/;/*************************************************************************/;/* GLOABAL VARIABLE DECLARATIONS */;/*************************************************************************/ AREA INT_DATA, DATA, READWRITE ;/*************************************************************************/;/* INTERRUPT TABLES */;/*************************************************************************/ AREA INT_ZI, BSS, READWRITE;/*************************************************************************/;/* LOCAL VARIABLE DECLARATIONS */;/*************************************************************************/ AREA INT_CODE, CODE, READONLY ;// --- ensure no functions that use semihosting SWIs are linked in from the C library IMPORT __use_no_semihosting_swi IMPORT init_system LDR pc,INT_Initialize_AddrINT_Initialize_Addr DCD INT_Initialize ;//-----------------------------------------------;// HEAP DEFINITION;//----------------------------------------------- IMPORT |Image$$HEAP$$ZI$$Base| IMPORT |Image$$HEAP$$ZI$$Length| IMPORT |Image$$HEAP$$ZI$$Limit|HEAP_Base_Ptr DCD |Image$$HEAP$$ZI$$Base|HEAP_Limit_Ptr DCD |Image$$HEAP$$ZI$$Limit| HEAP_Length DCD |Image$$HEAP$$ZI$$Length| EXPORT HEAP_Base_Ptr EXPORT HEAP_Limit_Ptr EXPORT HEAP_Length;//-----------------------------------------------;// USR STACK DEFINITION;//----------------------------------------------- IMPORT |Image$$USR_STACK$$ZI$$Base| IMPORT |Image$$USR_STACK$$ZI$$Length| IMPORT |Image$$USR_STACK$$ZI$$Limit| USR_STACK_Top_Ptr DCD |Image$$USR_STACK$$ZI$$Limit|USR_STACK_Limit_Ptr DCD |Image$$USR_STACK$$ZI$$Base| USR_STACK_Length DCD |Image$$USR_STACK$$ZI$$Length| EXPORT USR_STACK_Top_Ptr EXPORT USR_STACK_Limit_Ptr EXPORT USR_STACK_Length ;//-----------------------------------------------;// SVC STACK DEFINITION;//----------------------------------------------- IMPORT |Image$$SVC_STACK$$ZI$$Base| IMPORT |Image$$SVC_STACK$$ZI$$Length| IMPORT |Image$$SVC_STACK$$ZI$$Limit| SVC_STACK_Top_Ptr DCD |Image$$SVC_STACK$$ZI$$Limit|SVC_STACK_Limit_Ptr DCD |Image$$SVC_STACK$$ZI$$Base| SVC_STACK_Length DCD |Image$$SVC_STACK$$ZI$$Length| EXPORT SVC_STACK_Top_Ptr EXPORT SVC_STACK_Limit_Ptr EXPORT SVC_STACK_Length ;//-----------------------------------------------;// IRQ STACK DEFINITION;//----------------------------------------------- IMPORT |Image$$IRQ_STACK$$ZI$$Base| IMPORT |Image$$IRQ_STACK$$ZI$$Length| IMPORT |Image$$IRQ_STACK$$ZI$$Limit| IRQ_STACK_Top_Ptr DCD |Image$$IRQ_STACK$$ZI$$Limit|IRQ_STACK_Limit_Ptr DCD |Image$$IRQ_STACK$$ZI$$Base| IRQ_STACK_Length DCD |Image$$IRQ_STACK$$ZI$$Length| EXPORT IRQ_STACK_Top_Ptr EXPORT IRQ_STACK_Limit_Ptr EXPORT IRQ_STACK_Length;//-----------------------------------------------;// FIQ STACK DEFINITION;//----------------------------------------------- IMPORT |Image$$FIQ_STACK$$ZI$$Base| IMPORT |Image$$FIQ_STACK$$ZI$$Length| IMPORT |Image$$FIQ_STACK$$ZI$$Limit| FIQ_STACK_Top_Ptr DCD |Image$$FIQ_STACK$$ZI$$Limit|FIQ_STACK_Limit_Ptr DCD |Image$$FIQ_STACK$$ZI$$Base| FIQ_STACK_Length DCD |Image$$FIQ_STACK$$ZI$$Length| EXPORT FIQ_STACK_Top_Ptr EXPORT FIQ_STACK_Limit_Ptr EXPORT FIQ_STACK_Length ;//-----------------------------------------------;// Entry point;//----------------------------------------------- EXPORT Reset_HandlerReset_Handler EXPORT INT_InitializeINT_Initialize;// -----------------------------------------------;// Map to 0x0 the RAM-A or EXP-RAM;// ----------------------------------------------- ;LDR r0,=GCR_BASE_ADDRR ;LDR r1,[r0] ;BIC r1,r1,#0x3 ;ORR r1,r1,#0x8000 ;STR r1,[r0] ;//ORR r1,r1,#0x2 ;//EXP-RAM ;ORR r1,r1,#0x1 ;//RAM-A ;STR r1,[r0] ;BIC r1,r1,#0x8000 ;STR r1,[r0];// -----------------------------------------------;// SET THE STACK POINTERS;// ----------------------------------------------- MSR CPSR_c, #FIQ32md LDR sp,FIQ_STACK_Top_Ptr MSR CPSR_c, #IRQ32md LDR sp,IRQ_STACK_Top_Ptr MSR CPSR_c, #SVC32md LDR sp,SVC_STACK_Top_Ptr;// This is bad position for call init_system;// because __main will reset to 0 SVC and IRQ Stack Pointer;// Variable;BB060706 Initialize copies of stack pointer in OS 20; LDR r0,SVC_STACK_Top_Ptr; LDR r1,IRQ_STACK_Top_Ptr; BL init_system B __main__rt_entry;// -----------------------------------------------;// SET USER STACK POINTER;// ----------------------------------------------- ;;MM231106 Initialize copies of stack pointer in OS 20 LDR r0,SVC_STACK_Top_Ptr LDR r1,IRQ_STACK_Top_Ptr BL init_system MSR CPSR_c, #Usr32md LDR sp,USR_STACK_Top_Ptr BL mymain END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -