riscv - 如何在 RISC-V 中生成 hex 文件

标签 riscv

现在,我实现了一个 ASP(专用处理器),我想用 RISC 型架构来开发它。在网上读了一下,我得出的结论是最好的选择是使用 RISC-V。

这个想法是用 Verilog 开发一个设计,以便它可以运行 RISC-V ISA。而且处理器应该运行的软件应用程序非常简单,只有很少的算术运算。因此,由于它只是一个应用程序,因此处理器不需要支持操作系统。

我正在考虑从我的 C 应用程序生成一个十六进制文件并将该文件加载到 ROM 内存中。但我找不到如何从我的 C 代码生成十六进制文件?

我使用riscv64-unknown-elf-gcc正确构建了我的程序

$ riscv64-unknown-elf-gcc -o 你好你好.c

但我不知道如何生成十六进制文件。

有人可以告诉我如何创建这个文件吗?

最佳答案

您可以使用程序elf2hex,该程序在构建RISC-V工具链时安装。您可以在 riscv-tests/benchmark 存储库的 Makefile ( https://github.com/riscv/riscv-tests/blob/master/benchmarks/Makefile ) 中看到生成十六进制文件的示例:

%.hex: %
    elf2hex 16 32768 $< > $@

以及用法:

elf2hex <width> <depth> <elf_file>

关于riscv - 如何在 RISC-V 中生成 hex 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31321469/

相关文章:

c - RISC-V 跳转到中断处理程序

riscv - GPL 的 RISC-V 实现?

riscv - 什么是 RISC-V,它与以前的 RISC 架构相比如何?

verilog - RISC-V 异常与中断

assembly - RISC-V NOP指令

rust - 为什么我不能在 QEMU 中启动自定义内核?

riscv - 生成具有不同缓存大小的 RISCV Rocket 芯片

cpu-architecture - 为什么RISC-V ISA中有很多零目标指令不影响硬件?

linux-kernel - 使用 QEMU 和 GDB 调试 xv6 时无法访问内核空间

assembly - 将值加载到 RISC-V 中的寄存器