首 页电子文章电子资料客户留言94论坛繁體中文
设为首页
加入收藏
联系我们
您当前的位置:中国电子前沿 -> ARM技术 -> ARM入门 -> 电子文章内容 退出登录 用户管理
栏目导航
· ARM入门 · ARM系统
· ARM应用
热门电子文章
· [USB技术] 基于DSP技术的..
· [USB技术] 在 Java 应用程..
· [USB技术] USB设计
· [linux移植] Linux解释器..
· [USB技术] 如何构造一个简..
· [USB技术] USB在数据采集..
· [USB技术] USB2.0控制器C..
· [linux移植] 在Redhat Li..
· [VHDL学习] 错误检测与纠..
· [原理欣赏] 高速高密度PC..
· [FPGA应用] FPGA器件的在..
· [ARM应用] 触摸屏在S3C24..
相关电子文章
· [图文] ARM CPU S3C4..
· arm指令集
· 维客科技的abcARM24..
· 一步一步制作ARM-Li..
· 维客科技;abcarm241..
· Building an ARM de..
· 广州联智基于EP9301..
· 维客科技abcarm2410..
· 基于ARM的数字电视
· [图文] 产品快速开发..
[ARM技术]ARM基础知识连载之九(转贴)
作者:佚名  来源:不详  发布时间:2006-9-12 16:06:51  发布人:zangyl

减小字体 增大字体

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

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时,如果输入的目标文件中只有一个普通入口点,该入口点被连接器当成映像文件的初始入口点。


[] [返回上一页] [打 印] [收 藏]
∷相关电子文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
关于本站网站帮助广告合作下载声明友情连接网站地图
Copyright © 2002-2006 EMB-CN.com. All Rights Reserved .