【问题标题】:RISC-V 32b Simulation with SpikeRISC-V 32b 模拟与 Spike
【发布时间】:2025-11-30 04:45:01
【问题描述】:

有人在 32 位模式下使用过 Speak/pk 吗?

$ riscv32-unknown-elf-gcc -g -m32 -march=RV32IM -DRISCV test.c test
$ spike --isa=RV32 pk test
assertion failed @ 0x000052bc: ntohl(hdr->magic) == FDT_MAGIC

最初的build.sh安装没有提供32b版本的pk,所以我用了riscv32-unknown-

elf-gcc 为 32b RISC-V 目标处理器交叉编译 pk 如下:

$ ../configure --prefix=$RISCV/riscv32-unknown-elf --host=riscv32-unknown-elf
$ make XLEN=32
$ make install

有什么想法吗?

【问题讨论】:

    标签: gcc simulation riscv


    【解决方案1】:

    你可以检查一下……

    1. 尝试“spike --isa=RV32IM”命令行。
    2. pk 只能使用 RV32IM 指令编译。
    3. 您的断言消息似乎...与设备树功能有关。这样你就可以
      • 检查设备树 blob 是否正确。
      • 回滚您的 pk 并秒杀到不包含设备树功能的版本。

    【讨论】:

    • pk 无法使用 RV32IM 指令集编译(.S 文件中有未知指令)。 pk 可以用 RV32IMA 和 RV64IMA 编译。 “spike --isa=RV32IM”在我的测试中没有改变任何东西恢复到旧版本(2015 年夏季)。当时spike不支持--isa配置并成功运行了我们的32b测试程序,即使pk是在64b中编译的,即“spike pk64 test32”工作。