S3C44B0X启动代码分析

本文详细分析了S3C44B0X微处理器的启动代码,包括中断向量表、中断处理宏、内存控制器寄存器配置以及堆栈初始化等关键步骤。通过对汇编代码的注解,揭示了处理器上电后的初始化流程和中断处理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
44binit.s 引导程序注解
 
GET option.s ;相当于c语言中的#include "option.s" 
GET memcfg.s 
;Interrupt Control 
;声明一些符号常量,这些符号常量和地址相应寄存器的地址对应 
INTPND EQU 0x01e00004 ;指示中断请求状态寄存器,每一位代表一种中断请求,具体表示哪一种中断请参考44b0 spec 
INTMOD EQU 0x01e00008 ;中断模式寄存器,有两种中断模式对应位为1代表FIQ mode, 0代表IRQ mode 
INTMSK EQU 0x01e0000c ;确定哪个中断源被屏蔽,屏蔽的中断源将不被服务 
I_ISPR EQU 0x01e00020 ;中断服务挂起寄存器 
I_CMST EQU 0x01e0001c ;当前主寄存器IRQ优先级 

;Watchdog timer 
WTCON EQU 0x01d30000 ;
看门狗定时器控制寄存器
;Clock Controller 
PLLCON EQU 0x01d80000 ;
pll 控制寄存器  
CLKCON EQU 0x01d80004 ;
时钟控制寄存器  
LOCKTIME EQU 0x01d8000c ;
锁定时间计数值寄存器  

;Memory Controller 
REFRESH EQU 0x01c80024 ;
Dram/sdram
刷新控制寄存器  
;
下面是对 arm 处理器模式寄存器对应值的常数定义, arm 处理器中有一个 CPSR 程序状态
寄存器,它的后五位决定目前的处理器模式  
;Pre-defined constants 
USERMODE EQU 0x10  
; 0b10000
用户模式  
FIQMODE EQU 0x11    ; 0b10001 FIQ
模式 
IRQMODE EQU 0x12  ; 0b10010 IRQ
模式  
SVCMODE EQU 0x13  ; 0b10011
管理模式  
ABORTMODE EQU 0x17
  ; 0b10111 中止模式 
UNDEFMODE EQU 0x1b  ; 0b11011 未定义 
MODEMASK EQU 0x1f  ; 0b11111
系统模式 
NOINT EQU 0xc0 ; 
;check if tasm.exe is used. 
;arm
处理器有两种工作状态
 1.arm 32 位,  这种工作状态下执行字对准的 arm 指令 
2.Thumb:16 位,这种工作状态执行半字对准的 Thumb 指令  
;
因为处理器分为 16  32 位两种工作状态,程序的编译器也是分 16 位和 32 两种编译方式,  所以下面的程序用于根据处理器工作状态确定编译器编译方式  
;code16
伪指令指示汇编编译器后面的指令为 16 位的 thumb 指令  
;code32
伪指令指示汇编编译器后面的指令为 32 位的 arm 指令  
;
这段是为了统一目前的处理器工作状态和软件编译方式( 16 位编译环境使用 tasm.exe 编译)  
GBLL THUMBCODE  ;
设置 一个全局逻辑变量  
[ {CONFIG} = 16  ; if config==16 
这里表示你的目前处于领先地 16 位编译方式  
THUMBCODE SETL {TRUE}  ;
设置 THUMBCODE   true 
CODE32  ;
转入 32 位编译模式  
;else 
THUMBCODE SETL {FALSE}  ;
THUMBCODE 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值