搭建过程
(1)下载更新riscv-gnu-toolchain
$ git clone https://github.com/riscv/riscv-gnu-toolchain
$ cd riscv-gnu-toolchain
手动更新隐藏文件,gitmodule:在gitee找代码上更新。
需要对应的.gitmodule的可以联系我[email protected],不太
$ git submodule update --init –recursive
(2)安装所需的软件包
$ sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel
更新一些必要的软件包如make 需要升级为4.3版本
automake 想要升级到1.16版本
(3)更改环境变量
$ vim ~/.bashrc
在最后添加(/home/Icer/riscv/riscv
是我准备安装的位置)
Exprot RISCV=/home/Icer/riscv/riscv
PATH=”/home/Icer/riscv/riscv/bin:$ PATH”
然后执行
$ source ~/.bashrc
(4)make
执行
$./configure --prefix=$HOME/riscv
$ make
该过程时间约为40分钟
(5)测试
创建hello.c文件,编写随意一个程序,或参考如下:
#includeint main() { printf("hello world!\n"); return 0; }
保存退出后,运行如下命令,编译这个程序:
$ riscv64-unknown-elf-gcc -o hello hello.c
如果此时没有报错,且目录下出现了hello文件,则编译成功。
2、riscv-toolchain的安装
下载更新riscv-tools
$ git clone --recursive https://github.com/riscv/riscv-tools.git
安装依赖包
$ sudo yum 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
添加环境变量
$ vim ~/.bashrc
在最后添加(/home/Icer/riscv/riscv
是我准备安装的位置)
PATH=”/home/Icer/riscv/riscv/toolchain/bin:$PATH”
然后执行
$ source ~/.bashrc
安装pk和spike
在文件夹下有响应的脚本文件,分别安装pk和spike两个工具
验证
验证刚刚hello产生的那个文件,执行(建议看一下pk和spike是否安装成功)
$ spike pk hello
到这说明了工具链的安装是没有问题了。
3、Cva6的安装和使用
目前成功安装的cva6版本号为v4.2.0,verilator的版本为3.9.24较为稳定,较高版本的verilator似乎不太兼容。
下载更新cva6
在进行git clone时,需要注意版本:
git clone https://github.com/openhwgroup/cva6.git --branch v4.2.0 ./cva6-v4.2.0
后缀在gitee上同样适用
cd cva6-v4.2.0
git submodule update --init --recursive
安装依赖
依赖主要有两个:device-tree-compiler和verilator
安装device-tree-compiler使用如下命令:
sudo yum install device-tree-compiler
如果该命令不行,安装如下链接的教程:
Install Device Tree Compiler on CentOS using the Snap Store | Snapcraft
下载3.924版本的verilator:
git clone https://github.com/verilator/verilator --branch v3.924 ./verilator-3.9.24
更新环境变量:
在最后添加:
export VERILATOR_ROOT=/home/ICer/riscv/verilator
PATH="$VERILATOR_ROOT/bin/:$PATH"
不建议使用脚本安装。
安装ariane
make verilate
目前网上比较简单的测试是输入
work-ver/Variane_testharness rv64um-v-divuw
但是会出错。
而我们自行测试是没有问题的。
使用Verilator模式运行一个RISC-V ELF程序:速度是很慢的
$ echo '
#include
int main(int argc, char const *argv[]) {
printf("Hello Ariane!\\n");
return 0;
}' > hello.c
$ spike-dasm < trace_hart_00.dasm > logfile.txt
$ vim logfile.txt
$ riscv64-unknown-elf-gcc hello.c -o hello.elf
$ make verilate
$ work-ver/Variane_testharness $RISCV/riscv64-unknown-elf/bin/pk hello.elf
会出现:
查看运行过程
这两个文件会一直更新代表在运行了