您的位置:首页 > 编程语言 > C语言/C++

用C语言来实现hex文件到coe文件的转化[原创]

2005-04-13 10:24 483 查看
在ISE初始化ROM的时候要用到一个扩展名为coe的文件,而我们用medwin等编译出来的程序文件一般为hex文件,写一个程序实现它们之间的转化,会很大地提高工作效率。
hex文件结构如下:
  Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。
Intel hex 文件全部由可打印的ASCII字符组成(可以用记事本打开),如下例所示:
:2000000012014c75a800e4f508f509780a7a78e4f608dafcd283fcfded240af9a7050dbd81
:2000200000010ced2488ec34ff50edc283e4fcfded240af9e76d7013ed33e43c700d0dbd2a
:2000400000010ced2488ec34ff50e50509e50970020508e50924a8e50834fd50aee4f50874

Intel hex 由一条或多条记录组成,每条记录都由一个冒号“:”打头,其格式如下:

:CCAAAARR...ZZ  

其中:

CC 

本条记录中的数据字节数

AAAA 

本条记录中的数据在存储区中的起始地址

RR 

记录类型: 

00 数据记录 (data record) 
01 结束记录 (end record) 
02 段记录 (paragraph record) 
03 转移地址记录 (transfer address record)

... 

数据域

ZZ 

数据域校验和

Intel hex文件记录中的数字都是16进制格式,两个16进制数字代表一个字节。CC域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。校验和是取记录中从数据字节计数域(CC)到数据域(...)最后一个字节的所有字节总和的2的补码。
一个标准的coe文件的格式如下:
MEMORY_INITIALIZATION_RADIX=2;
MEMORY_INITIALIZATION_VECTOR=
01110100,
00100000,
11110101,
10000000,
01111000,
00100010,
00000001,
00010100,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
01110100,
00000101,
11110101,
10000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000;
实现原理。即是对hex进行分析,按照位置来读取相应的指令,把十六进制的指令转化为二进制的显示。
原码暂不贴,谁如果需要,给我发Email.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: