📄 startup.s
字号:
;/*
;**********************************************************************************************************
;*
;* S3C2410 ARM920T BOARD
;*
;* (c) Copyright 2003-2015, KANGSHUO
;* All Rights Reserved
;*
;* S3C2410 Initialization Program for 1.0
;*
;* File Name : UARTTEST
;* By Write : KANGSHUO(LEA)
;* First Write : 2004-09-14
;* Last Write : 2004-09-15
;* where Write : Room B201 Shenzhen International Tech-innovation Academy, Kejinan 10 Road,
;* High-Tech Industrial Park,Shenzhen,China.
;* Function : TEST S3C2410 BOARD UART0
;*
;*
;*
;**********************************************************************************************************
;*/
;/*
;**********************************************************************************************************
;* IMPORTANT ITEMS
;* 1. CPU frequence is 66M Hz
;* 2. 立即数的规范
;* 3.
;*
;**********************************************************************************************************
;*/
;/*
;**********************************************************************************************************
;* ERROR AND SOLUTION IN DEBUGING
;* 1. ERROR:
;* SOLUTION:
;**********************************************************************************************************
;*/
;/*
;**********************************************************************************************************
;* TO DO LIST
;* 2003.07.16
;* 1. CPU的基本初始化
;* a) 中断屏蔽
;* b) 看门狗设置,初始化是要将其屏蔽掉,初始化完之后再将其打开
;* c) 设置CPU时钟速度
;* d) 初始化内存
;* ......
;* 2. 跳至板级初始化,完成更高级的初始化工作
;* 3.
;* 4.
;**********************************************************************************************************
;*/
INCLUDE INTDEF.S
INCLUDE 2410ADDR.S
CODE32
IMPORT INT_IRQ
AREA STARTUP,CODE,READONLY
;/*
;**********************************************************************************************************
;* ENTRY
;*
;* 功能描述:初始化程序入口点
;*
;*
;**********************************************************************************************************
;*/
ENTRY
START
B INT_Reset
LDR PC, Undefined_Addr
LDR PC, SWI_Addr
LDR PC, Prefetch_Addr
LDR PC, Abort_Addr
NOP
LDR PC, IRQ_Addr
LDR PC, FIQ_Addr
Undefined_Addr DCD Undefined_Handler ;// 0x04
SWI_Addr DCD SWI_Handler ;// 0x08
Prefetch_Addr DCD Prefetch_Handler ;// 0x0c
Abort_Addr DCD Abort_Handler ;// 0x10
DCD 0 ;// Reserved vector 0x14
IRQ_Addr DCD INT_IRQ ;// 0x18
FIQ_Addr DCD FIQ_Handler ;// 0x1c
;/*
;**********************************************************************************************************
;* IMPORT ITEM
;* 描述:1. ARM上电启动后进入管理模式
;* 2. ARM复位后进入管理模式
;* 3.
;**********************************************************************************************************
;*/
EXPORT Undefined_Handler
Undefined_Handler
B Undefined_Handler
EXPORT SWI_Handler
SWI_Handler
B SWI_Handler
EXPORT Prefetch_Handler
Prefetch_Handler
B Prefetch_Handler
EXPORT Abort_Handler
Abort_Handler
B Abort_Handler
EXPORT FIQ_Handler
FIQ_Handler
B FIQ_Handler
;/*
;**********************************************************************************************************
;* INT_Reset
;*
;* Description: 初始化CPU相关的寄存器
;*
;* Arguments :
;*
;* Returns :
;*
;**********************************************************************************************************
;*/
EXPORT INT_Reset
INT_Reset
;// 模式转换为系统模式,
MRS R0,CPSR
BIC R0,R0,#MODE_MASK
ORR R0,R0,#MODE_SYS
ORR R0,R0,#INTLOCK
MSR CPSR_cxsf,R0
;// 硬件屏蔽中断
LDR R0,=INTMSK
LDR R1,= 0xFFFFFFFF
STR R1,[R0,#0]
LDR R0,=INTSUBMSK
LDR R1,=0X7FF
STR R1,[R0]
;// 屏蔽看门狗 ****注意立即数规范****
LDR R0, =WTCON
LDR R1, = 0x0
STR R1, [R0]
;// PLL稳定输出时间
ldr r0,= LOCKTIME
ldr r1,= 0xffffff
str r1,[r0]
;//设置CPU CLKDIVN
LDR R0,=CLKDIVN
LDR R1,=0x3
STR R1,[R0]
;// 设置CPU工作频率 Fin = 12MHz, Fout = 202.8MHz,PCLK=FCLK/4
LDR R0,=MPLLCON
LDR R1,=0XA1031
STR R1,[R0]
;// 设置时钟对所有的片内外设有效
LDR r0,=CLKCON
LDR r1,= 0x7FFF0
STR r1,[r0]
;//关闭MMU
;mask the mmu and cache
MOV R0,#0
MCR p15,0,R0,c1,c0,0
;//设置内存控制寄存器,配置内存参数,初始化内存
LDR R0,=BWSCON
LDR R1,=0X22111110
STR R1,[R0]
LDR R0,=BANKCON0
LDR R1,=0X700
STR R1,[R0]
LDR R0,=BANKCON6
LDR R1,=0X18005
STR R1,[R0]
LDR R0,=BANKCON7
LDR R1,=0x18005
STR R1,[R0]
LDR R0,=REFRESH
LDR R1,=0X8E0459
STR R1,[R0]
LDR R0,=BANKSIZE
LDR R1,=0X32
STR R1,[R0]
LDR R0,=MRSRB6
LDR R1,=0X30
STR R1,[R0]
LDR R0,=MRSRB7
LDR R1,=0X30
STR R1,[R0]
;//GPIO初始化
LDR R0,=GPBCON
LDR R1,=0X44555
STR R1,[R0,#0]
LDR R0,=GPBDAT
LDR R1,=0X414
STR R1,[R0,#0]
LDR R0,=GPBUP
LDR R1,=0X7FF
STR R1,[R0,#0]
LDR R0,=GPCCON
LDR R1,=0XAAAAAAAA
STR R1,[R0,#0]
LDR R0,=GPCUP
LDR R1,=0XFFFF
STR R1,[R0,#0]
LDR R0,=GPDCON
LDR R1,=0XAAAAAAAA
STR R1,[R0,#0]
LDR R0,=GPDUP
LDR R1,=0XFFFF
STR R1,[R0,#0]
LDR R0,=GPGCON
LDR R1,=0XFF000000
STR R1,[R0,#0]
LDR R0,=GPGUP
LDR R1,=0XF800
STR R1,[R0,#0]
;//设置GPH,以使能uart0,uart1
LDR R0,=GPHCON
LDR R1,=0XAAA
STR R1,[R0]
LDR R0,=GPHUP
LDR R1,=0X3FF
STR R1,[R0]
;//int 初始化,选择int中断使能USB Device中断
LDR R0,=INTMOD
LDR R1,=0X0
STR R1,[R0]
LDR R0,=PRIORITY
LDR R1,=0X0
STR R1,[R0]
LDR R0,=INTMSK
LDR R1,=0XFDFFFFFF
STR R1,[R0]
LDR R0,=INTSUBMSK
LDR R1,=0X7ff
STR R1,[R0]
;/*
;**********************************************************************************************************
;* INT_Intialize
;* Function : 进行更高极的初始化工作
;*
;* Returns : NO
;*
;**********************************************************************************************************
;*/
IMPORT INT_Intialize
B INT_Intialize
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -