zoukankan      html  css  js  c++  java
  • 【转】单片机HEX文件完全解读

    转:http://www.eefocus.com/craftor/blog/10-07/193051_8ce59.html

    Craftor原创,首发于与非网,转载请保留此处。

    HEX文件,是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示。以下是一个HEX文件的内容:

    :0E00030075801175902275A03375B04480FE93
    :03000000020011EA
    :0C001100787FE4F6D8FD7581070200033B
    :00000001FF

    解释:冒号为每行数据的开始符号;蓝色表示此行数据长度,十六进制,如0E就是14;红色是数据存放的地址,如0003;粉红色是表示数据类型,00表示数据记录,01表示文件结束,02表示扩展段地址记录,03表示开始段地址记录,04表示扩展线性地址记录,05表示开始线性地址记录;后面紧跟着的是N位数据,长度由蓝色的长度位决定;天蓝色为校验位。

    一般单片机程序不会超过64K,所以通常数据类型只会出现00或者01,当然其它情况笔者还没有太深入研究。

    根据上面的分析,笔者写了一个将HEX文件转换成比特流文件的C程序,可以将常见的HEX文件写到64K的比特文件里。该程序也是在上一篇笔者写的51单片机软核仿真的时候用到的,转换后的比特文件,可以在ModelSim里用TCL脚本读入到内存里,从而可以对该软核进行具体程序的仿真运行。

    本人喜欢开源,所以公布出C代码。该程序运行会生成内容为65536行8位二进制数据的mem.txt文件,即64K的二进制数据。

    Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。
        Intel hex 文件全部由可打印的ASCII字符组成(可以用记事本打开),如下例所示:

            :2000000012014c75a800e4f508f509780a7a78e4f608dafcd283fcfded240af9a7050dbd81        

            :2000200000010ced2488ec34ff50edc283e4fcfded240af9e76d7013ed33e43c700d0dbd2a        

            :2000400000010ced2488ec34ff50e50509e50970020508e50924a8e50834fd50aee4f50874

        Intel hex 由一条或多条记录组成,每条记录都由一个冒号“:”打头,其格式如下:

             :CCAAAARR...ZZ      

        其中:

    CC   

        本条记录中的数据字节数

    AAAA   

        本条记录中的数据在存储区中的起始地址

    RR   

        记录类型:     

    00 数据记录 (data record)     
    01 结束记录 (end record)     
    02 段记录 (paragraph record)     
    03 转移地址记录 (transfer address record)

    ...   

        数据域

    ZZ   

        数据域校验和

        Intel hex文件记录中的数字都是16进制格式,两个16进制数字代表一个字节。CC域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。校验和是取记录中从数据字节计数域(CC)到数据域(...)最后一个字节的所有字节总和的2的补码。

  • 相关阅读:
    Node.js运行Vue项目
    DotNetCore知识栈
    Building gRPC Client iOS Swift Note Taking App
    React Native
    Node.js 教程
    SQL 在线教程&在线练习平台
    RxSwift + Moya + ObjectMapper
    浅谈常用的几种web攻击方式
    让MyEclipse支持mac的Retina屏解决字体模糊的问题
    Java设计模式中的单例模式
  • 原文地址:https://www.cnblogs.com/shirishiqi/p/5779914.html
Copyright © 2011-2022 走看看