项目名称:HEX2C
开发者:刘军华
运行环境:Dos
软件授权:免费
软件大小:196KB
版本信息:
2010/1/8 v1.0
drawft
功能简介:
Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录由十六进制数组成的机器码或者数据常量,Intel HEX文件经常被用于将程序或数据传输存储到ROM.EPROM,大多数编程器和模拟器使用Intel HEX文件.
许多编程烧录文件都是HEX格式,而同时C语言又是最普遍的编程语言,所以在工作过程中,如果有一个小工具能够转换这两种语言,也许会给人们的工作带来一些便利。所以,有了这个小工具。
HEX文件转换主要就是先记录记录的类型和地址,根据记录类型,分类处理。如果是数据记录,则先写入记录的长度、地址和类型,再写入记录数据;如果是文件结束记录,直接写文件结束;如果是扩展段地址记录,则取出上次保存的数据记录的地址域得到地址,根据以下公式:绝对内存地址 = 数据记录中的地址 + 移位后的扩展段地址,扩展段地址左移4位;如果是扩展线性地址记录,则取出上次保存的数据记录的地址域得到地址,根据算法:绝对内存地址 = 数据记录中的地址 + 移位后的扩展线性地址,扩展线性地址左移16位。
    C语言文件中,按照记录长度,记录地址,记录类型和数据记录的顺序来进行写入。而数据以“{”开头,以“}”结束。
这个小工具的特点是:简单,针对性强。只针对HEX文件转换成用户定义的C语言文件。
使用方法:
这个小工具HEX2C在使用过程中,有以下三种格式
1. HEX HEX文件地址 C文件地址
例如:HEX D:\HEX.hex  D:\C.c
2. HEX  -s HEX文件地址  -o  C文件地址
例如:HEX  -s  D:\HEX.hex  -o D:\C.c
3. HEX  -o C文件地址  -s  HEX文件地址
例如:HEX  -o D:\C.c  -s  D:\HEX.hex
    当命令行参数类型不正确时,直接输出HELP(帮助)提示,告诉使用者这个工具的正确格式是什么。帮助提示中,会出现三个例子去诠释命令格式。
    当命令参数正确且运行成功,会输出The conversion is done!的字符串告诉用户,文件转换成功,用户可以在指定的路径中看到输出文件。如果参数类型正确但是发生异常时,根据
情况,输出错误原因。比如,输入的HEX文件不存在,程序输出字符串HEX open ERROR。程序过程中返回的指针发生错误,则打印字符串“C file can't be opened!或“HEX file can't be opened!。再比如当输入的HEXhex字符串是什么文件有记录格式错误,比如不以“:”开头,程序会输出字符串invalid start token。而且,此工具在使用时,不可以省略文件后缀。
附录:
一.相关背景
HEX文件都是由记录组成的,一个Intel HEX文件可以包含任意多的十六进制记录,其中包含了地址信息。它的每一行都是一个记录一个数据记录以一个回车和一个换行结束<回车为0x0d换行为0x0a>。它是由任意数量的十六进制数组成。每个记录包含五个域,它们以以下格式排列的:   
:aabbbbcc[dd…]ee
上面每一组不同的字母代表不同的一个域,每个字母代表一个十六进制的数字,每一个域至少由两个十六进制编码数字组成,每两个十六进制编码数字组成一个字节。具体描述如下:
1、  每个HEX记录都由冒号开头;
2、  aa表示这个记录中的数据长度域,它代表记录当中数据字节[dd…]的字节数量。
3、  bbbb是地址域,它代表记录当中数据的起始地址。
4、  cc 是代表HEX记录类型的域,它可能是以下数据当中的一个:
00 – 数据记录
01 – 文件结束记录
02 – 扩展段地址记录
04 – 扩展线性地址记录
5、  dd 是数据域,它代表一个字节的数据,一个记录可以有许多数据字节。记录当中数据字节的数量必须和数据长度域(aa)中指定的数字相符。
6、  ee 是校验和域,它表示这个记录的校验和。校验和的计算是通过将记录当中所有十六
进制编码数字对的值相加,以256为模进行以下补足。
二.参考文献
Intel , 1/6/88. Hexadecimal Object File Format Specification Revision A

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。