【RISC-V】riscv-tools的编译安装


前言

本系列想利用gem5模拟器进行全系统模拟RISC-V,并进行系统的设计空间探索。本章是第二步:riscv-tools的编译安装,即risc-v模拟器和一些其他必要的risc-v工具,例如riscv-pk,其中包含bbl,用于Linux和类似操作系统内核的引导加载程序,还包含pk,服务系统通过将目标机应用程序转发到主机来调用目标机器应用程序的代理内核。上一章需要用到本章的pk进行交叉编译的程序的运行。

一、操作步骤

下载安装riscv-tools并安装其依赖

我把几个步骤放在一起了,每个步骤的具体的说明可以参考上一篇riscv-gnu-toolchain的安装,思路一致。

#下载riscv-tools
git clone https://github.com/riscv/riscv-tools.git
#更新子模块
git submodule update --init --recursive

这个比较好下载
由于build.sh中用到了$RISCV,所以我们需要在编译之前指定$RISCV

#环境变量
export RISCV=/home/pc/jupyter/xiaolu/riscv-fs/installation/toolchain/
mkdir /home/pc/jupyter/xiaolu/install/riscv/toolchain
./build.sh

大概编译二十多分钟(如果是rocket-tools,由于加上了riscv-gnu-toolchain,需要一个小时)

export PATH="$RISCV/bin:$PATH"

安装依赖

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 libfl-dev

二、测试安装是否成功

出现下面这句话即为成功
在这里插入图片描述
再尝试我们上一章生成的hello是否可以执行

spike pk hello

在这里插入图片描述
输出hello world!,成功。

如果出现

User fetch segfault @ 0xfffffffffffffffe

segfault的意思是段错误
原因是hello.c的编译目标不是riscv64的newlib
重新执行

riscv64-unknown-elf-gcc -o hello hello.c
spike pk hello

即可

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值