• 读懂 Intel Hex 文件


    1、问题描述

    在生成Atmega128的固件程序时,常指定格式为"intel-extended",如下:

    今天要生成一版新的含Boot的程序,这就涉及到hex的拼接工作。

    那首先要搞清楚的问题就是intel hex的具体格式是什么?

    2、 intel hex 的具体格式

    Intel Hex文件是遵循Intel Hex文件格式的ASCII文本文件。
    在Intel Hex 文件的每一行中都包含了一个hex记录。这些记录是由一些代表机器语言代码和常量的16进制数据组成。

    Intel Hex文件常用来传输要存储在ROM、EPROM或者Flash中的程序和数据。大部分的EPROM编程器都能使用Intel Hex文件。

    Intel Hex由任意数量的十六进制记录组成。每个记录包含6个域,它们按以下格式排列。

    Start Code(冒号): 每个 Intel HEX 记录都由冒号开头
    Byte count(本行数据长度):是数据长度域,它代表记录当中数据字节的数量
    Address(本行数据的起始地址):是地址域,它代表记录当中数据的起始地址
    Record type(数据类型): 是代表HEX记录类型的域,它可能是以下数据当中的一个:
      00-数据记录
      01-文件结束记录
      02-扩展段地址记录
      03-开始段地址记录
      04-扩展线性地址记录
      05-开始线性地址记录
    Data(数据): 是数据域,一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域中指定的数字相符
    Checksum(校验码): 是校验和域,它表示这个记录的校验和.校验和的计算是通过将记录当中所有十六进制编码数字对
    的值相加,以256为模进行补足。

    注:目前我看到的hex文件末尾都以以下内容结束。
    :00000001FF

    3、关于扩展段地址记录

    第一行中的021000 ,其中的02表示扩展段地址记录,扩展段的地址为1000。
    第二行至以下行中的所有地址如,E000 其实际地址为0xE000 + 0x10000 = 0x1E000

  • 相关阅读:
    015_stdc_C语言
    014_stdc_C语言
    013_stdc_C语言
    012C语言
    011_stdc_C语言
    010_stdc_C语言
    009_stdc_C语言
    008_stdc_C语言
    40.委托
    39.多线程
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4185362.html
Copyright © 2020-2023  润新知