intel hex文件格式浅析
最近学习EZ-USB FX2LP CY7C68013A固件和上位机程序的开发,通过Keil uVision2开发的固件烧写程序有两种,一种为hex文件格式,可以烧写到USB芯片内部RAM中;另一种为iic文件,可以烧写到CY7C68013A(128脚)外配的eeprom中。这两种固件文件可以通过cypress公司提供的专业下载工具下载到usb芯片或eeprom中。为了调试方便,想把下载程序集成到自己编写的vc界面中,首先编写了hex文件的烧写程序,(接下来有时间会试着编写一下icc文件的下载程序)再此过程中,学习了hex文件的格式,下面跟进网上查找的资料对hex文件格式进行总结,一来可以方便自己以后查阅,而来为有需要的朋友共享。
Hex 全称 (Intel HEX)文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。大多数EPROM编程器或模拟器使用Intel HEX文件。
Intel HEX由任意数量的十六进制记录组成,每行为一个记录,每个记录由“:”(0x3a)开始,以回车键结束(0x0d,0x0a)且每个记录包含5个域,它们按以下格式排列:
:llaaaatt[dd...]cc (eg::10000000020003787FE4F6D8FD75812B02004A02D6)
每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:
: 每个Intel hex记录都由冒号开头.
ll (10,即16个数据)是数据长度域,它代表记录当中数据字节(dd...)的数量.
aaaa(0000) 是地址域,它代表记录当中数据的起始地址.
tt (00)是代表hex记录类型的域,它可能是以下数据当中的一个:
00 – 数据记录
01 – 文件结束记录
02 – 扩展段地址记录
04 – 扩展线性地址记录