RISCV Spike仿真踩坑过程

使用Spike 进行RISCV程序仿真

1. 安装RISCV Toolchain

git克隆项目

git clone --recursive https://github.com/2212047152/riscv-gnu-toolchain.git

安装依赖

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev libusb-1.0-0-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev device-tree-compiler pkg-config libexpat-dev

编译配置

# 加上--enable-multilib使用指令集组合
# --prefix指定安装地址 
./configure --prefix=/opt/riscv --enable-multilib

编译(时间很长,建议多开核和线程)

若安装位置须管理员,加入sudo

sudo make -j32

编辑环境变量

编辑后注销登录或使用source ~/.bashrc

# file:~/.bashrc
# spike 和 pk 编译使用
export RISCV=/opt/riscv
# toolchain 变量
export PATH="$PATH:/opt/riscv/bin"
# 后续pk变量提前设置
export PATH="$PATH:/opt/pk/riscv32-unknown-elf/bin"

验证

riscv64-unknown-elf-gcc

2. 安装RISCV ISA Sim Spike

git克隆项目

git clone --recursive https://github.com/2212047152/riscv-isa-sim.git

预配置,编译,安装

不需要配置32/64或ABI

../configure --prefix=$RISCV
make -j32
sudo make install

3. 安装RISCV PK

git克隆项目

git clone --recursive https://github.com/2212047152/riscv-pk.git

预配置,编译,安装

需要指定ISA和ABI,必须和编译程序的ISA和ABI一致,否则会抛出异常或卡住无输出

../configure --prefix=/opt/pk --host=riscv64-unknown-elf  --with-arch=rv32imac_zicsr_zifencei  --with-abi=ilp32
make -j32
sudo make install

验证

由于步骤1配置了PATH,因此可以直接验证
pk

4. 测试

编写测试程序(只采用I指令集)

// file:hello.c
#include <stdio.h>
#include <math.h>

#define PI 3.14159265

int main ()
{
   double x, ret, val;

   x = 45.0;
   val = PI / 180;
   ret = sin(x*val);
   printf("%lf 的正弦是 %lf 度\n", x, ret);
   
   return(0);
}

编写Makefile

编译必须加-g,否则反汇编没有原文,spike也无法运行
编译加入-lm目的是为了使用math.h

all:
	riscv64-unknown-elf-gcc -march=rv32i -mabi=ilp32 -g hello.c -o hello -lm
	riscv64-unknown-elf-objdump -d -S hello > hello.dasm

编译

make

5. 验证

必须保证pk build / gcc make / spike sim时的ISA和ABI一致

spike --isa=RV32I $(which pk) ./hello

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值