嵌入式学习-tq2440启动代码分析报告

嵌入式学习-tq2440启动代码分析报告

ID:31417299

大小:99.50 KB

页数:27页

时间:2019-01-09

嵌入式学习-tq2440启动代码分析报告_第1页
嵌入式学习-tq2440启动代码分析报告_第2页
嵌入式学习-tq2440启动代码分析报告_第3页
嵌入式学习-tq2440启动代码分析报告_第4页
嵌入式学习-tq2440启动代码分析报告_第5页
资源描述:

《嵌入式学习-tq2440启动代码分析报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、WORD格式整理启动程序要完成的任务包括:硬件初始化,系统存储系统的配置,复制二级中断向量表。一、启动程序过程:●系统硬件初始化系统上电或复位后,程序从位于地址0x0的ResetExceptionVector处开始执行,因此需要在这里放置Bootloader的第一条指令:bResetHandler,跳转到标号为ResetHandler处进行第一阶段的硬件初始化,执行完,系统进行堆栈和存储器的初始化。使用了外设,则需要设置相关的寄存器,确定其刷新频率、总线宽度等信息。●代码段复制到RAM中运行需要把系统的代码复制到RAM中运行。映像文件内部共有三种输出段:RO段、RW段和Z

2、I段。ARMLink同时还产生了这三种输出段的起始和终止定位信息:Image$$RO$$Base、Image$$RO$$Limit、Image$$RW$$Base、Image$RW$Limit、Image$ZI$Base和Image$$ZI$$Limit。可以在程序中使用这些定位信息。将ROM中的代码和数据搬移到RAM中。●建立二级中断向量表在ARM系统中,中断向量表位于0X0开始的地址处,意味着无论运行什么样的上层软件,一旦发生中断,程序就得到Flash存储器中的中断向量表里去,降低系统的运行效率。因此在RAM中建立自己的二级中断向量表,当中断发生后,程序直接从RAM中

3、取中断向量进入中断子程序。尤其是在中断频繁发生的系统里,这种方法可以大大提高系统的运行效率。二、在系统上电后,初始化部分的工作注意包含以下部分1)关看门狗定时器2)屏蔽所有中断3)设置CPU时钟频率。4)设置存储器控制寄存器,对外部存储器的参数进行设置。5)初始化各模式下的堆栈6)建立IRQ中断的总的入口地址7)初始化应用程序的执行环境8)跳入Main函数,进入C程序;==============================================================================;NAME:2440INIT。S;DESC:Cst

4、artupcodes;Configurememory,ISR,stacks;InitializeC-variables;==============================================================================;GET类似于C语言的include,option.inc文件内定义了一些全局变量,memcfg.学习参考资料分享WORD格式整理inc文件内定义了关于内存bank的符号和数字常量,2440addr.inc文件内定义了用于汇编的s3c2440寄存器变量和地址GEToption.incGETmemcfg

5、.incGET2440addr.inc;SDRAM自刷新位,把寄存器REFRESH的第22位处置1,REFRESH的第22位为SDRAM的自刷新位,BIT_SELFREFRESH常量用于给其进行赋值。BIT_SELFREFRESHEQU(1<<22);下面是对arm处理器模式寄存器对应值的常数定义,arm处理器中有一个CPSR程序状态寄存器,CPSR后五位决定目前的处理器模式,共有七种工作模式;Pre-definedconstantsUSERMODEEQU0x10;用户模式FIQMODEEQU0x11;FIQ快速中断模式IRQMODEEQU0x12;中断模式SVCMODE

6、EQU0x13;管理模式ABORTMODEEQU0x17;中止模式UNDEFMODEEQU0x1b;未定义指令模式MODEMASKEQU0x1f;系统模式NOINTEQU0xc0;CPSR中的I位和F位置1,禁止IRQ和FIQ中断;定义了7种处理器模式下的栈的起始地址,其中用户模式和系统模式共有一个栈空间,栈空间位于RAM中,此处位于SDRAM中;_STACK_BASEADDRESS在option.inc中定义,值为0x33ff8000,位于SDRAMUserStackEQU(_STACK_BASEADDRESS-0x3800);0x33ff4800~SVCStackEQ

7、U(_STACK_BASEADDRESS-0x2800);0x33ff5800~0x3ff47ffUndefStackEQU(_STACK_BASEADDRESS-0x2400);0x33ff5c00~0x3ff57ffAbortStackEQU(_STACK_BASEADDRESS-0x2000);0x33ff6000~0x3ff5bffIRQStackEQU(_STACK_BASEADDRESS-0x1000);0x33ff7000~0x3ff5fffFIQStackEQU(_STACK_BASEADDRESS-0x0);

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

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

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