您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

ARM7启动进程

发布日期:2011-04-23


  嵌入式体系资源有限,步伐通常都固化在ROM总运行。ROM中步伐实行前,必要对体系硬件和软件运行环境举行初始化,这些事变是用汇编语言编写的启动步伐完成。启动步伐是嵌入式步伐的开头部分,应与应用步伐一起固化在ROM中,应起首在体系上运行的启动步伐应包括各模块中大概出现的全部段类,并公道摆设他们的序次。

  启动步伐一样平常流程如下:

  (1) 设置入口指针

  (2) 设置停止向量
 
  ARM7请求停止向量必须设置从0地点开始,连续8*4字节的空间,分别是复位、未定义指令错误、软件停止、预取指令停止、数据存取错误、IRQ、FIQ和一个保存的停止向量

  (要是ROM位于0地点,向量表包括一系列指令跳转到停止办事步伐,不然向量必须被动态初始化。可以在启动步伐中添加一段代码,使其在运行时将向量表拷贝到0地点开始的存储空间)

  对付各未用的停止,用一个只包括返回指令的哑函数,以防备错误引起体系的紊乱。

  (3) 初始化堆栈和寄存器

  取决于利用了哪些停止,一样平常体系必要处理惩罚哪些错误范例。一样平常来说办理者堆栈必须设置,要是利用了IRQ停止,则IRQ堆栈必须设置。

  要是体系利用了DRAM大概其他的外设,则必要设置相干的寄存器,以确定其革新频率,数据总线宽度等信息

  (4) 初始化存储器体系

  有些芯片可通过寄存器编程初始化存储器体系,而对付巨大体系通常集成了MMU来办理内存

  (5) 要是有须要变化处理惩罚器模式、状态

  要是体系应用步伐是运行在用户模式下,可在此处将体系改为用户模式并初始化用户的堆栈指针。

  (6) 初始化C语言所必要的存储器空间

  为精确运行应用步伐,在初始化时期应将体系必要读写的数据和变量从ROM拷贝到RAM里;一些请求快速相应的步伐,如停止处理惩罚步伐,也必要在RAM中运行; 要是利用FLASH,对FALSH的檫除和写入也肯定要在RAM里运行。ARM公司软件开辟东西包中的链接器提供了散布装载的成果,可以实现这一目标。

  (7) 呼唤C语言

  ARM有两种指令集:16位的Thumb指令集和32位的指令集。利用16位的存储器可以低落本钱,在这种环境下,Thumb指令集的团体实行速率要比ARM32位指令团体,并且进步了代码密度,以是一样平常用Thumb 编译器将C语言 步伐编译成16位代码。

  处理惩罚器在一开始总是处于ARM状态,可利用BX指令转换到Thumb状态召唤C语言步伐,要细致的是用C语言编写的嵌入式步伐时,要克制利用不克不及被固化到ROM的库函数。

  技能难点阐发

  (1) MMU的利用

  MMU 是存储器办理单位的缩写,是用来办理假造内存体系的器件。MMU通常是CPU的一部分,本身有少量的存储空间存放从假造地点到物理地点的立室表。此表称作TLB(转换旁置缓冲区)。全部数据恳求都送往MMU,由MMU决定命据只在RAM中还是在大容量的存储器配置内。要是数据不在存储空间内,MMU将孕育产生页面错误停止

  MMU的两个重要成果是:

  将假造地点转换为物理地点

  控制存储器存取容许。MMU关失时,虚地点直接输出到物理地点总线。

  在实践中,利用MMU办理了以下几个题目:

  a. 利用DRAM作为大容量存储器时,要是DRAM行列黑白平方的,会导致该DRAM的物理地点不连续,这将给步伐的编写调试导致极大的不方便,而得当的配置MMU可将其转换成假造地点连续的空间

  b. ARM内核的停止向量表放在0地点,对付ROM在0地点的环境,无法调用停止办事步伐,以是在调试阶段有须要将可读写的存储器空间映射到0地点。

  c. 体系的某些地点是不容许被访问的,不然会孕育产生不可预料的结果,为克制这类错误,可以通过MMU立室表的设置将这些地点设为用户不可以存取范例;

  d. 启动步伐中天生的立室表中包括地点映射,存储页面大小(1M、64K 大概4K)以及是否容许存取等信息。