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. C盘满了

      今天电脑提示说C盘磁盘满了,于是开始做磁盘清理 右击C盘,点管理. 点击磁盘清理,勾选中临时文件.下载.回收站.缩略图,然后点击清理系统文件. 再去查看C盘仍然没有多大变化,于是挨个翻看C盘到底哪 ...

  2. Andorid 悬浮窗的适配指北

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

  3. vue v-if不生效

    正确写法 <block v-for="(item, index) in imgArray"> <image :src="item" class ...

  4. 关于Java的惰性求值

    最近在学scala的时候,函数传参可以是传名参数,或者传值参数 1.Scala中的传名参数是什么意思?lazy关键字有什么作用? Scala官方文档的定义是:传名参数 仅在被使用时触发实际参数的求值运 ...

  5. 【PyCharm】PyCharm设置深色背景

    操作步骤 1.依次点击File->Settings->Appearance&Behavior->Appearance 2.选择Theme为Darcula

  6. 微信小程序授权及检测访问当前页面需要去登录的操作

    1.小程序授权登录 这里我直接复制代码: login.js const app = getApp() Page({ data: { //判断小程序的API,回调,参数,组件等是否在当前版本可用. ca ...

  7. STM32中HAL库和标准库的区别

    转载自:https://www.lmonkey.com/t/RwykY8bBX STM32标准库与HAL库比较 ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL ...

  8. 记SpringBoot中 Consider defining a bean of type 'com.xxx.classname' in your configuration 错误的解决办法

    一.背景 笔者项目中.有两个子模块代码.需要分别在不同的包名中运行,假设一个包名为 cn.com.a,另一个包名为cn.com.b.由于启动类只加了@SpringBootApplication注解,所 ...

  9. 公共的common.scss (覆盖部分element组件主题色)

    公共的 common.scss (包含主题色 覆盖部分element组件主题色) $theme: #D50000; $litterTheme: #ec6059; .text-theme { color ...

  10. PHP连接FTP服务器获取文件

    运行结果: