RISC-V 软件环境

GoCoding
• 阅读 520

RISC-V 想玩起来,第一步,可以先准备软件环境。

官方仓库的 GNU 工具链 riscv-gnu-toolchain 里,有 Spike pkQEMU 的仿真环境,可以一次性把编译和仿真环境都准备好。

准备工具链

前提

如果是 Windows / WSL2 环境,在获取代码前,请确认工作目录属性是区分大小写的。因为 glibc 只能在区分大小写的文件系统上编译。不然,编译时会遇到链接错误,如 undefined reference to 'rtld_errno'

# 以管理员权限打开 Windows 终端
#  https://github.com/microsoft/terminal

# 查询工作目录区分大小写属性
fsutil.exe file queryCaseSensitiveInfo D:\wslcodes
已禁用目录 D:\wslcodes 的区分大小写属性。

# 启用工作目录区分大小写属性
fsutil.exe file setCaseSensitiveInfo D:\wslcodes enable
已启用目录 D:\wslcodes 的区分大小写属性。

如果是 Linux / Ubuntu 环境,那已经是区分大小写的了。

获取代码

git clone --depth 1 -b master https://github.com/riscv-collab/riscv-gnu-toolchain.git
cd riscv-gnu-toolchain
git submodule update --init --recursive

如果不用 QEMU 仿真,可以删除该子模块,加快下载:

git rm --cached qemu
git submodule update --init --recursive

编译安装

Ubuntu 20 上的编译过程。其他操作系统,请见工具链的 README。

# 依赖
sudo apt update -y
sudo apt install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build -y
#  for spike
sudo apt install device-tree-compiler -y

# 配置
#  --enable-multilib 支持 32-bit 与 64-bit,默认 64-bit
#  --with-sim=spike 带上 Spike 模拟器 (only support rv64* bare-metal/elf toolchain)
./configure --prefix=/opt/riscv --enable-multilib --with-sim=spike

# 编译
sudo make linux build-sim

# 环境
#  可以进 ~/.bashrc,但影响系统 gcc 环境
export RISCV_HOME=/opt/riscv
export PATH=$RISCV_HOME/bin:$RISCV_HOME/riscv64-unknown-elf/bin:$PATH

# 测试
riscv64-unknown-elf-gcc --version
spike -h

编译程序并运行

编写文件 hello.c:

#include <stdio.h>

int main(int argc, char const *argv[]) {
  printf("hello riscv\n");
  return 0;
}

编译程序:

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

Spike 运行:

# 默认 64-bit,故用 pk64,另有 pk32
$ spike $(which pk64) hello
bbl loader
hello riscv

# spike debug 运行
$ spike -d $(which pk64) hello
: h

更多资料

GoCoding 个人实践的经验分享,可关注公众号!

点赞
收藏
评论区
推荐文章
GoCoding GoCoding
3年前
TensorFlow Serving
可以快速部署Tensorflow模型,上线gRPC或RESTAPI。官方推荐Docker部署,也给了训练到部署的完整教程:。本文只是遵照教程进行的练习,有助于了解TensorFlow训练到部署的整个过程。准备环境准备好,导入依赖:pyimportsysConfirmthatwe'reusingPython3assert
晴空闲云 晴空闲云
3年前
webpack配置typescript详解
随着现在typescript使用越来越多,作为打包工具界的webpack怎么编译typescript呢?下面我把自己的实践记录一下,成功编译了typescript文件,并且引入typescript模块后,也可以成功编译。我们从新建webpack项目开始,在此之前先贴一下环境,经常环境不同会造成不同的状况,这边先贴上的环境:$nodevv14.15.4$
小尉迟 小尉迟
1年前
Autodesk Maya 2023 M1 (玛雅2023)配置要求
AutodeskMaya2023forMac一款三维动画设计制作软件,Maya2023为三维动画制作、建模、仿真和渲染软件提供了一个功能强大的集成工具组合。可用于动画、环境、运动图形、虚拟现实和角色创建。完备的三维软件帮助您在建模、动画、照明和视觉特效中实
Wesley13 Wesley13
3年前
OP
OPTEEQEMU下载编译运行等环境搭建流程1.安装开发工具2.建立git环境3.检出指定版本4.克隆optee\_my\_test5.编译toolchains6.编译全部工程7.运行qemu8.总结本文基于《手机安全和可信应用开发指南:
Wesley13 Wesley13
3年前
C++环境配置
本地环境设置如果您想要设置C语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和C编译器。一、安装GNU的C编译器为了在Windows上安装GCC,您需要安装MinGW。为了安装MinGW,请访问MinGW的主页www.mingw.org(https://www.oschina.net
Wesley13 Wesley13
3年前
FPGA 开发流程
仿真的概念完成了设计输入以及成功综合、布局布线之后,只能说明设计符合一定的语法规范。但是是否满足要求的功能,是不能保证的,还需要通过仿真流程对设计进行验证。仿真的目的就是在软件环境下,验证电路的行为和设想的行为是否一致。仿真分为功能仿真和时序仿真。(1)功能仿真(行为仿真,前仿真)  功能仿真是在设计输入之后,还没有综合、布局布线
Stella981 Stella981
3年前
Jenkins环境搭建及项目部署(linux)
一、  环境搭建1. Jenkins安装及配置安装:利用官方提供的Debian软件包仓库,可以自动安装和升级,首先将秘钥添加到系统。wgetqO https://pkg.jenkins.io/debianstable/jenkins.io.key|sudoaptkeya
Wesley13 Wesley13
3年前
NEO从源码分析看网络通信
_0x00前言_NEO被称为中国版的Ethereum,支持C和java开发,并且在社区的努力下已经把SDK拓展到了js,python等编程环境,所以进行NEO开发的话是没有太大语言障碍的。比特币在解决拜占庭错误这个问题时除了引入了区块链这个重要的概念之外,还引入了工作量证明(PoW)这个机智的解决方案,通过数学意义上的难题来保证每个
广州华锐互动电力事故安全仿真培训_事故安全技能VR实训_vr虚拟电力事故演练
利用虚拟仿真技术进行电力事故演练早已屡见不鲜,不少电力企业都引进了这一新型技术。那么虚拟仿真电力设备事故应急演练有什么价值呢?1、通过设置电力事故环境场景的多种变化类型,并通过在虚拟演练过程中,培训员工进行对不同事故演练场景进行随机应变。2、在模拟推演的过程中,完成各类应急指挥角色的任务,员工可以在虚拟环境中对事故情况进行查询,以及拟定应急实施策略和制定应急
流浪剑客 流浪剑客
1年前
支持M1、SecureCRT 9 Mac激活版 附 许可文件
是一款功能强大的终端仿真软件,它通过提供安全的、高效的会话,帮助用户在远程设备上完成各种任务。SecureCRT9具有出色的性能和可靠性,能够处理复杂的网络环境,提供高效的远程访问和管理。SecureCRT9主要特点包括:安全性:SecureCRT9提供了
GoCoding
GoCoding
Lv1
Go coding in my way :)
文章
32
粉丝
5
获赞
10