
2440init.s代码解析
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
2440init.s代码解析专注于分析S3C2440处理器初始化汇编代码,深入探讨嵌入式系统启动过程中的关键步骤和技术细节。
;=========================================;
NAME: 2440INIT.S;
DESC: C 启动代码;
配置内存、中断服务程序(ISR)、堆栈;初始化C变量;
=========================================
汇编语言不支持使用include包含头文件,因此采用Get指令引入所需的定义。
GET option.inc ; 定义芯片相关的配置
GET memcfg.inc ; 定义存储器配置
GET 2440addr.inc ; 定义寄存器符号
REFRESH 寄存器[22]位:
- 0 - 自动刷新;1 - 自我刷新 BIT_SELFREFRESH EQU (1<<22) ;
用于节电模式中,使SDRAM进入自动刷新状态。
处理器模式常量:
CPSR寄存器的后5位决定当前处理器模式
M[4:0]
USERMODE EQU 0x10 ; 用户模式
FIQMODE EQU 0x11 ; 快速中断(FIQ)模式
IRQMODE EQU 0x12 ; 中断请求(IRQ)模式
SVCMODE EQU 0x13 ; 系统调用(SVC)模式
ABORTMODE EQU 0x17 ; 数据访问中止(abort) 模式
UNDEFMODE EQU 0x1b ; 不定义指令执行(undefined instruction) 模式
MODEMASK EQU 0x1f; M[4:0]掩码
处理器各模式下堆栈地址常量:
UserStack EQU (_STACK_BASEADDRESS-0x3800)
SVCStack EQU (_STACK_BASEADDRESS-0x2800)
UndefStack EQU (_STACK_BASEADDRESS-0x2400)
AbortStack EQU (_STACK_BASEADDRESS-0x2000)
IRQStack EQU (_STACK_BASEADDRESS-0x1000)
FIQStack EQU (_STACK_BASEADDRESS- 0)
ARM处理器有两种工作状态:
1. ARM:32位,这种状态下执行字对准的ARM指令;
2. Thumb:16位,这种状态下执行半字对准的Thumb指令。
由于处理器分为16位和32位两种工作模式,并且编译器也有相应的16位与32位版本。因此下面的程序用于根据当前处理器的工作状态来确定使用哪种编译方式。
全部评论 (0)


