bin文件转换成hex的方法
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
前言
这里记录一下在linux系统下,将bin文件转换成hex文件的几种方式,以及在testbench中编写for循环,去实现任意8的整数倍位宽mem的初始化。
一、hexdump
在linux系统下,利用hexdump这个命令,可以实现将bin文件转换成hex文件。
1.1 hex文件8bit对齐
其中hex文件中8bit对齐的指令如下,hello是需要转换的bin文件。
hexdump -v -e/'1 "%02x\n"' hello > hello.hex
得到的hello.hex文件格式如下:
7f
45
4c
46
02
01
01
00
00
00
1.2 hex文件32bit对齐
其中hex文件中32bit对齐的指令如下:
hexdump -v -e'/4 "%08x\n"' hello > hello.hex
得到的hello.hex文件格式如下,hello是需要转换的bin文件。
464c457f
00010102
00000000
00000000
00f30002
00000001
000100c2
00000000
00000040
00000000
格式化输出:
hexdump -e '1/4 "%08_ax: "' -e '4/4 "%08x " "\n"' xxx.bin
结果如下,其中,星号表示内容与上面重复。
00000000: aa55a55a 00000080 00000001 00000008
00000010: 00000000 00000000 00000000 00000000
*
00000810: 00000080 00000080 00000080 00000080
*
00000890: 00080080 00080080 00080080 00080080
*
00000910: 00100080 00100080 00100080 00100080
*
00000990: 00180080 00180080 00180080 00180080
*
00000a10: 00200080 00200080 00200080 00200080
*
00000a90: 00280080 00280080 00280080 00280080
*
00000b10: 00300080 00300080 00300080 00300080
二、在testbench中实现其他位宽对齐的方法
上述的方式只能实现8bit或者32bit对齐的方式输出hex文件,那么在应用的时候,如何实现其他8的整数倍位宽对齐的数据加载呢,这时候我们需要在tb中写一个循环去实现。
假设我们的mem是64bit对齐,而我们的hex是8bit对齐,具体实现的思路是,先利用一个8bit位宽的mem,将hex中的数据通过$readmemh系统函数读上来,再利用for循环,将mem中的数据拼接好赋给sram中的memory,实现代码参考如下,
bit [7:0] mem [0:500];
initial begin
int t0;
$readmemh("program.hex", mem);
# 1; //这里延时主要是防止和sram中的mem初始化相冲突
for(int i=0; i<500; i++) begin
t0 = i>>3;
$display("t0 = %d", t0);
test_top.interconnet_wrapper.u_axi_sdpram_w32d2048_w32d2048.memory[t0] =
{mem[i+7], mem[i+6], mem[i+5], mem[i+4], mem[i+3], mem[i+2], mem[i+1], mem[i] };
$display("mem = 0x%h", test_top.interconnet_wrapper.u_axi_sdpram_w32d2048_w32d2048.memory[t0]);
end
end
其中,上述代码for循环中的500可以根据自己bin文件的大小去更改,数据的拼接方式也可以变成任意8的整数倍位宽。
总结
通过上述方法,可以实现bin到hex的转换,并实现任意8bit整数倍位宽,sram的memory数据加载。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献4条内容
所有评论(0)