RISC-V 提供的开源工程里面提供了一个模拟器,解除了学习者、移植者对专用硬件的依赖。本文是对搭建RISC-V开源模拟器环境的简介。针对搭建过程中可能遇到的问题,提供解决建议。

1. 工具链

为了将源代码生成能在RISC-V上运行的程序,我们首先要生成工具链。

RISC-V  工具链官方资源: GitHub - riscv-collab/riscv-gnu-toolchain: GNU toolchain for RISC-V, including GCCGNU toolchain for RISC-V, including GCC. Contribute to riscv-collab/riscv-gnu-toolchain development by creating an account on GitHub.https://github.com/riscv-collab/riscv-gnu-toolchain

RISC-V  工具链国内镜像:

mirrors / riscv / riscv-gnu-toolchain · GitCodehttps://gitcode.net/mirrors/riscv/riscv-gnu-toolchain

提示: 工具链工程源文件接近7G,clone过程中容易发生失败。建议通过网盘下载,下载链接:https://pan.baidu.com/s/1KTckAhgQTcqStdgAK8yJ8g  提取码:p8my

1.1 预先准备

构建工具链依赖若干基础组件,在Ubuntu 上采用以下命令完成组件的安装。

$ sudo apt-get 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

提示: 安装组件的过程可能会遇到依赖关系不满足的问题。遇到这种情况,建议每次安装一个组件的方式,找到依赖关系不满足组件。然后利用aptitude进行的处理。

针对上述 texinfo 安装失败的例子,aptitude的使用方法如下:

$ sudo apt-get install aptitude
$ sudo aptitude install texinfo
$ sudo apt-get install texinfo

1.2 构建工具链

在模拟器中,我们将使用到的 riscv64-unknown-elf-gcc 和 riscv64-unknown-linux-gnu-gcc. 各自对用的构建命令如下:

riscv64-unknown-elf-gcc

./configure --prefix=/opt/riscv
make

riscv64-unknown-linux-gnu-gcc

./configure --prefix=/opt/riscv --enable-multilib
make linux

提示: 工具链构建时间非常长,大约2小时。

1.3 配置工具链

将工具链的bin(我们这里是/opt/riscv/bin)加进$PATH,就可以正常使用了。

2. RISC-V 模拟器

riscv-isa-sim 是 RISC-V 的模拟器,它的构建依赖于其他riscv-tools。riscv-tools中也包含了riscv-isa-sim, 所以通过对riscv-tools的构建来完成对模拟器的构建。

RISC-V  tools 官方资源

https://github.com/riscv-software-src/riscv-toolshttps://github.com/riscv-software-src/riscv-tools

RISC-V  tools 国内镜像

mirrors / riscv / riscv-tools · GitCodehttps://gitcode.net/mirrors/riscv/riscv-tools

按照以下命令完成构建

# git submodule update --init --recursive
# export RISCV=/opt/riscv/
# ./build.sh

提示: /opt/riscv 是我们这个案例中的riscv-tools安装地址。

提示: 构建需要使用管理员账号。

3.测试

按照惯例,我们还是写一个Hello world来跑第一个程序。

$echo -e '#include <stdio.h>\n int main(void) { printf("Helloworld!\\n"); return 0; }' > hello.c

build后,在spike(riscv-isa-sim)中运行,恭喜!

RISC-V 开源模拟器环境构建相关推荐

  1. 微软开源实验环境构建工具 SimuLand,模拟攻击者知识技能

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 微软开源一款工具,名为 "SimuLand",用于构建实验环境,供安全团队模拟攻击并验证微软安全产品的检测效果. Si ...

  2. COSSIM小组新突破:为网络物理系统提供支持的开源模拟器

    内容来源:ATYUN AI平台 由于物联网(IoT)的快速发展,以及它与人工智能(AI).机器学习和云技术的结合,网络物理系统(CPS)正受到越来越多的关注.这些物理和计算组件的交互网络将为关键基础设 ...

  3. python文件中环境声明_Python环境构建

    Python环境构建 @ 说明 同一台机器上,如果要使用不同版本的Python编译器,直接安装Python的编译的话,环境变量和安装路径都难以兼顾,所以Python提供了pyenv这个工具对Pytho ...

  4. ubuntu下交叉编译环境构建

    ubuntu下交叉编译环境构建(arm-linux-gcc-3.4.1.tar.bz2 ) 下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下. arm-linux-gcc-3. ...

  5. suse linux下交叉编译,阐述SUSE 10.1交叉编译环境构建方法

    现在很多的人都在应用SUSE,伴随着的问题也随之出现,我学习SUSE也有很长时间了,也有些小的心得体会.在这里和大家分享一下,今天所要说的是SUSE 10.1交叉编译环境构建问题.crosstool制 ...

  6. 助力工业物联网,工业大数据项目介绍及环境构建【一、二】

    文章目录 工业大数据项目介绍及环境构建 01:专栏目标 02:项目背景 03:项目需求 04:业务流程 05:技术选型 06:Docker的介绍 07:Docker的网络 08:Docker的使用 0 ...

  7. Eclipse+ GNU ARM Eclipse Plug-in+ Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境。

    Eclipse+ GNU ARM Eclipse Plug-in+ Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境. 具体介绍: Eclip ...

  8. Eclipse+ GNU ARM Eclipse Plug-in+ Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境

    作者:emouse 转自:http://blog.csdn.net/haozi_1989/article/details/6023242 Eclipse+ GNU ARM Eclipse Plug-i ...

  9. STM32开源开发环境的搭建

    STM32开源开发环境的搭建 Eclipse+ GNU ARM Eclipse Plug-in+Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环 ...

最新文章

  1. this和that的区别和原理
  2. vc6.0绿色完整版 适用于xp win7 win8 win10
  3. Using breakpad in cocos2d-x 3.2,dump信息收集
  4. 在Redhat 5.0 上安装Eclipse 3.6
  5. MCMC采样和M-H采样
  6. ExtJS中的Grid分页
  7. ubuntu20.10创建QT应用程序快捷方式 Terminal中输入命令直接打开QtCreator
  8. Java 设计模式之构造者模式
  9. 最近在我的python博客上花时间!
  10. 熟悉网络层IP协议和数据链路层
  11. 【原创】中文分词系统 ICTCLAS2015 的JAVA封装和多线程执行(附代码)
  12. 图像语义分割(2)-DeepLabV1: 使用深度卷积网络和全连接条件随机场进行图像语义分割
  13. 人工智能在安全漏洞方面的应用_智慧消防平台的智慧在哪方面?
  14. GDPR法律条款解读及应对指南(全面版)
  15. 通过PSAM读CPU卡号流程小结
  16. percentile函数mysql_Oracle分析函数PERCENTILE_CONT
  17. cacheable注解原理_Cacheable注解使用详解
  18. 【javaEE】网络编程套接字
  19. 【VBA】Speech.Speak 指定语音库
  20. GitLab-CI 基础介绍

热门文章

  1. Android开发实例家庭理财通,基于安卓的家庭理财通
  2. 排查和判断常见的服务器故障
  3. 计算机控制电机启动接线图,详解单相电机电容接线图
  4. python里的class定义类为什么括号有object
  5. 【EdgeX】基于sdk-c随机数设备服务发布数据到MQTT消息总线上,并在MQTTX上订阅
  6. android能播放4k视频格式,安卓APP,无广告支持多种格式的万能视频播放器
  7. 数商云:快消品流通渠道暗潮涌动,哪里才是变革方向
  8. 宇视网络视频录像机国标对接配置指导
  9. 软件逆向工程学习(一)
  10. [RK3568 Android11] 教程之cm32181光线传感器驱动