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

在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.

转载于:https://www.cnblogs.com/swizard/articles/151970.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值