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

📄 sutupstart.s

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 S
字号:
;/************************************************************************************************
;定义系统中断向量表以及相应代码.
;07-11-12,huangsl,用于安装的 向量表.
;080325,huangsl,增加非法处理.
;/************************************************************************************************
		
			INCLUDE CONDEFINE.s
		
;/*******************************************************************************************************
;** IMPORT LABELS 引用外部标号的声明
;********************************************************************************************************/
     
;/*******************************************************************************************************
;** EXPORT LABELS 输出内部标号供外部使用的声明
;********************************************************************************************************/      
		
    	EXPORT  SystemReset
    	EXPORT  OSDisableInt 
			EXPORT  OSEnableInt 
			IMPORT  gSetupStack
			IMPORT  gSetupStackBotton
			IMPORT	SetupCrashHandler	;080325,HUANGSL,for setup crash.
			
	CODE32
	
	AREA   |RESET|, CODE, READONLY

;中断向量表入口.
;/************************************************************************************************
SystemReset
    	LDR     PC, ResetAddr		;跳到入口函数.
UndefinedAddr 
			LDR			PC,DBG_Addr           
  		;MOVS 	PC , LR						;直接返回
SwiAddr
			LDR			PC,DBG_Addr    
			;MOVS 	PC , LR						;直接返回
PrefetchAddr  
			LDR			PC,DBG_Addr          
    	;SUBS		PC , LR , #4		;直接返回
DataAbortAddr  
			LDR			PC,DBG_Addr          
   		;SUBS		PC , LR , #4 ; #8		;直接返回
ReservdAddr  
			LDR			PC,DBG_Addr          
      ;MOVS 	PC , LR 					;直接返回
       
IRQAddr
		LDR     PC, IRQ_Addr
	  ;SUBS		PC , LR , #4 			;直接返回
	   	
FIQAddr   
		LDR			PC,DBG_Addr     
    ;SUBS		PC , LR , #4 			;直接返回

        
ResetAddr           DCD     ResetHandler
IRQ_Addr            DCD     SetupIrqIsr  
DBG_Addr						DCD			DebugSystem 


DebugSystem
		MSR     CPSR_c, #SVCMODE|NOINT			;切换到 SVC 模式.
		ldr	sp , =gSetupStackBotton
		ldr	pc, __SetupCrashHandler
		
__SetupCrashHandler	DCD		SetupCrashHandler

;/********************************************************************************************************
;IRQ 处理函数
;080221,huangsl,RGB 屏的 显示需要产生中断.
;********************************************************************************************************/
		IMPORT 	IrqCHandler               	;IRQ C语言中断处理函数
		
SetupIrqIsr
		SUB     LR, LR, #4          	;计算返回地址
		STMFD   SP!, {R0-R3,r12,LR}
		MOV			LR,PC
		LDR			PC,IRQ_CHANDLE
		LDMFD   SP!, {R0-R3,r12,PC}^

IRQ_CHANDLE            DCD     IrqCHandler  
;/********************************************************************************************************
;** RESET  复位入口
;071015,huangsl,直接跳到 C 入口即可.
;********************************************************************************************************/
ResetHandler
		LDR	SL , =gSetupStack
		ldr	sp , =gSetupStackBotton
;/********************************************************************************************************	
		IMPORT  main    
    ldr	pc, __main     				; Jump to the entry point of C program 跳转到c语言入口	
    
__main  	DCD  main

OSDisableInt 
				MRS r0, cpsr 				;由于任务和内核都运行在svc模式下,因此可方便地操作cpsr 
			;	STMFD sp!, {r0} 		; 保存当前的cpsr 
				ORR r1, r0, #0xc0 		;屏蔽FIQ,IRQ中断 
				MSR cpsr_c, r1 			;回写cpsr,只屏蔽IRQ中断 
				MOV pc, lr 					;返回 
	
	
OSEnableInt 								;必须和 OSDisableInt 成对使用 
			;	LDMFD sp!, {r0} 		;弹出在 OSDisableInt 中被保存的cpsr 
				MRS r0, cpsr	
				BIC r0, r0, #0x80		;开中断.
				MSR cpsr_c, r0 			;恢复关中断前的cpsr 
				MOV pc, lr 					;返回     
				

    END
;/*********************************************************************************************************
;**                            End Of File
;********************************************************************************************************/

⌨️ 快捷键说明

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