ARM基础知识连载之九

发布者:innovation2最新更新时间:2015-03-16 来源: laogu关键字:ARM  基础知识 手机看文章 扫描二维码
随时随地手机看文章
*****************************************************

ARM映像文件

*****************************************************

1.ELF格式文件的结构


1.1映像文件组成部分


**一个映像文件有一个或多个域组成
**每个域包含一个或多个输出段
**每个输出段包含一个或多个输入段
**各输入段中包含了目标文件中的代码和数据

输入段中包含了四类内容:代码、已经初始化的数据、未经初始化的存储区域、内容初始化成0的存储区域。每个输入段有相应的属性,可以为只读的(RO)、可读写的(RW)以及初始化成0的(ZI)。ARM连接器根据个输入段的属性将这些输入段分组,再组成不同的输出段及域。
一个输出段中包含了一系列的具有相同的RO、RW和ZI属性的输入段。输出段的属性与其中包含的输入段的属性相同。在一个输出段的内部,各输入段是按照一定的规则排序的,这将在1.3节油详细地介绍。
一个域中包含1-3个输出段,其中个输出段的属性各不相同。各输出段的排列顺序是由其属性决定的。其中RO属性的输出段排在最前面,其次是RW属性的输出段,最后是ZI属性的输出段。一个域通常映射到一个物理存储器上,如ROM或RAM。


1.2ARM映像文件各组成部分的地址影射


ARM映像文件各组成部分在存储系统中的地址有两种:一种是映像文件位于存储器中时(也就是该映像文件运行之前)的地址,称之为加载地址;一种是映像文件运行时的地址,称之为运行时地址。之所以有这两种地址,是因为映像文件在运行时,其中的有些域是可以移动的新的存储区域。比如,已经初始化的RW属性的数据所在的段运行之前可能保存系统的ROM中,在运行时,他被移动至RAM中。
通常,一个映像文件包含若干个域,各域又包含若干的输出段。ARM连接器需要知道如下的信息,已决定如何生成相应的映像文件。
**分组信息          决定如何将个输入段组织成相应的输出段和域。
**定位信息          决定个域在存储空间地址中的起始地址。
根据映像文件中地址映射的复杂程度,有两种方法来告诉arm连接器这些相关信息。对于映像文件中地址映射关系比较简单的情况,可以使用命令行选项;对于映像文件中地址映射关系比较复杂的情况,可以使用一个配置文件。

 

2.arm映像文件的入口点


2.1arm映像文件的入口点有两种类型:一种是映像文件运行时的入口点,称为初始入口点(initial entry point),另一种是普通入口点(entry point).
初始入口点是映像文件运行时的入口点,每个映像文件只有一个唯一的初始入口点,它保存在ELF头文件中。如果映像文件是被操作系统加载的,操作系统是通过跳转到该初始入口点处来加载该映像文件。
普通的入口点是在汇编中用ENTRY伪操作定义。他通常用于标志该段代码是通过异常中断处理程序进入的。这样连接器删除无用的段时不会将该段代码删除。一个映像文件中可以定义多个普通入口点。
应该注意的是,初始入口点可以使普通入口点,但也可以不是普通入口点。


2.2定义初始入口点


初始入口点必须满足下面两个条件:
**初始入口点必须位于映像文件的运行时域内。
**饱含初始入口点的运行时域不能被覆盖,他的加载地址和运行地址必须是相同的。
可以使用连接选项-entry address来指定映像文件的初始入口点。这时,address指定了映像文件的初始入口点的地址值。
对于地址0x0处为rom的嵌入式应用系统,可以使用-entry 0x0来指定映像文件的初始入口点。这样当系统复位后,自动跳转到该入口开始执行。
如果映像文件是被一个加载器加载的,该映像文件该映像文件必须包含一个初始化入口点。这种映像文件通常还包含了其他普通入口点,这些普通入口点一般为异常中断处理程序的入口地址。
当用户没有指定-entry address时,连接器根据下面的规则决定映像文件的初始入口点。
**如果输入的目标文件中只有一个普通入口点,该普通入口点被连接器当成映像文件的初始入口点。
**如果输入的目标文件中没有一个普通入口点,或者其中的普通入口点多于一个,则连接器生成的映像文件中不包含初始入口点,并产生警告信息。

2.3普通入口点的用法


普通入口点是在汇编中用ENTRY 伪操作定义。在嵌入式应用中,各异常中断的处理程序入口使用普通入口点标示。这样连接器在删除无用段时不会将该段代码删除。
一个映像文件中可以定义多个普通入口点。没有指定连接选项-entry addres时,如果输入的目标文件中只有一个普通入口点,该入口点被连接器当成映像文件的初始入口点。

关键字:ARM  基础知识 引用地址:ARM基础知识连载之九

上一篇:ARM基础知识连载之十
下一篇:ARM基础知识连载之八

推荐阅读最新更新时间:2024-03-16 13:55

对于51单片机和arm9开发板串口通信问题的分析
距离毕设的时间还剩20天左右,这几天一直忙着做毕设,今天终于将51单片机和串口通信的问题解决了,抽出点时间,写一下遇到的问题。不然,过几天又忘了,记录下来也给后续学习的技术宅能提供一点帮助。 我的串口实验是:ARM9 控制板通过串口发送一个指令,51接受到这个指令后,根据这个指令控制小车的运行方式。(为什么不用arm9直接控制小车而采用51控制小车呢? 答:我的想法是电机驱动这一块直接交付给下一级控制器,程序简单,容易实现,况且通过串口,只需解析一个指令就可以实现)。 1、做此类串口通信一定要记得共地,我采用的方法是直接用5v直流输出引出了两个接口,分别为两个控制板供电,这样的话串口通讯的电压没有一点问题。 2、做串口通讯的
[单片机]
史上最全ARM指令集详解
算术和逻辑指令 ADC : 带进位的加法 (Addition with Carry) ADC{条件}{S} , , dest = op_1 + op_2 + carry ADC 将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样就可以做比 32 位大的加法。下列例子将加两个 128 位的数。 128 位结果: 寄存器 0、1、2、和 3第一个 128 位数: 寄存器 4、5、6、和 7第二个 128 位数: 寄存器 8、9、10、和 11。 ADDS R0, R4, R8 ; 加低端的字 ADCS R1, R5, R9 ; 加下一个字,带进位 ADCS
[单片机]
史上最全<font color='red'>ARM</font>指令集详解
ARM公布2013年一季度财报,营收增26%
2013年4月23日,ARM公布了2013年一季度财报,财报显示,2013年一季度ARM总营收为2.639亿美元,营业利率为50.5%,税前利润为8940万英镑,合1.36亿美元,以美元计算,营收同比增长26%。 一季度共发售26亿颗基于ARM处理器产品,同比增长35%。 一季度亮点: 更广泛的处理器授权: 新增22个处理器授权涵盖智能手机、移动计算、数字电视以及可穿戴技术产品。 新内核的授权: 新增9个Cortex -A处理器授权,新增了一家ARMv8 架构授权客户。 Mali图像处理器授权新增三个,其中包括一个最新的Skrymir授权。 推出基于ARMv8架构的Cortex-A57与Cortex-A53处理器优化
[手机便携]
ARM各种异常返回地址的计算
首先,给出ARM的三级流水线结构图,这是后面分析的基础。 上图中最左侧为指令的地址,根据三级流水线结构,当PC=0X3008是时,正在执行的的指令是地址为0X3000的这条指令。 在分别讲解各种异常之前,有一条总的原则就是:无论发生什么异常(除复位),内核总是会首先将 PC-4 放到LR寄存器中。 1.复位异常 复位异常中断处理程序不需要返回。在复位异常中断处理程序开始整个用户程序的执行,因而它不需要返回。 2.未定义指令异常 指遇到了一条没有定义的指令导致执行时无法执行。 未定义指令异常中断是由当前执行的指令自身产生的,当产生中断时,程序计数器PC的值还未更新(未更新的意思就是PC还没有加4 呢);
[单片机]
<font color='red'>ARM</font>各种异常返回地址的计算
基于arm的嵌入式棒料剪切生产线数控系统
  随着我国制造业的飞速发展,对机加配件的加工精度和生产效率的要求越来越高,对企业生产过程的自动化程度也提出了很高的要求。棒料是各种模锻件、辊锻件、辗压件生产用的主要原料,而棒料剪断机就是为这些锻压工艺准备坯料的剪切下料设备。早期的剪切系统电气控制普遍采用交流接触器和继电器进行控制,经过长年使用,部件老化,设备故障频发。在维护中由于分立元件众多,集成度差,许多故障不能及时处理,给企业生产带来诸多不便。   由于PLC伺服控制系统具有定位精度高、响应速度快、抗干扰能力强、运行平稳等特性,采用可编程序控制器(PLC)控制系统的高精度自动剪切生产线的应用越来越广泛。但PLC还是软PLC技术,都有实时性不强的缺点,很难实现复杂、快速的
[单片机]
基于<font color='red'>arm</font>的嵌入式棒料剪切生产线数控系统
基于ARM和CPLD的高速数据采集系统设计
随着人们对高空的兴趣发展和研究需要,越来越多的科学实验被科研人员搬到了空中进行,气球探空和无人机实验是比较典型的方法。这些科学实验往往需要在一定的实验条件到达时触发某特定实验现象,从而对发生时间非常短促且不具备可重复再现性的实验目标数据进行高速采集。日前,笔者参与的项目中需要完成的任务是:通过无线通信实现对高空实验设备进行控制,对整个实验过程进行实时观察分析(其中的实验条件数据通过GPS接收机,红外虚拟逻辑分析仪等设备实时采集),待实验到达触发条件时,通过手动(或自动可选)的方法实施触发,再对触发后的实验目标数据进行采集并传回地面PC进行后续的分析处理。该项目采用ARM和FPGA分别作为主从处理器设计嵌入式采集系统,采用多通道
[单片机]
基于<font color='red'>ARM</font>和CPLD的高速数据采集系统设计
ARM DesignStart:通向定制化SoC的最快、最低风险之路
在过去几年里,ARM DesignStart已经帮助了成千上万的芯片开发者和技术创新者们快速、方便和免费地获取ARM IP。ARM正在加速智能嵌入式设备的创新:显著增强后的DesignStart帮助设计者以最快、最方便的方式获取已获证实的、可信任的IP,并提供通往出片成功的最完善保障。 最新加入ARM DesignStart、使得定制化SoC更易实现的增强内容包括: 新加入了ARM Cortex-M3处理器——这也是目前用于互联智能设备的主流处理器。与Cortex-M0一起,他们能够帮助设计者应对最广范围的智能嵌入式和定制化SoC的需求。 对Cortex-M0和Cortex-M3处理器取消预付授权。企业现在能够以产品
[嵌入式]
<font color='red'>ARM</font> DesignStart:通向定制化SoC的最快、最低风险之路
英特尔X86与ARM的“架构王”之争
目前英特尔X86和ARM架构占据了全球微处理器指令集架构的主流市场,其中英特尔X86主宰了计算机、服务器等高性能高功耗领域,ARM架构则几乎垄断了9成移动通信芯片,活跃在手机、物联网等低功耗低成本应用,二者关于“架构王”的竞争持续至今。 8月初的一则传闻更是将它们再次推向了风口浪尖。据消息称华为将卖掉服务器业务,主要出售采用英特尔X86架构的服务器业务,而保留采用ARM架构的鲲鹏芯片的服务器业务。 那么英特尔X86和ARM架构是如何发展以及怎样构成竞争的?这中间又夹杂着怎样的“恩怨情仇”? 先发制人:英特尔X86 1968年,从仙童半导体“出走”的戈登∙摩尔、诺伊斯等人花费了1.5万美元从IN-TELCO公司手中买下了Inte
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved