?? startup.s
字號:
;/****************************************Copyright (c)***************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
;**
;**--------------File Info--------------------------------------------------------------------------------
;** File name: Startup.s
;** Last modified Date:
;** Last Version:
;** Descriptions: The start up codes for LPC2100, including the initializing codes for the entry
;** point of exceptions and the stacks of user tasks. Every project should have a
;** independent copy of this file for related modifications
;**-------------------------------------------------------------------------------------------------------
;** Created by: Chenmingji
;** Created date: 2004-02-02
;** Version: 1.0
;** Descriptions: The original version
;**-------------------------------------------------------------------------------------------------------
;** Modified by: LinEnqiang
;** Modified date: 2008-05-05
;** Version: 1.01
;** Descriptions: 增加中斷管理支持 for LPC2400
;**
;********************************************************************************************************/
INCLUDE LPC2400.INC ;/* 引入頭文件 */
;/* 定義堆棧的大小 */
SVC_STACK_LEGTH EQU 0
FIQ_STACK_LEGTH EQU 10
IRQ_STACK_LEGTH EQU 9 * 8 ;/* 每層嵌套需要8個字堆棧,允許*/
;/* 9嵌套層 */
ABT_STACK_LEGTH EQU 0
UND_STACK_LEGTH EQU 0
NoInt EQU 0x80 ;/* 禁止 IRQ 中斷宏定義 */
NoFIQ EQU 0x40 ;/* 禁止 FIQ 中斷宏定義 */
USR32Mode EQU 0x10 ;/* 用戶模式宏定義 */
SVC32Mode EQU 0x13 ;/* 管理模式宏定義 */
SYS32Mode EQU 0x1f ;/* 系統(tǒng)模式宏定義 */
IRQ32Mode EQU 0x12 ;/* IRQ模式宏定義 */
FIQ32Mode EQU 0x11 ;/* FIQ模式宏定義 */
WAITWEN0 EQU 0x0F ;/* 配置EMCStaticWaitWen0 */
WAITOEN0 EQU 0x0F ;/* 配置EMCStaticWaitOen0 */
WAITRD0 EQU 0x0F ;/* 配置EMCStaticWaitRd0 */
WAITPAGE0 EQU 0x1F ;/* 配置EMCStaticWaitPage0 */
WAITWR0 EQU 0x0F ;/* 配置EMCStaticWaitWr0 */
WAITTURN0 EQU 0x0F ;/* 配置EMCStaticWaitTurn0 */
WAITWEN1 EQU 0x00 ;/* 配置EMCStaticWaitWen1 */
WAITOEN1 EQU 0x01 ;/* 配置EMCStaticWaitOen1 */
WAITRD1 EQU 0x04 ;/* 配置EMCStaticWaitRd1 */
WAITPAGE1 EQU 0x1F ;/* 配置EMCStaticWaitPage1 */
WAITWR1 EQU 0x02 ;/* 配置EMCStaticWaitWr1 */
WAITTURN1 EQU 0x0F ;/* 配置EMCStaticWaitTurn1 */
WAITWEN2 EQU 0x0F ;/* 配置EMCStaticWaitWen2 */
WAITOEN2 EQU 0x0F ;/* 配置EMCStaticWaitOen2 */
WAITRD2 EQU 0x0F ;/* 配置EMCStaticWaitRd2 */
WAITPAGE2 EQU 0x1F ;/* 配置EMCStaticWaitPage2 */
WAITWR2 EQU 0x0F ;/* 配置EMCStaticWaitWr2 */
WAITTURN2 EQU 0x0F ;/* 配置EMCStaticWaitTurn2 */
WAITWEN3 EQU 0x0F ;/* 配置EMCStaticWaitWen3 */
WAITOEN3 EQU 0x0F ;/* 配置EMCStaticWaitOen3 */
WAITRD3 EQU 0x0F ;/* 配置EMCStaticWaitRd3 */
WAITPAGE3 EQU 0x1F ;/* 配置EMCStaticWaitPage3 */
WAITWR3 EQU 0x0F ;/* 配置EMCStaticWaitWr3 */
WAITTURN3 EQU 0x0F ;/* 配置EMCStaticWaitTurn3 */
BCFG_08DEF EQU 0x00000000 ;/* 8Bit Bus */
BCFG_16DEF EQU 0x00000001 ;/* 16Bit Bus */
BCFG_32DEF EQU 0x00000002 ;/* 32Bit Bus */
;// | 頁模式 | 片選極性 |字節(jié)定位狀態(tài)| 延長等待 | 寫緩沖區(qū) | 寫保護 |
;// | PM | PC | PB | EW | B | P |
;// |0:禁能1:使能| 0:低 1:高 | |0:禁能1:使能|0:禁能1:使能|0:禁能1:使能|
BCFG0 EQU ( (0x00<<03) | (0x00<<06) | (0x01<<07) | (0x00<<8) | (0x00<<19) | (0x00<<20) )
BCFG1 EQU ( (0x00<<03) | (0x00<<06) | (0x01<<07) | (0x00<<8) | (0x00<<19) | (0x00<<20) )
BCFG2 EQU ( (0x00<<03) | (0x00<<06) | (0x01<<07) | (0x00<<8) | (0x00<<19) | (0x00<<20) )
BCFG3 EQU ( (0x00<<03) | (0x00<<06) | (0x01<<07) | (0x00<<8) | (0x00<<19) | (0x00<<20) )
STATICCFG0 EQU ( BCFG_16DEF | BCFG0 )
STATICCFG1 EQU ( BCFG_16DEF | BCFG1 )
STATICCFG2 EQU ( BCFG_16DEF | BCFG2 )
STATICCFG3 EQU ( BCFG_16DEF | BCFG3 )
;/********************************************************************************************************
; The imported labels
; 引入的外部標號在這聲明
;********************************************************************************************************/
IMPORT __main ;/* C語言主程序入口 */
IMPORT RunFirst
IMPORT SDRAMInit
IMPORT vicControl
IMPORT FIQ_Exception ;/* 快速中斷異常處理程序 */
IMPORT TargetResetInit ;/* 目標板基本初始化 */
IMPORT SoftwareInterrupt
IMPORT __use_two_region_memory
IMPORT __use_no_semihosting_swi
;/********************************************************************************************************
; The emported labels
; 給外部使用的標號在這聲明
;********************************************************************************************************/
EXPORT Reset
EXPORT StackUsr
EXPORT InitStack
EXPORT bottom_of_heap
EXPORT SoftwareInterruptAdd
EXPORT __user_initial_stackheap
CODE32
AREA vectors,CODE,READONLY
ENTRY
Reset ;/* 中斷向量表 */
LDR PC, ResetAddr
LDR PC, UndefinedAddr
LDR PC, SWI_Addr
LDR PC, PrefetchAddr
LDR PC, DataAbortAddr
DCD 0xb9206e50
LDR PC, [PC, #-0x120]
LDR PC, FIQ_Addr
ResetAddr DCD ResetInit
UndefinedAddr DCD Undefined
SWI_Addr DCD SoftwareInterruptAdd
PrefetchAddr DCD PrefetchAbort
DataAbortAddr DCD DataAbort
Nouse DCD 0
IRQ_Addr DCD 0
FIQ_Addr DCD FIQ_Handler
Undefined
B .
PrefetchAbort
B .
DataAbort
B .
SoftwareInterruptAdd
CMP R0, #0x100
BLO SoftwareInterrupt
B vicControl
;/********************************************************************************************************
; 快速中斷
;********************************************************************************************************/
FIQ_Handler
STMFD SP!, {R0-R3, LR}
BL FIQ_Exception
LDMFD SP!, {R0-R3, LR}
SUBS PC, LR, #4
;/********************************************************************************************************
;** Function name: ResetInit
;**
;** Descriptions: 復位處理
;**
;** input parameters: None
;** Returned value: None
;**
;** Created by: Chenmingji
;** Created Date: 2004/02/02
;**-------------------------------------------------------------------------------------------------------
;** Modified by: LinEnqiang
;** Modified date: 2008-01-15
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
ResetInit
BL RunFirst
LDR R1, =STATICCFG0 ;/* 配置EMCStaticConfig0 */
LDR R2, =WAITWEN0 ;/* 配置EMCStaticWaitWen0 */
LDR R2, =WAITWEN0 ;/* 配置EMCStaticWaitWen0 */
LDR R3, =WAITOEN0 ;/* 配置EMCStaticWaitOen0 */
LDR R4, =WAITRD0 ;/* 配置EMCStaticWaitRd0 */
LDR R5, =WAITPAGE0 ;/* 配置EMCStaticWaitPage0 */
LDR R6, =WAITWR0 ;/* 配置EMCStaticWaitWr0 */
LDR R7, =WAITTURN0 ;/* 配置EMCStaticWaitTurn0 */
LDR R0, =EMCStaticConfig0
STMIA R0!, {R1-R7}
LDR R1, =STATICCFG1 ;/* 配置EMCStaticConfig1 */
LDR R2, =WAITWEN1 ;/* 配置EMCStaticWaitWen1 */
LDR R3, =WAITOEN1 ;/* 配置EMCStaticWaitOen1 */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -