在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2494|回复: 2

[讨论] Perl脚本实现HEX文件转coe文件,无法在windows正常运行

[复制链接]
发表于 2014-2-21 17:54:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
用Perl脚本实现HEX文件转coe文件,在Linux下面运行正确,但是在windows下却无法正确
运行,我是在windows安装了ActivePerl_5.16.2.3010812913。
(之前用了两个小工具,hex2bin和bin2coe,然后还需要把生成的coe文件高低字节互换,再
去掉高两位,觉得很麻烦,就直接下了脚本一步到位,coe是用于FPGA测试用的程序文本)
代码如下,初学Perl,请教高手为何在windows下无法正确运行?谢谢!

#####################################################
#!/usr/bin/perl

my $address_old=0;
my @data_list;
my $hex_file = glob '.HEX';
open HEX,'<',"$hex_file";
(my $coe_file = $hex_file) =~ s/.HEX/.coe/;
open COE,'>',"$coe_file";

print COE "MEMORY_INITIALIZATION_RADIX=2;\n";
print COE "MEMORY_INITIALIZATION_VECTOR=\n";

while(<HEX>){

chomp;

if(/\A[0-9A-Z]{2})([0-9A-Z]{4})00([0-9A-Z]*)([0-9A-Z]{2})\Z/){

my @data_temp = split //,"$3";

my $instr_num = hex($1)/2;

my $address_new = hex($2)/2;

for(my $j=address_old;$j<$address_new;$j++){

push (@data_list,"0"x 14);

}

for(my $i=0;$i<$instr_num;$i++){

my $m1 = sprintf "%04b",hex(shift(@data_temp));

my $m0 = sprintf "%04b",hex(shift(@data_temp));

my $n1 = sprintf "%02b",hex(shift(@data_temp));

my $n0 = sprintf "%04b",hex(shift(@data_temp));

my $data = join "",$n1,$n0,$m1,$m0;

push (@data_list,$data);

}

$address_old = $address_new + $instr_num;

}
}

my $data_list = @data_list;
for(my $x=0;$x<$data_list;$x++){

if($x==@data_list-1){

print COE "$data_list[$x]",";\n";

}else{

print COE "$data_list[$x]",",\n";

}
}

close HEX;
close COE;
exit;
 楼主| 发表于 2014-2-24 10:10:27 | 显示全部楼层
回复 1# scott_lele


修改了三处语法错误!已经通过!line 5:
my $hex_file = glob "*.HEX";
line 19:
for(my $j=$address_old;$j<$address_new;$j++){
line 37:
print COE "$data_list[$x]",";";
发表于 2018-3-12 15:27:59 | 显示全部楼层
你好,能把hex2bin,bin2coe俩工具分享一下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-28 17:27 , Processed in 0.025361 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表