ARM启动代码详细注释.pdf

ARM启动代码详细注释.pdf

ID:53910689

大小:121.64 KB

页数:24页

时间:2020-04-27

ARM启动代码详细注释.pdf_第1页
ARM启动代码详细注释.pdf_第2页
ARM启动代码详细注释.pdf_第3页
ARM启动代码详细注释.pdf_第4页
ARM启动代码详细注释.pdf_第5页
资源描述:

《ARM启动代码详细注释.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ARM启动代码详细注释syd1682009-07-232410Init.s包括了板子上电后的初始化过程,具体有以下几个步骤:1.屏蔽所有中断,关看门狗。2.根据工作频率设置PLL寄存器3.初始化存储控制相关寄存器4.初始化各模式下的栈指针5.设置缺省中断处理函数6.将数据段拷贝到RAM中,将零初始化数据段清零7.跳转到C语言Main入口函数中;=========================================;NAME:2410INIT.S;DESC:Cstartupcodes;Configur

2、ememory,ISR,stacks;InitializeC-variables;HISTORY:;2002.02.25:kwtark:ver0.0;2002.03.20:purnnamu:AddsomefunctionsfortestingSTOP,POWER_OFFmode;2002.04.10:SJS:subinterruptdisable0x3ff->0x7ff;=========================================GEToption.s;GET相当INCLUDE将一个源文件

3、包含到当前源文件,这里表示包含option.s,并在当前位置进行汇编GETmemcfg.sGET2410addr.sBIT_SELFREFRESHEQU(1<<22);SDRAM/DRAM刷新控制器bit22REFMD位0:CBR/AUTOREFRESH1:SHIFREFRESH;下面是对arm处理器模式寄存器对应值的常数定义,arm处理器中有一个CPSR程序状态寄存器,后五位决定目前的处理器模式。;Pre-definedconstants;PSR模式位USERMODEEQU0x10;用户模式FIQMODEEQ

4、U0x11;FIQ快速中断模式IRQMODEEQU0x12;中断模式SVCMODEEQU0x13;超级用户模式ABORTMODEEQU0x17;中止模式UNDEFMODEEQU0x1b;未定义指令模式MODEMASKEQU0x1f;系统模式NOINTEQU0xc0;禁止IRQ和FIQ中断;;定义各模式堆栈地址_STACK_BASEADDRESS在option.s中,_STACK_BASEADDRESSEQU(SDRAM_END-0x8000);0x33ff8000UserStackEQU(_STACK_BASE

5、ADDRESS-0x3800);0x33ff4800~;用户模式堆栈SVCStackEQU(_STACK_BASEADDRESS-0x2800);0x33ff5800~0x3ff47ff;超级用户模式堆栈4kUndefStackEQU(_STACK_BASEADDRESS-0x2400);0x33ff5c00~0x3ff57ff;未定义指令模式堆栈1kAbortStackEQU(_STACK_BASEADDRESS-0x2000);0x33ff6000~0x3ff5bff;中止模式堆栈1kIRQStackEQU

6、(_STACK_BASEADDRESS-0x1000);0x33ff7000~0x3ff5fff;中断模式堆栈4kFIQStackEQU(_STACK_BASEADDRESS-0x0);0x33ff8000~0x33ff6fff;快速中断模式堆栈4k;arm处理器有两种工作状态;1.arm:32位这种工作状态下执行字对齐的arm指令;2.Thumb:16位这种工作状;态执行半字对齐的Thumb指令;因为处理器分为16位32位两种工作状态程序的编译器也是分16位和32两种编译方式;所以下面的程序用于根据处理器工作

7、状态确定编译器编译方式;code16伪指令指示汇编编译器,后面的指令为16位的thumb指令;code32伪指令指示汇编编译器,后面的指令为32位的arm指令;这段是为了统一目前的处理器工作状态和软件编译方式(16位编译环境使用tasm.exe编译);===========================================================================================;Checkiftasm.exe(armasm-16...@ADS1.0)isus

8、ed.检查是否是用tasm.exe进行16位编译GBLLTHUMBCODE;声明一个全局变量并初始化为{FALSE}[{CONFIG}=16;ifconfig=16这里表示用16位编译方式THUMBCODESETL{TRUE};SETL给全局变量赋值,;设置THUMBCODE为trueCODE32;转入32位编译模式

9、;

10、等同ELSETHUMBCODESETL{FALSE};设置THU

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。