如何从C代码生成用于测试32位RISC-V硬件设计的六进制文件



我在Verilog中有一个基于Berkeley的Vscale处理器开发的硬件设计。为了测试设计,我想编译一些C程序并生成六进制文件。我最终想从hexfiles生成ROM并执行Verilog模拟。哪种编译器最适合这个目的,riscv64未知elf-gcc还是riscv32未知elf-gc?Vscale处理器的体系结构是RV32IM。

您可以使用elf2hex命令从elf文件创建一个.hex文件(使用gcc-o创建),即:elf2hex 16 4096 my_elf_file > output.hex如果您要使用32位体系结构,我会使用riscv32未知的elf-gcc进行编译。

我目前使用objcopy来测试我的核心设计。当前版本的gcc包含一个补丁,该补丁使objcopy能够输出verilog内存文件。

riscv32-unknown-elf-objcopy -O verilog input.elf output.vh

我可以很容易地将这些文件加载到modelsim中的模拟中。

但为了回答您的问题,这将生成英特尔格式的十六进制文件。

riscv32-unknown-elf-objcopy -O ihex input.elf output.hex

Objcopy还支持指定要导出的代码段以及在哪些内存位置。

最新更新