ARM系统基本文件格式

这里所说的ARM系统基本文件格式,都是在基于ARM的嵌入式系统开发中常会碰到的文件格式。 

 ARM系统基本文件格式有三种:
1) BIN,平板式二进制格式,一般用于直接烧写到Flash中,也可以用于加载到monitor程序中。
2) ELF,EXECUTABLE AND LINKABLE FORMAT,一种通用的OBJECT文件格式,一般由GNU COMPILER COLLECTION (GCC)产生。
3) AXF,BIN格式的扩展版,主体部分同BIN,在文件头和尾加入了调试用的信息,用于AXD。
    本文主要讨论BIN与ELF。
    首先说明,ELF格式是一种OBJECT文件格式。一般OBJECT文件都可以分成三类:可重定位OBJECT文件,可执行OBJECT文件,共享OBJECT文件。ELF格式文件也可以分成这三种。
    首先说说可重定位OBJECT文件。这种OBJECT文件一般由GCC中的ASSEMBLER(as)产生(请不要认为GCC只是编译器),里面除了二进制的机器代码,还有一些可用于进行重定位的信息。它主要是作为LINKER(ld)的输入,LINKER将跟据这些信息,将需要重定位的符号重定位,进而产生可执行的OBJECT文件。ELF格式的可重定位OBJECT文件由header与section组成。
    Header 包括ELF header 与 section header. ELF header 位于文件的头部,用于存储目标机器的架构,大小端配置,ELF header大小,object文件类型,section header 在文件中的偏移,section header    的大小,section header 中的项目数等信息。Section header 则定义了文件中每个section 的类型,位置,大小等信息。Linker就是通过查找ELF header,找到section header 的入口,再在section header 中找到相应的section 入口,进而定位到目标section 的。
    Section 包括
.text    :经过编译的机器代码。
.rodata  :只读的数据,例如printf(“hello!”)中的字符串hello。
.data    :已初始化的全局变量,局部变量将在运行时被存放在堆栈中,不会在.data或 .bss段中出现。
.bss     :未初

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值