欢迎来到天天文库
浏览记录
ID:53008787
大小:208.03 KB
页数:44页
时间:2020-04-11
《Mini2440启动代码分析--作业靳玉斌.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1Mini2440启动代码分析23嵌入091班30号—靳玉斌4;=========================================5;NAME:2440INIT.S6;DESC:Cstartupcodes7;Configurememory,ISR,stacks8;InitializeC-variables9;HISTORY:10;2002.02.25:kwtark:ver0.011;2002.03.20:purnnamu:Addsomefunctionsfortesting12STOP,Sleepmode13;2003.03.14:DonGo:Modifiedfor24
2、40.14;2010.11.22号阅读mini2440启动代码15;=========================================16;GET类似于c语言中的include包含头文件17;option.inc文件内定义了一些全局变量,memcfg.inc文件内定义了18关于内存bank的符号和数字常量,2440addr.inc文件内定义了用于19汇编的s3c2440寄存器变量和地址20GEToption.inc21GETmemcfg.inc22GET2440addr.inc2324BIT_SELFREFRESHEQU(1<<22);定义SDRAM自刷新标志位2526
3、;定义各种工作模式27USERMODEEQU0x10;用户模式28FIQMODEEQU0x11;快中断模式29IRQMODEEQU0x12;中断模式30SVCMODEEQU0x13;管理模式31ABORTMODEEQU0x17;异常中止模式32UNDEFMODEEQU0x1b;未定义模式33MODEMASKEQU0x1f;系统模式(掩码模式)34NOINTEQU0xc0;屏蔽所有的中断,即置位I,F位35;设置6种工作模式36UserStackEQU(_STACK_BASEADDRESS-0x3800);用户模式的堆37栈空间0x33ff4800开始0x33ff8000-0x3800
4、0x33ff480038SVCStackEQU(_STACK_BASEADDRESS-0x2800);管理模式的堆39栈空间0x33ff5800开始0x33ff8000-0x28000x33ff580040UndefStackEQU(_STACK_BASEADDRESS-0x2400);未定义模式41的堆栈空间0x33ff5c00开始0x33ff8000-0x24000x33ff5c0042AbortStackEQU(_STACK_BASEADDRESS-0x2000);中止模式的43堆栈空间0x33ff6000开始0x33ff8000-0x20000x33ff600044IRQ
5、StackEQU(_STACK_BASEADDRESS-0x1000);中断模式的堆栈空45间0x33ff7000开始0x33ff8000-0x10000x33ff700046FIQStackEQU(_STACK_BASEADDRESS-0x0);快中断模式的堆栈47空间0x33ff8000开始0x33ff8000-0x00x33ff80004849;检查在tasm.exe里是否设置了采用THUMB(16位)代码(armasm50-16...@ADS1.0)51;判断是不是thumb指令。52GBLLTHUMBCODE;定义全局变量THUMBCODE53[{CONFIG}=16;相
6、当于C语言中的54if(config==16)如果代码是16位的55THUMBCODESETL{TRUE};把THUMBCODE设置为TURE56CODE32;代码段为32位,工作在arm57状态58
7、;“
8、”相当于else否则59THUMBCODESETL{FALSE};把THUMBCODE设置为FALSE60(arm态)61];相当于结束标志elseif6263;=======================================================64MACRO;宏定义的开始标志65MOV_PC_LR;宏定义的名称66[THUMBCODE;如果定义了THUM
9、BCODE。67bxlr;在ARM模式中要使用BX指令转跳到THUMB指令,并转换68模式.bx指令会根据PC最后1位来确定是否进入thumb状态69
10、;else否则70movpc,lr;目标地址是ARM模式,就直接把函数返回地址赋给71PC7273];elseif(结束标志)74MEND;宏的结束标志7576;======================================================77MACRO;宏定义的开
此文档下载收益归作者所有