欢迎来到EDA中国!
当前位置:网站首页 >资源共享 > 嵌入式

ARM处理器启动代码的分析与编程

  • 100k
  • pdf
  •  
  •  
  • 下载
  • 2013-06-20
  • 软件简介

 处理器启动代码的分析与编程

    由于芯片的复杂性,在用户程序运行之前需要有一段启动代码来初始化程序的运行环境,本文就!"#$系列的*芯片的启动代码部分做一些简单的分析。!启动代码简介在+(位的!"#芯片的程序开发中,大多采用’语言编程,在运行’程序之前,要对系统进行初始化,就像是&’机的,-./一样,这部分的初始化就是启动代码。因为!"#公司只做!"#的内核,其他公司在获得  !"#的内核后自行生产自己的/.’0/12345.6’789:芯片,所以不同厂家生产的芯片,启动代码也不尽相,但是启动代码大都实现以下功能:异常向量表的定义、堆栈初始化、系统变量初始化、中断系统初始化、地址重映射等。芯片的内存资源如下:。一般来说,对于嵌入式系统

   上电复位后,总是会从一段".#里开始执行程序,对于来说这个".#就是重映射到外部>%!/C后,就开始了用户汇编代码的编写,这部分代码实现异常向量表的定义、堆栈初始化、系统硬件初始化、’程序运行环境初始化,最后跳转到用户’语言主程序。"建立中断向量表系统上电复位后,首先执行,..@%.!A?"D执行这部分代码的结果是将外部>%!/C*;B*******重映射("?#!&)为逻辑地址*;********,简单说就是当执行逻辑地址*;********处的程序的时候,系统会到实际地址的*;B*******去寻址。以下如不特别说明,提到的地址都看作逻辑地址。对*;B*******处程序的编写,是我们编程的开始。这部分开始的+(个字节就是中断向量表(图)),当异常发生时,系统自动跳转到相应的异常执行程序。例如,当普通外部中断发生时,系统会跳到*;)B去执行程序。中断向量表中,*;**E*;)’的这段程序只存放每个中断的入口,程序从这个入口跳转到各自的内存去处理异常。程序如下:’.A?+(;!"#模式!"?!F4G3HI2D’.A?D"?!A.J%K;定义代码段,段名F4G3HI2,属性".?J@"K"4243%A"&’D"4243!LLI;跳转到程序复位%A"&’DM6L4N864L!LLI;跳转到未定义指令%A"&’D/O-P!LLI;跳转到软件中断%A"&’D&I4N43G7!LLI;跳转到指令预取异常%A"&’DAQ3Q!RHI3!LLI;跳转到数据异常A’A*;RS(*TNB*;保留%A"&’DU&’DVE*;NN*W;跳转到软件中断%A"&’D>-XP!LLI;跳转到外部快速中断"4243!LLIA’A"4243-683M6L4N864L!LLIA’AM6L4N864L/O-P!LLI⋯⋯程序正常复位后,首先执行%A"&’,"4243!LLI,这条指令的含义是把"4243!LLI的值加载到&’,而"4243!LLI的值通过后面的一条伪指令“"4243!LLIA’A"4243-683”得到了定义(本条指令即为将行号"4243-683所在的地址值给"4243!LLI)。使用%A"指令而不使用,指令跳转的原因有两个:%A"指令可以全地址范围跳转,而,指令不行;芯片具有"?#!&功能,当向量表位于>%!/C中时,用,指令不能跳转到正确的位置。#初始化堆栈!"#有$种工作模式,如表)所示。表)七种工作模式简介

获取帮助