Hex格式和Mot格式简介

一、Hex格式介绍 
 
1.1 什么是 Intel HEX 文件格式? 
Intel HEX文件 是由一行行符合 Intel HEX文件格式的文本所构成的ASCII文本文件。
在Intel HEX文件中,每一行包含一个HEX记录。
这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。
Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。
大多数EPROM编程器或模拟器使用Intel HEX文件。 
 
1.2 记录格式 
Intel HEX由任意数量的十六进制记录组成。
每个记录包含5个域,它们按以下格式排列: 
:llaaaatt[dd...]cc 
每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。
 
每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样: 
: 每个Intel HEX记录都由冒号开头. 
ll 是数据长度域,它代表记录当中数据字节(dd)的数量. 
aaaa 是地址域,它代表记录当中数据的起始地址. 
tt 是代表HEX记录类型的域,它可能是以下数据当中的一个: 
00 – 数据记录 
01 – 文件结束记录 
02 – 扩展段地址记录 
04 – 扩展线性地址记录 
dd 是数据域,它代表一个字节的数据.
一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域(ll)中指定的数字相符. 
cc 是校验和域,它表示这个记录的校验和.
校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足. 
 
1.3.1 数据记录 
Intel HEX文件由任意数量以回车换行符结束的数据记录组成.
数据记录外观如下: 
:10246200464C5549442050524F46494C4500464C33 
其中: 
10 是这个记录当中数据字节的数量. 
2462 是数据将被下载到存储器当中的地址. 
00 是记录类型(数据记录) 
464C…464C是数据. 
33 是这个记录的校验和. 
 
1.3.2 扩展线性地址记录(HEX386) 
扩展线性地址记录也叫作32位地址记录或HEX386记录.
这些记录包含数据地址的高16位.
扩展线性地址记录总是有两个数据字节,外观如下: 
:02000004FFFFFC 
其中: 
02 是这个记录当中数据字节的数量. 
0000 是地址域,对于扩展线性地址记录,这个域总是0000. 
04 是记录类型 04(扩展线性地址记录) 
FFFF 是地址的高16位. 
FC 是这个记录的校验和,计算方法如下: 01h + NOT(02h + 00h + 00h + 04h + FFh + FFh). 
 
当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.
线性地址保持有效,直到它被另外一个扩展地址记录所改变. 
通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址. 
 
以下的例子演示了这个过程.. 
来自数据记录地址域的地址(2462)+ 扩展线性地址记录的数据域(FFFF) = 绝对存储器地址(FFFF2462)。  
 
1.3.3 扩展段地址记录(HEX86) 扩展段地址记录也叫HEX86记录,它包括4-19位数据地址段.
扩展段地址记录总是有两个数据字节,外观如下: 
:020000021200EA 
其中: 
02 是记录当中数据字节的数量. 
0000 是地址域.对于扩展段地址记录,这个域总是0000. 
02 是记录类型 02(扩展段地址记录) 
1200 是地址段. 
EA 是这个记录的校验和,计算方法如下: 01h + NOT(02h + 00h + 00h + 02h + 12h + 00h). 
 
当一个扩展段地址记录被读取,存储于数据域的扩展段地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.
段地址保持有效,直到它被另外一个扩展地址记录所改变. 
通过把记录当中的地址域与被移位的来自扩展段地址记录的地址数据相加获得数据记录的绝对存储器地址. 
 
以下的例子演示了这个过程.. 
来自数据记录地址域的地址(2462)+ 扩展段地址记录数据域(1200)= 绝对存储器地址(00014462)。
 
1.3.4 文件结束(EOF)记录 
Intel HEX文件必须以文件结束(EOF)记录结束.
这个记录的记录类型域的值必须是01.
EOF记录外观总是如下: 
:00000001FF 
其中: 
00 是记录当中数据字节的数量. 
0000 是数据被下载到存储器当中的地址. 在文件结束记录当中地址是没有意义被忽略的.0000h是典型的地址. 
01   是记录类型 01(文件结束记录) 
FF   是这个记录的校验和,计算方法如下: 01h + NOT(00h + 00h + 00h + 01h). 
 
 
1.4 Intel HEX文件例子: 
下面是一个完整的Intel HEX文件的例子: 
:10001300AC12AD13AE10AF1112002F8E0E8F0F2244 
:10000300E50B250DF509E50A350CF5081200132259 
:03000000020023D8 
:0C002300787FE4F6D8FD7581130200031D 
:10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016 
:04003F00A42EFE22CB 
:00000001FF   
 
 
二、Mot格式介绍   
Motorola S-records 16进制文件格式是嵌入式中除intel hex之外很常见的格式,下面是它的格式:
 
+-------------------//------------------//-----------------------+ 
| type(hex1) | count(hex 1) | address | data | checksum(从count累加到checksum,总和为0xFF) | 
+-------------------//------------------//-----------------------+ 
 
S0 :标识记录,地址域长度为2个字节,并用0000填充,数据区记录了一些模块名称和版本之类的信息 
S1 :数据记录,地址域长度为2个字节,数据区域为数据内容。 
S2 :数据记录,地址域长度为3个字节,数据区域为数据内容。 
S3 :数据记录,地址域长度为4个字节,数据区域为数据内容。 
S5 :统计记录,地址域长度为2个字节,内容是之前数据记录(S1,S2,S3)的个数,数据区域空。 
S7 :运行记录,地址域长度为4个字节,内容是程序启动的地址,数据域空。 
S8 :运行记录,地址域长度为3个字节,内容是程序启动的地址,数据域空。 
S9 :运行记录,地址域长度为2个字节,内容是程序启动的地址,数据域空。 
 
下面是一个例子,大家看看: 
S02B0000433A5C446F63756D656E747320616E642053657474696E67735C7A6F75642E4143434F554E54535C7D 
S208010000FFFFFFFFFA 
S30800020000000000F5 
S5030002FA 
S9030000FC 
 
第一行:没什么,开个头而已。 
第二行:地址0x10000有4个0xFF 
第三行:地址0x20000有3个0x00 
第四行:标明之前有两条数据记录 
第五行:程序从0x0000地址开始运行 
 
关于checksum的算法 
checksum = 0xFF - (从count段开始所有字节的总和)。 
 
转自:http://www.cnblogs.com/guoyiqi/archive/2013/06/12/3203859.html
完结。

Hex格式和Mot格式简介的更多相关文章

  1. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  2. AngularJS过滤器filter-时间日期格式-渲染日期格式-$filter

    今天遇到了这些问题索性就 写篇文章吧 话不多说直接上栗子 不管任何是HTML格式还是JS格式必须要在  controller 里面写 // new Date() 获取当前时间 yyyy-MM-ddd ...

  3. C#RSA算法实现+如何将公钥为XML格式转为PEM格式,给object-C使用

    .net中,处于安全的考虑,RSACryptoServiceProvider类,解密时只有同时拥有公钥和私钥才可以.原因是公钥是公开的,会被多人持有.这样的数据传输是不安全的.C#RSA私钥加密,公钥 ...

  4. RSA密钥之C#格式与Java格式转换

    前言 最近由于项目需求,服务端由c#编写,客户端由java编写.通信数据使用RSA非对称加密.但是java和c#生成的密钥格式是不一样的,所以需要转换格式才可以正常使用.网上搜到使用java进行格式转 ...

  5. Linux下如何将数据库脚本文件从sh格式变为sql格式

    在从事软件开发的过程中,经常会涉及到在Linux下将数据库脚本文件从sh格式变为sql格式的问题.本文以一个实际的脚本文件为例,说明格式转换的过程.        1. sh文件内容 本文中的文件名为 ...

  6. TLV格式是什么格式

    TLV 格式是什么格式 一种可变格式, TLV 的意思就是: Type 类型, Lenght 长度, Value 值: Type 和 Length 的长度固定,一般那是 2 . 4 个字节: Valu ...

  7. 把硬盘格式化成ext格式的cpu占用率就下来了

    把硬盘格式化成ext格式的cpu占用率就下来了我是使用ext4格式 @Paulz 还有这种事情? 现在是什么格式?- - ,你自己用top命令看一下啊就知道什么东西在占用cpu了下载软件一半cpu都用 ...

  8. Linux在什么样的从脚本文件数据库sh格式改变sql格式

    在软件开发过程中,经常参与Linux从下一个脚本文件数据库sh格式改变sql格式问题.在本文中,一个实际的脚本文件,例如.描述格式转换过程.        1. sh文件内容 本文中的文件名称为exa ...

  9. Excel 转 vCard格式、CSV格式

    Excel 转vCard格式(常用于Gmail, Yahoo, 163等).CSV格式(常用于Outlook, Foxmail等) 最近公司邮件通讯录需要更新,我就将原来的通讯录给删除了,准备重新导入 ...

  10. Intel格式与Motorola格式的区别

      Intel低字节在前 Motorola高字节在前    在进行CAN总线通信设计或者测试过程中,经常看到CAN总线信号的编码格式有两种定义:Intel格式与Motorola格式.究竟两种编码格式有 ...

随机推荐

  1. Andorid 悬浮窗的适配指北

    我们有时候需要显示一个悬浮窗,悬浮窗由服务开启,里面会有一些操作 但是我在开发时遇到高版本 Android12 和低版本4.4 ,显示不一样的地方 这边整理了下适配的方法方案 一:根据版本不一的时候, ...

  2. Respecting causality is all you need for training physics-informed neural networks

    未发表 本篇工作时关于连续时间的PDE.也是从因果关系的角度入手,最近看过几篇该作者的工作.(简而言之就是从初始条件方向开始训练) 目前的PINN框架缺乏尊重物理系统演化所固有的时空因果结构.因此,作 ...

  3. 8. semahpore原理

    一.上游服务比下游服务抗压能力应该更强一些,因为直接面对的是前端.Semphore控制访问特定资源的线程数目.实际场景可用于限流.在hystrix里面用了. 另:ReadWriteLock的作用是什么 ...

  4. element-ui中el-table设置多选checkbox时,selection-change重复执行,以及选不中问题

    项目中使用了elementUI中el-table的选择框.在另外一个地方展示选中的行的数量.设置显示数量之后,选择框就无法选中,change事件执行两次. 解决办法:给el-table设置row-ke ...

  5. 使用@RequestBody注解接收的实体类中的某些参数为null

    原因 postman调试接口 为null的参数命名不符合"驼峰法",类似实体类A的属性 cEnterpriseId ,这种命名是不规范的 和lombook的@Data注解有关 用p ...

  6. 关于pytorch一些基础知识的备份

    压缩conda环境用于备份目的实际上没有意义,因为还有其他方法可以做到这一点,这可能更合适,并使用专为此而设计的内置功能. 您可以创建一个环境.txt版本conda,详细说明其中的每个模块和版本,然后 ...

  7. SqlServer outer apply(cross apply)

    select * from baiduacg_cookies c cross apply (select top 1 * from product where AccountId=c.AccountI ...

  8. SAP 删除销售订单行

    DATA: ORDER_HEADER_INX TYPE BAPISDH1X, GT_ORDER_ITEM_IN TYPE STANDARD TABLE OF BAPISDITM, LS_ORDER_I ...

  9. Day 11 11.2 文件操作

    文件操作 引言 到目前为止,我们做的一切操作,都是在内存里进行的,这样会有什么问题吗?如果一旦断电或发生意外关机了,那么你辛勤的工作成果将瞬间消失.是不是感觉事还挺大的呢?现在你是否感觉你的编程技巧还 ...

  10. 【剑指Offer】【链表】合并两个排序的链表

    题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. A:若链表1为空,则合并后的链表头结点为pHead2:若链表2为空,则合并后的链表头结点为pHead ...