完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ARM中的各种源文件(包括汇编文件,C语言程序及C++程序等)经过ARM编译器编译后生成ELF(Executable and linking format)格式的目标文件。这些目标文件和相应的C/C++运行 时用到的库经过ARM连接器处理后,生成ELF格式的映像文件(image),这种ELF格式的映像文件是一种可执行文件,可被写入嵌入式设备的ROM 中。
bin文件是真正的可执行文件,axf文件是ARM的调试文件,除了包含bin的内容之外,还附加了其他的调试信息,这些调试信息加在可执行的二进制数据的前面,所以把axf文件写到ARM的指令执行地址(一般是0x0)将不能运行,因为在此地址前几十个字节的数据不是可执行的二进制数据,而是头部的调试信息;而bin文件正是去掉了调试信息的可以执行的“精华”部分。如果在ADS中设置为“Release”,则该目录下的axf里面的内容和bin里面的内容是一样的!(注:生成目标是Release,将不包含调试信息)。如果在ADS中设置为“DebugRel”,则该目录下的axf里面的内容和bin里面的内容是不相同的! ARM映像文件的组成:ARM映像文件是一个层次性结构的文件,包括了域(region),输出段(output section)和输入段(input section)。一个映像文件由一个或者多个域组成;每个域最多由三个输出段(RO、RW、RI)组成;每个输出段又包含一个或者多个输入段;各输入端包含了目标文件中的代码和数据。(从逻辑结构来看,可参考《ARM程序分析与设计》,同物理结构相对照)。 相关术语: 1。域 (region):一个映象文件由一个或多个域组成。反过来说域是组成映象文件的最大的结构。所谓域,指的就是整个bin映像文件所处在的区域,它又分为加载域和运行域。加载域就是映像文件被静态存放的工作区域,一般来说flash里的整个bin文件所在的地址空间就是加载域,当然程序一般都不会放在flash里执行(程序也可以在Nor Flash上直接运行),一般都会搬到sdram里运行工作,它们在被搬到sdram里工作所处的地址空间就是运行域。一个域通常映射到一个物理存储器上,如ROM和RAM等。 另一种说法: ADS 在生成加载域——也就是映象文件(bin 文件)时,是把 RW 紧接在 RO 后面,这并不是RW 的实际地址,而仅仅是加载时,也就是烧写到 flash 时的代码和数据的临时地址。而程序真正开始运行起来时——也就是运行时域,一切情况又都发生了变化,该到什么地方的,就应该去什么地方,所以RW 应该拷到 0xa00000 处(设置 参数rw_base=0xa00000),以保证连接时的符号值都是正确的。 2。段(Section):一个域包含一个或多个输出段,一个输出段包含一个或多个输入段。我们输入的代码,一般有代码部分和数据部分,这就是所谓的输入段,每个输入段都有相应的属性,可以为只读(ro),可读写的(rw)以及初始化成0的(zi)。 3。RO,RW,ZI:输入段中包含4类内容:代码、已经初始化的数据、未经初始化的存储区域、内容初始化为0的存储区域。每个输入段有相应的属性,可以为只读(RO)、可读写(RW)以及初始化为0的(ZI)。ARM连接器根据各输入段的属性将这些输入段分组,再组成对应属性的输出段。对于加载域中的输出段,一般来说ro段后面紧跟着rw段,rw段后面紧跟着zi段。在运行域中这些输出段并不连续,但rw和zi一定是连着的。zi段和rw段中的数据其实可以是rw属性。 注:(1); C中的指令以及常量被编译后是RO类型数据。 (2); C中的未被初始化或初始化为0的变量编译后是ZI类型数据。 (3); C中的已被初始化成非0值的变量编译后市RW类型数据。 4。加载时地址:是映象文件位于存储器(还没有运行,一般在ROM中)时的地址。 5。运行时地址:是映象文件运行时的地址。 |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2195 浏览 6 评论
1994 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4549 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 03:33 , Processed in 0.378339 second(s), Total 46, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号