- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM 处理器的Boot 与Remap 于克兵,吕志明 中国地质大学(北京),北京(100083 ) E-mail :yukebing555@163.com 摘 要:以ARM 为处理器的嵌入式系统,在进入操作系统之前需要执行一段初始化代码, 叫做Boot 。它主要负责系统的初始化,包括:中断向量初始化、时钟初始化、MPU 初始化、 各种处理器模式的堆栈初始化和Image 文件的RW 段与ZI 段的初始化。处理器每次处理中 断都要从非易失性存储器读中断向量表,Remap (重映射)操作可以把中断向量表映射到更 快、更宽的RAM 中,从而加快了启动速度和中断响应速度,也使更改中断向量表成为可能。 关键词:Boot ,Remap ,中断向量表,嵌入式系统 中图分类号:TP368 文献标识码:A 1. 引言 Boot 的意思是“引导”,它是嵌入式系统上电或复位后处理器最开始执行的动作。Boot 的作用是将处理器引导至操作系统的入口,但是在进入操作系统之前引导程序需要做一些必 要的初始化。这些初始化代码是操作系统在处理器上正常运行的必要条件,也是操作系统和 硬件平台的连接纽带。由于和硬件紧密相关,所以这部分代码一般采用ARM 的汇编指令编 程实现。 系统每次上电或复位后,处理器都会从 0x0 地址处取指,因此必须保证 0x0 地址处有 可以正常执行的指令。一般厂商会将中断向量表固化到ROM (或其它非易失性存储器)里, 并将ROM 的地址映射到0x0 。但是,为了加快启动速度和中断响应速度,也方便可以更改 中断向量表,往往把向量表映射到RAM 中。但是中断向量表的开始地址是由ARM 架构决 定的,必须位于0x0 处,因此,必须把RAM 映射到0x0,这个过程就叫Remap 。 2. Boot 引导程序 任何嵌入式系统都不可避免的用到Boot 引导程序,引导程序是从系统上电到进入操作 系统之前的一段初始化代码,本节将对这段初始化代码的各个组成部分进行说明,着重论述 中断向量表与Image 文件的分散加载。 2.1 中断向量表 一个完整的嵌入式系统必须具备异常中断处理能力。ARM 体系结构中由7 种中断向量 和一个保留向量空间组成32 位的中断向量表[1],该表按一定顺序放到0x0 地址处。中断向 量表的作用就是保证有中断发生时,处理器能找到相应的中断处理函数。表中每一项存放的 其实是一条跳转指令或向PC 寄存器赋值的数据访问指令。当某个中断发生时,由系统硬件 强制程序跳转到中断向量表的对应位置,执行该地址处的跳转指令,跳转到中断处理函数, 进行中断处理。 中断向量表中的跳转指令实现方法常用的有两种:B 指令跳转和LDR 伪指令跳转。 B 指令为ARM 的RISC 单字指令,能实现的跳转空间最大为32MB,指令使用相对简 单。 LDR 伪指令等效生成1 条存储读取指令和1 条32 位常数定义指令[1] 。32 位常数存储在 LDR 指令附近的存储单元中,相对偏移小于4KB 。该32 位数据就是要跳转到的中断服务程 序入口地址。跳转的范围是任意32 位地址空间。如图 1 所示。 - 1 - [2] 有些场合只适合用LDR 伪指令而不适合B 指令 : 1、B 指令不易实现被简单复制,因为,这时B 指令中的地址为相对偏移地址,在编译器编 译之后就确定了偏移值,如果B 指令被复制到其他地址将会出现错误。 2 、B 指令的跳转范围小于32MB,这样,如果异常中断处理程序起始地址大于32MB 就不 适合使用B 指令。 图1 跳转指令 2.2 分散加载 ARM 中源文件经过ARM 编译器编译后生成ELF 格式目标文件。这些目标文件和 相关联的C/C++运行时库经过ARM 连接器处理后,生成ELF 格式的映像文件(image )。 2.2.1 ARM 映像文件的组成
文档评论(0)