文件名称:2440init.s解析
文件大小:553KB
文件格式:DOC
更新时间:2021-10-02 02:37:17
2440 init 解析
;========================================= ; NAME: 2440INIT.S ; DESC: C start up codes ; Configure memory, ISR ,stacks ; Initialize C-variables ;========================================= ;汇编不能使用include包含头文件,所有用Get ;汇编也不认识*.h 文件,所有只能用*.inc GET option.inc ;定义芯片相关的配置 GET memcfg.inc ;定义存储器配置 GET 2440addr.inc ;定义了寄存器符号 ;REFRESH寄存器[22]bit : 0- auto refresh; 1 - self refresh BIT_SELFREFRESH EQU (1<<22) ;用于节电模式中,SDRAM自动刷新 ;处理器模式常量: CPSR寄存器的后5位决定目前处理器模式 M[4:0] USERMODE EQU 0x10 FIQMODE EQU 0x11 IRQMODE EQU 0x12 SVCMODE EQU 0x13 ABORTMODE EQU 0x17 UNDEFMODE EQU 0x1b MODEMASK EQU 0x1f ;M[4:0] NOINT EQU 0xc0 ;定义处理器各模式下堆栈地址常量 UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ _STACK_BASEADDRESS定义在option.inc中 SVCStack EQU (_STACK_BASEADDRESS-0x2800) ;0x33ff5800 ~ UndefStack EQU (_STACK_BASEADDRESS-0x2400) ;0x33ff5c00 ~ AbortStack EQU (_STACK_BASEADDRESS-0x2000) ;0x33ff6000 ~ IRQStack EQU (_STACK_BASEADDRESS-0x1000) ;0x33ff7000 ~ FIQStack EQU (_STACK_BASEADDRESS-0x0) ;0x33ff8000 ~ ;arm处理器有两种工作状态 1.arm:32位 这种工作状态下执行字对准的arm指令 2.Thumb:16位 这种工作状 ;态执行半字对准的Thumb指令 ;因为处理器分为16位 32位两种工作状态 程序的编译器也是分16位和32两种编译方式 所以下面的程序用 ;于根据处理器工作状态确定编译器编译方式