📄 option.inc
字号:
;/*
;************************************************************************************************************
;* 北京精仪达盛科技有限公司
;* 研 发 部
;*
;* http://www.techshine.com
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------
;* 文件名称 : Option.inc
;* 文件功能 : 该文件为S3C44B0硬件平台的CPU的配置文件,包括各相关寄存器地址的定义,ISR开始地址定义,总线宽度定义
;* 时钟频率配置,异常模式向量跳转宏定义,向量中断跳转宏定义。
;* 补充说明 : 基于S3C44B0的ARM7硬件平台的CPU配置文件
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : ARM开发小组
;* 修改日期 : 2004/04/25
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : ARM开发小组
;* 创建日期 : 2004/04/20
;* 版本声明 : v1.0.0
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/
;/************************************ 中断控制寄存器的地址定义 ********************************************/
INTPND EQU 0x01e00004
INTMOD EQU 0x01e00008
INTMSK EQU 0x01e0000c
I_ISPR EQU 0x01e00020
I_CMST EQU 0x01e0001c
I_PMST EQU 0x01e00014
;/************************************ 看门狗控制器寄存器的地址定义 ****************************************/
WTCON EQU 0x01d30000
;/************************************ 时钟控制寄存器的地址定义 ********************************************/
PLLCON EQU 0x01d80000
CLKCON EQU 0x01d80004
LOCKTIME EQU 0x01d8000c
;/*************************************** 存储器控制寄存器 *************************************************/
REFRESH EQU 0x01c80024
;/*************************************** DMA 控制寄存器 ****************************************************/
BDIDES0 EQU 0x01f80008
BDIDES1 EQU 0x01f80028
;/************************************** 预定义处理器模式常量 **********************************************/
USERMODE EQU 0x10
FIQMODE EQU 0x11
IRQMODE EQU 0x12
SVCMODE EQU 0x13
ABORTMODE EQU 0x17
UNDEFMODE EQU 0x1b
SYSMODE EQU 0x1f
NOINT EQU 0xc0
;/*************************************** 异常模式向量跳转宏定义 *******************************************/
MACRO
$HandlerLabel HANDLER $HandleLabel
$HandlerLabel
sub sp,sp,#4 ;//sp 减4是为了存储跳转地址用
stmfd sp!,{r0} ;//工作寄存器r0入栈(LR不入栈,因为它返回到原始地址)
ldr r0,=$HandleLabel ;//加载 HandleXXX的地址到 r0寄存器
ldr r0,[r0] ;//加载HandleXXX的内容(即服务子程序的起始地址)到r0寄存器
str r0,[sp,#4] ;//r0寄存器内容入栈
ldmfd sp!,{r0,pc} ;//原r0工作寄存器内容和跳转到ISR的地址出栈
MEND
;/************************************** 向量中断跳转宏定义 ************************************************/
MACRO
$VHandlerLabel VHANDLER $VHandleLabel
$VHandlerLabel
sub sp,sp,#4 ;//sp 减4是为了存储跳转地址用
stmfd sp!,{r0} ;//工作寄存器入栈r0(LR不入栈,因为它返回到原始地址)
ldr r0,=I_ISPR ;//把中断挂起寄存器地址放入r0
ldr r0,[r0] ;//把中断挂起寄存器内容放入r0
cmp r0,#0x0 ;//比较,看是否有中断产生
beq %F0 ;//若无中断产生,跳到标号0处
ldr r0,=$VHandleLabel ;//加载 VHandleXXX的地址到 r0寄存器
ldr r0,[r0] ;//加载VHandleXXX的内容(即服务子程序的起始地址)到r0寄存器
str r0,[sp,#4] ;//r0寄存器内容入栈
ldmfd sp!,{r0,pc} ;//原r0工作寄存器内容和跳转到ISR的地址出栈
0 stmfd sp!,{r1} ;//工作寄存器r1入栈(LR不入栈,因为它返回到原始地址)
ldr r0,=I_PMST ;//把中断主从优先级分配器地址放入r0
ldr r1,[r0] ;//把其里面的内容放入r1
str r1,[r0] ;//把寄存器r1的内容放入中断主从优先级分配器地址
ldmfd sp!,{r0,r1} ;//原r0,r1工作寄存器内容出栈//是否r0r1应该交换?
add sp,sp,#4 ;//指针堆栈加4
subs pc,lr,#4
MEND
;/************************************ GCS1:256K SRAM ISR的开始地址 ****************************************/
_ISR_STARTADDRESS EQU 0x0C7fff00
;/**************************************** CPU的总线宽度配置 ***********************************************/
GBLA BUSWIDTH
BUSWIDTH SETA 16
;/******************************* 用于GCS6、GCS7的参数定义"DRAM","SDRAM" ***********************************/
GBLS BDRAMTYPE
BDRAMTYPE SETS "SDRAM"
;/**************************************** 锁相环倍频启动配置 **********************************************/
GBLL PLLONSTART
PLLONSTART SETL {TRUE}
;/****************************************** 锁相环倍频配置 ************************************************/
GBLA PLLCLK
PLLCLK SETA 60000000 ;// 系统时钟
[ PLLCLK = 40000000 ;// 输入频率 =8MHz 输出频率 =40MHz
M_DIV EQU 0x2A
P_DIV EQU 0x3
S_DIV EQU 0x1
]
[ PLLCLK = 60000000 ;// 输入频率 =8MHz 输出频率 =60MHz
M_DIV EQU 0x43
P_DIV EQU 0x3
S_DIV EQU 0x1
]
[ PLLCLK = 66000000 ;// 输入频率 =8MHz 输出频率 =66MHz
M_DIV EQU 0x50
P_DIV EQU 0x4
S_DIV EQU 0x1
]
;/**********************************************************************************************************/
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -