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

📄 startup.s

📁 S3C2410学习的基础资料 大部分实验源码及工程
💻 S
字号:
;/********************************************************************************************************
;* 文件: Startup.s
;* 描述: 主程序及异常向量入口.
;* 编写: bobey
;********************************************************************************************************/

	GET		S3C2410SFR.S
	GET 	S3C2410_CFG.S

;引入外部函数
	IMPORT  __main
	IMPORT	MMU_SetAsyncBusMode
	IMPORT	MemCFG
	IMPORT	Init_Port
    IMPORT  Init_Stack
    IMPORT  HandlerIRQ

;/**********************************************************************************************************
;* 函数: _Startup.
;* 功能: 此函数为异常程序入口, 应该根据需要确定其定位地址.
;**********************************************************************************************************/
        AREA    startup,CODE,READONLY
        CODE32
        ENTRY
_Startup
        LDR     PC,     =HandlerReset               ; 复位程序入口
        B       .
        LDR     PC,     =HandlerSWI                 ; 软中断入口.
        B       .
        B       .
        B       .
        LDR     PC,     =HandlerIRQ                 ; IRQ 中断服务程序入口.
        LDR     PC,     =HandlerFIQ                 ; FIQ 中断服务程序入口.
        
;bobey
;    LDR     PC,     =HandlerReset               ; 复位程序入
;    LDR         pc,Undef_Inst_Addr              ; Undefined Instruction
;    LDR         pc,Software_Addr                ; Software Generated
;    LDR         pc,Abort_Prefetch_Addr          ; Abort Prefetch
;    LDR         pc,Abort_Data_Addr              ; Abort Data
;    LDR         pc,Reserved_Addr                ; Reserved
;    LDR         pc,IRQ_Addr                     ; Standard External Interrupt
;    LDR         pc,FIQ_Addr                     ; Fast External Interrupt

;/**********************************************************************************************************
;* 函数: HandlerReset.
;* 功能: 复位处理程序.
;**********************************************************************************************************/
HandlerReset
		ldr		r0,			=WTCON                  ; watch dog disable.
		ldr		r1,			=0x0         
		str		r1,			[r0]

		ldr		r0,			=INTMSK
		ldr		r1,			=0xffffffff             ; all interrupt disable.
		str		r1,			[r0]

		ldr		r0,			=INTSUBMSK
		ldr		r1,			=0x7ff		            ; all sub interrupt disable.
		str		r1,			[r0]
 
        LDR     R0,         =INTPND                 ; clear INTPND register
        LDR     R1,         =0xffffffff
        STR     R1,         [R0]
        LDR     R0,         =SRCPND                 ; clear SRCPND register
        LDR     R1,         =0xffffffff
        STR     R1,         [R0]

;/**************************************
;* 功能: 配置系统时钟, M_HDIVN.M_PDIVN 在 S3C2410_CFG.S 程序中定义.
;***************************************/
		ldr		r0,			=LOCKTIME
		ldr		r1,			=0xffffff		        ; To reduce PLL lock time, adjust the LOCKTIME register.
		str		r1,			[r0]

		LDR		R0,			=CLKDIVN		        ; Clock divider control register.
		LDR		R1,			=((M_HDIVN<<1)|M_PDIVN)
		STR		R1,			[R0]
;/***************************************
;* 功能:配置MMU(内存管理单元) .
;****************************************/
        IMPORT  MMU_DisableMMU
        IMPORT	MMU_EnableICache
        IMPORT  MMU_EnableDCache

		BL		MMU_SetAsyncBusMode
        BL      MMU_DisableMMU
        BL      MMU_EnableICache
        BL      MMU_EnableDCache
;/***************************************
;* 功能:内部时钟寄存器配置 .
;****************************************/
		LDR		R0,			=CLKCON			        ; Clock generator control register  控制其他片上模块时钟开关
		LDR		R1,			=0x7FFF0
		STR		R1,			[R0]

		LDR		R0,			=CLKSLOW
		LDR		R1,			=0x00000004
		STR		R1,			[R0]

		ldr		r0,			=MPLLCON                ; Configure MPLL. MDIV=161. PDIV=3. SDIV=1
		ldr		r1,			=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV)
		str		r1,			[r0]                    ; Fout=202.8MHz    Fin=12MHz .设定好2410主频
        NOP
        NOP
;/***************************************
;* 功能: 初始化 I/O 端口.
;****************************************/
		BL		Init_Port
;/***************************************
;* 功能: Set memory control registers.
;****************************************/
        LDR     R0,     =MemCFG                     ; Memory Controller.
        LDMIA   R0,     {R1-R13}
        LDR     R0,     =BWSCON
        STMIA   R0,     {R1-R13}
;/***************************************
;* 功能: 初始化堆栈, 退出后将在 Sys 模式.
;****************************************/
        BL      Init_Stack
;/***************************************
;* 功能: 转到系统主函数进行初始化.
;****************************************/
		B		__main

;/**********************************************************************************************************
;* 函数: HandlerSWI.
;* 功能: 软中断服务程序入口.
;**********************************************************************************************************/
HandlerSWI
		B		.
;/**********************************************************************************************************
;* 函数: HandlerFIQ.
;* 功能: FIQ 中断服务程序入口.
;**********************************************************************************************************/
HandlerFIQ
		B		.
;/**********************************************************************************************************
;* 函数: Default_IRQ_ISR.
;* 功能: 非法 IRQ 中断.
;*       即开了中断但未在 IRQ 服务程序中指定相应中断服务程序的入口地址.
;**********************************************************************************************************/
        EXPORT  Default_IRQ_ISR
Default_IRQ_ISR
        B       .                                   ; 请查看 IRQ_ISR.S 文件定义.
;/********************************************************************************************************
        END
;*********************************************************************************************************/

⌨️ 快捷键说明

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