zoukankan      html  css  js  c++  java
  • ELF BIN HEX[zz]

    地址:http://www.cnblogs.com/zhangjiankun/archive/2011/12/08/2280097.html

    一、ELF
    Executable and linking format(ELF)文件是x86Linux系统下的一种常用目标文件(object file)格式,有三种主要类型:
    (1)适于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。
    (2)适于执行的可执行文件(executable file),用于提供程序的进程映像,加载的内存执行。
    (3)共享目标文件(shared object file),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。
    ELF文件格式比较复杂。
    二、HEX
    什么是Intel HEX格式?
    Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量,Intel HEX文件经常被用于将程序或数据传输
    存储到ROM、EPROM,大多数编程器和模拟器使用Intel HEX文件。
    记录格式
    一个Intel HEX文件可以包含任意多的十六进制记录,每条记录有五个域,下面是一个记录的格式。
    : llaaaatt[dd。。。]cc
    每一组字母是独立的一域,每一个字母是一个十六进制数字,每一域至少由两个十六进制数字组成,下面是字节的描述。
    : 冒号 是每一条Intel HEX记录的开始
    ll 是这条记录的长度域,他表示数据(dd)的字节数目。
    aaaa 是地址域,他表示数据的起始地址
    <如果是数据记录,这表示将要烧录的这条记录中的数据在EPROM中的偏移地址, 对于不支持扩展段地址和扩展线性地址的,如89C51,这就是此条记录的起始地址>
    tt 这个域表示这条HEX记录的类型,他有可能是下面这几种类型
    00 —-数据记录
    01 —-文件结束记录
    02 —-扩展段地址记录
    04 —-扩展线性地址记录
    dd 是数据域,表示一个字节的数据,一个记录可能有多个数据字节,字节数目可以
    查看ll域的说明
    cc 是效验和域,表示记录的效验和,计算方法是将本条记录冒号开始的所有字母对 <不包括本效验字和冒号> 所表示的十六进制数字 <一对字母表示一个十六进制数,这样的一个十六进制数为一个字节> 都加起来然后模除256得到的余数最后求出余数的补码即是本效验字节cc。
    <例如:
    : 0300000002005E9D
    cc=0×01+NOT((0×03+0×00+0×00+0×00+0×02+0×00+0×5E)%0×100)=0×01+0×9C=0×9D >
    数据记录
    Intel HEX文件由若干个数据记录组成,一个数据记录以一个回车和一个换行结束<回车为0×0d换行为0×0a>
    比如下面的一条数据记录
    : 10246200464C5549442050524F46494C4500464C33
    10 是此行记录数据的字节数目
    2462 是数据在内存<将要烧写的eprom地址>中的起始地址
    00 是记录类型00(是一个数据记录)
    464C 到 464C 是数据
    33 是此行记录的效验和
    三、BIN
    BIN文件就是直接的二进制文件,内部没有地址标记。一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可。
    总结:可以由ELF文件转化为其它两种文件,HEX也可以直接转换为BIN文件,但是 BIN要转化为HEX文件必须要给定一个基地址。而HEX和BIN不能转化为elf文件,因为ELF的信息量要大。另外还有一种ads的调试文件axf, 它可以转化为BIN文件,用以下命令 fromelf -nodebug xx。axf -bin xx。bin即可。

    arm-linux-objcopy -I ?可以查看支持的格式
     

    作者:linucos

    出处:http://linucos.cnblogs.com

    声明因文章引起的任何问题,本博客不负任何责任;版权所有,欢迎转载 
  • 相关阅读:
    心跳监控系统
    Mysql主从配置+读写分离(转)
    linux系统文件属性-硬连接、软连接
    巧用MySQL InnoDB引擎锁机制解决死锁问题(转)
    mysql数据库编码、字段编码、表编码 专题
    MySQL中select * for update锁表的问题(转)
    Android setTextColor无效_安卓setTextColor()的参数设置方式
    Android如何查看应用签名信息--微信平台开发应用的签名
    Android 生成keystore,两种方式
    MyEclipse + Maven开发Web工程的详细配置过程
  • 原文地址:https://www.cnblogs.com/linucos/p/2945851.html
Copyright © 2011-2022 走看看