马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 caicaixuehua 于 2012-10-20 16:45 编辑
cpu仿真时,必须把c编译器编译好的二进制文件经过处理后用verilog加载到rom中。 现在以arm7为例,设rom模型为32位宽(即rom里面的reg为:reg [31:0] mem[DEPTH-1:0]) 1.使用MDK编辑产生bin文件(产生bin文件的设置似乎对8051不起作用)(也可以产生hex文件处理,但是处理起来比较麻烦,所以产生bin文件进行处理) 设置如下即可
2.产生的arm0.bin文件格式如下:
3.现在需要对这个文件进行处理,才可以用verilog中的readmemh读入rom中去
由于rom为32位位宽,则必需把数据处理成32位位宽(arm0.bin文件中为8位位宽),如果直接读入,则:
mem[0]='h1c; mem[1]='hf0; mem[2]='h9f; mem[3]='he5; mem[4]='h1C;
mem[5]='hF0;
mem[6]='h9F;
mem[7]='hE5; . . .
而我们实际的需要的是:
mem[0]='he59f_f01C; mem[1]='he59f_f01c; . . .
因此我们需要对此arm0.bin处理一下,格式应该如下:
也可以如下:
或者其它形式,只要是一个数字组应该为32位的十六进数
4.手动处理似乎比较麻烦,大家可以用c,或者perl脚本之类的处理一下 我自已写的c的处理代码和可以直接运行的exe文件如下:
注意:如果直接要运行test.exe处理文件的话,文件名要为arm0.bin且test.exe文件处于一个文件下
test.rar
(6.85 KB, 下载次数: 60 )
注:前段时间仿真freearm时,在eetop上找了好久也没有找到相当的文章(也有可能没有找到),自己瞎搞了好久才搞定,故写下来,有不对之处,还请大家多多指教。
|