RISC-V技术论坛
直播中

xinglong01

3年用户 17经验值
擅长:电源/新能源 嵌入式技术 制造/封装 接口/总线/驱动
私信 关注
[经验]

【VisionFive 2单板计算机试用体验】人脸识别1——交叉编译环境搭建

前言

近期一直在尝试搭建基于OpenCV的人脸识别系统,本以为手到擒来,毕竟在ARM开发板上也做过很多次了,但是基本功这东西,没法说!!!!尝试了多次,最先是想把ARM的那一套直接移植过来的,但是报错太多,重新编译了好多次也没办法解决;后面觉得先按照前人给的参考文章来做吧,但是貌似前人的模型编译跟编译工具版本、系统版本都有很大的关系,用新版本的工具编译的也是无法运行,最后个人觉得我还是按照当初搞ARM一样,自己搭建环境自己编译吧。
今天第一篇,主要分享下怎么搭建riscv编译环境环境,用无线网卡链接wifi也需要编译内核,磨刀不误砍柴工嘛。
下面主要介绍RISC-V架构下GNU工具链、Spike模拟器及PK代理内核的编译和安装,包括依赖包管理和配置过程,适合像我一样的RISC-V开发者入门参考,我是基于ARM经验做的,可能有的地方也会存在跟系统版本、编译工具版本强相关的问题。。

环境搭建-虚拟机准备

这是我用来编译ARM和现在用来编译riscv的虚拟机配置:
屏幕截图 2025-07-20 143747.png
要想加快编译速度,尽可能的多分配处理器和内存,毕竟不管内核还是这些模型,动不动就得编译个把小时。
安装环境[Ubuntu 22.04.3 LTS
其他要求:需要科学上网!

riscv-gnu-toolchain工具链和模拟器安装

一、编译安装riscv-gnu-toolchain

riscv-gnu-toolchain是riscv的gcc交叉编译工具链 github下载地址为:https://github.com/riscv/riscv-gnu-toolchain/tree/master
首先按照常例,更新系统的包:

sudo apt update
sudo apt upgrade

创建一个专门用在下载和存放编译包的文件夹,自己能找到的地方:

#例如:
/home/'用户名'/RISCV/riscv

克隆包到本地文件夹 RISCV:
注意,有的地方推荐是从仓库下载riscv-toolchain,这个包非常大,下载耗时很大,尤其是针对外网下载,但是包内的很多东西是用不上的,所以建议分开下载,先下载主体仓

sudo git clone https://github.com/riscv-collab/riscv-gnu-toolchain.git

下载后可以看到多了个riscv-gun-toolchain的文件夹

屏幕截图 2025-07-20 143100.png
进入并输入以下命令,查看子仓库链接:


cd riscv-gnu-toolchain
cat .gitmodules


如下屏幕截图 2025-07-20 143139.png

找到我们需要的spike \pk仓:
屏幕截图 2025-07-20 143203.png

进入riscv-gun-toolchain中会发现包内已经有这spike、pk两个文件夹了,但因为刚才只下载了主仓库,实际上这两个文件夹都是空的,现在重下下载和替换:
spike下载


sudo git clone https://github.com/riscv-software-src/riscv-isa-sim.git


下载下来的文件夹是riscv-isa-sim,用来替换掉空的spike文件夹:

sudo rm -rf spike
sudo mv riscv-isa-sim spike

屏幕截图 2025-07-20 143237.png
pk下载

sudo git clone https://github.com/riscv-software-src/riscv-pk.git

下载下来的是riscv-pk,同样替换空的pk文件夹:

sudo rm -rf pk
sudo mv riscv-pk pk

屏幕截图 2025-07-20 143305.png

下载需要使用的工具包:

sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev

我这里是已经下载过一次了,所以都提示是否最新,第一次下载需要点时间

屏幕截图 2025-07-20 143325.png

环境配置

用如下命令打开并配置运行环境:

vim ~/.bashrc
# 添加以下命令到最后面,注意这里的路径是我自己的路径,要改为自己的路径
export RISCV="/home/long/RISCV/riscv"
export PATH=$RISCV/bin:$PATH

如图:
屏幕截图 2025-07-20 143513.png

然后:

# 保存退出后重新引用修改过的 .bashrc
source ~/.bashrc

编译riscv-gnu-toolchain:

在riscv-gnu-toolchain文件夹内创建一个编译文件夹:

sudo mkdir build
cd build/

构建同时支持32位和64位的交叉编译器,执行

../configure --prefix=/home/long/RISCV/riscv --enable-multilib
#注意--prefix后面的路径匹配,非root账户加上sudo

配置好应该是这样的:
屏幕截图 2025-07-20 143648.png

接下来进行riscv-gnu-toolchain的编译:

sudo  make linux -j12

屏幕截图 2025-07-20 143723.png

#此处的12指的是我的虚拟机系统有12个核心,可以改成你自己的核心数,大了没关系,他会默认按照最大的核心数进行编译,但是小了就只有12个核心在工作了
接下来就是漫长的编译过程了,预计需要1h,耐心等待吧,核心越多编译时间越短
编译过程中物理机占用也是很大的:
屏幕截图 2025-07-20 144147.png

**补充:
构建64位的交叉编译器,执行

./configure --prefix=/opt/riscv

构建32位的交叉编译器,执行

./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d

编译完成后,用如下命令验证编译是否成功:

riscv64-unknown-linux-gnu-gcc

如下所示便是编译成功了

屏幕截图 2025-07-20 184649.png

二、编译安装spike

前面已经同步克隆了spike,这里我们就可以直接编译了,进入到
riscv-gnu-toolchain/spike路径下,安装需要的工具包:

# 安装需要的工具包
sudo apt-get install device-tree-compiler

屏幕截图 2025-07-20 184749.png

创建编译的build文件夹:

sudo mkdir build cd build

配置编译环境:

../configure --prefix=/home/long/RISCV/riscv/spike
#注意--prefix后面的路径匹配,非root账户加上sudo

屏幕截图 2025-07-20 184932.png

编译

sudo make -j12

这个编译相对较快,几分钟吧
编译成功后安装:

sudo make install

屏幕截图 2025-07-20 193309.png
屏幕截图 2025-07-20 193332.png
当你看到那个done时,带边安装成功了

配置spike命令:

vim ~/.bashrc
# 最后添加的命令如下,路径需要根据个人安装去修改
export SPIKE="/home/long/RISCV/riscv/spike"
export PATH=$SPIKE/bin:$PATH

屏幕截图 2025-07-20 193438.png

# 退出保存后,重新引用修改共的 .bashrc

source ~/.bashrc

运行检查spike:

spike

屏幕截图 2025-07-20 193521.png
至此,spike编译安装完成

三、编译安装pk

pk的编译安装和spike完全一样,只是路径问题需要注意,这里简略:

mkdir build
cd build
../configure --prefix=/home/long/RISCV/riscv/spike --host=riscv64-unknown-elf --with-arch=rv64gc_zifencei	# 需要加上 zifencei 扩展
sudo make -j12
sudo make install

配置pk命令:

vim ~/.bashrc
export SPIKE="/home/long/RISCV/riscv/spike/pk"
export PATH=$SPIKE/riscv64-unknown-elf/bin:$PATH

退出保存后,重新引用修改共的 .bashrc

source ~/.bashrc

至此,riscv-gnu-toolchain工具链和模拟器安装就完成了,下一篇介绍怎么编译OpenCV 和MNN

参考文献:

VisionFive 2 机器视觉入门——温柔的接触器Moly # VisionFive 2 机器视觉入门 1: 环境准备-赛昉科技-芯查查

编译过程

更多回帖

发帖
×
20
完善资料,
赚取积分