基于ARM核的Bootloader代码的分析与设计(LPC2210…

2009-05-13 11:40:55来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

摘要:Bootloader是系统上电或复位后首先运行的一段代码,Bootloader代码(即启动代码)的好坏对整个系统的运行效率有着重要的影响, 而Bootloader代码与芯片的特性有着紧密的联系。本文根据用LPC2210在ADS(ARM Developer Suite)开发环境下进行嵌入式系统设计的实际经验,总结出基于ARM7TDMI内核的LPC2210处理器的Bootloader代码设计的详细流程及其中的一些关键技术和代码
关键词:ARM7TDMI核   ADS   Bootloader代码   LPC2210
前言:
基于ARM核的微处理器是目前嵌入式领域应用最广泛的RISC微处理器,以其低成本、低功耗、高性能等优点占据了嵌入式系统应用领域的领先地位。基于ARM核的芯片多数为复杂的片上系统集成, 在芯片上电或复位时,需要专门的一段代码来完成对系统的初始化。启动代码就是芯片上电或复位后进入应用程序main( )函数前执行的一段代码,它主要为运行C程序提供基本的运行环境。
1 启动代码的流程
Bootloader(启动)代码类似于PC机的BIOS(基本输入输出系统),它从系统上电或复位开始接管CPU,Bootloader根据实现的功能不同,其复杂程度也各不相同,一般随具体的目标系统和开发系统有所区别,使得每一种芯片的启动代码差别较大,不易编出统一的启动代码,但通常包括以下几个步骤:
·设置程序入口指针
·设置中断向量表
·初始化存储器系统
·初始化CPU各种模式的堆栈和寄存器
·初始化目标系统中要使用的各种片内外设
·初始化用户程序执行环境
·引导主应用程
2  基于LPC2210的Bootloader关键代码设计
2.1  LPC2210的Bootloader代码流程:
根据前面介绍的一般步骤,利用ARM公司推出的ADS开发工具,设计出LPC2210的Bootloader的具体流程(如图1)和关键代码。
Philips公司生产的LPC2210是基于ARM7TDMI核的RISC微处理器,特别适用于工业控制、医疗系统、访问控制。ADS是ARM公司推出的ARM核微处理器集成开发工具,成熟的版本是ADS1.2, ADS由命令行开发工具、ARM实时库、GUI开发环境、实用程序和支持软件组成,支持软件调试及JTAG硬件仿真调试,支持汇编、C和C++源程序。


2.2设置中断向量表
ARM芯片上电或复位后,系统进入管理模式、ARM状态、PC(R15)指向0x00000000地址处,所以必须保证向量表代码定位在0x00000000处,或者映射到0x00000000处,LPC2210系统上电或复位时,存储器映射控制寄存器(MEMMAP)等于0,Boot Block被重映射到地址0x00000000处,选择从Boot Block读取中断向量。中断向量表为每一个中断设置1个字(4个字节)的存储空间,存放一条跳转指令,通过这条指令使PC指针指向相应的中断服务程序入口,继而执行相应的中断处理程序。LPC2210的中断向量表和其它基于ARM核的芯片中断向量表较类似,只要注意LPC2210要使向量表所有数据32位累加和为零(0x00000000~0x0000001C的8个字的机器码累加), 才能使用户的程序脱机运行,限于篇幅,在此省略中断向量表的代码。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:请教周公,关于一个bootload区的问题

下一篇:基于ARM的嵌入式系统Bootloader启动流程分析(S3C44B0X)