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的补码。

  • 相关阅读:
    Mysql中类型转换函数Cast()的用法
    Spark scala 删除指定列为Na的行
    R语言之变量动态赋值
    MAC 把隔空投送添加到个人收藏边栏
    R查看变量数据类型 typeof()
    R Rstudio生成HTML报告
    Rstudio 添加定时任务
    R Studio编译一个包package
    Linux sed删除文件后几行
    Github添加自我介绍-新建一个和用户名同名的仓库并添加README.md即可
  • 原文地址:https://www.cnblogs.com/shirishiqi/p/5779914.html
Copyright © 2011-2022 走看看