开源RISC-V 项目Freedom在Arty-7-100T开发板上的实现

开源RISC-V 项目Freedom在Arty-7-100T开发板上的实现

1、获取Freedom项目源码

Freedom项目开源的地址为https://github.com/sifive/freedom
可以使用以下命令来clone该项目

git clone --recursive https://github.com/sifive/freedom.git

其中–recursive选项是将该项目递归克隆下来。

注意:1、务必使用上述命令一次性clone,切记不可单独clone其子模块,否则可能会因为版本问题出现错误。
2、Freedom的子模块包括了riscv-gnu-toolchain项目,里面的qemu有一部分代码挂在google上面,所以需要一些科学上网方法

2、安装编译Freedom项目的环境

本人所用的虚拟机版本是ubuntu16.04

1. 提前安装各种依赖

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 python wget

sudo apt-get install default-jre

2、安装sbt

echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 642AC823
sudo apt-get update
sudo apt-get install sbt

因为Freedom使用的内核时Rocket chip,Rocket是使用chisel语言实现的,chisel又是内嵌与scala的,而scala是基于sbt构建的,所以说我们需要安装sbt。

3、安装scala

sudo apt install scala

安装好上述环境以后我们可以测试以下我们是否安装成功了。

我们可以在Freedom文件夹下输入sbt命令,可以从下图看出sbt成功启动了,说明我们的sbt安装成功了。

注意:这一步非常重要,务必测试成功,第一次启动可能有些慢,需要从外网下一些包,耐心等待即可。
测试sbt是否安装成功


4、安装RISC-V工具链
这里安装RISC-V工具链的方式有两种:


接下来需要配置环境变量:

export RISCV=your toolchain path
例如我的环境变量的配置:
export RISCV=/opt/riscv-newlib-multilib/
这里注意只需要配置到工具链的根目录就可以了,不需要配置到bin目录

在编译生成verilog时,我们只需要配置我们的编译工具链的环境变量就可以了,主要是用于编译verilog的过程中启动代码ROM的编译。

3、编译生成Freedom verilog

在我们clone下来的Freedom文件夹下,我们看到有很多Makefile,如下图所示:
在这里插入图片描述
这个Freedom项目其实是可以生成两种SoC的:

  • E300
  • U500

以及支持四种FPGA平台:

  • Arty-35T
  • Arty-100T
  • VC707
  • VC118

我们此次实验用的生成的E300平台并且跑在Arty-100T FPGA平台上的。


1、先编译生成verilog

make -f Makefile.e300artydevkit verilog

在这里插入图片描述
注意:Makefile.e300artydevkit默认指定的Board是Arty(也就是35T),我们需要将它改成100T

2、查看生成的verilog
在这里插入图片描述

默认生成的verilog目录为 /freedom/builds/e300artydevkit/

4、用vivado生成flash配置文件mcs

本来是准备在ubuntu环境下跑vivado,但是试了几次后发现内存会溢出,所以不得已将生成的verilog文件转移到windows环境下运行。

Freedom项目提供了完整的运行vivado所需的脚本,
我们只需运行如下命令即可:

make -f Makefile.e300artydevkit mcs

在这里插入图片描述
最终生成的mcs文件在**builds/obj/**目录下:
在这里插入图片描述
最后我们将该mcs文件烧录至我们FPGA的flash上:
在这里插入图片描述

5、在E300 SoC上运行程序

首先,我们需要连接调试器,可以参考:
https://sifive.cdn.prismic.io/sifive%2Fed96de35-065f-474c-a432-9f6a364af9c8_sifive-e310-arty-gettingstarted-v1.0.6.pdf
进行调试器的组装。


1、下载软件框架freedom-e-sdk

git clone --recursive https://github.com/sifive/freedom-e-sdk.git

2、配置软件编译和调试环境变量
然后需要配置工具链的环境变量:

export RISCV_PATH=your toolchain path
export RISCV_OPENOCD_PATH=your toolchain path

3、编译、调试、下载程序
在此我们拿hello程序举例:

  1. 编译hello程序
make PROGRAM=hello TARGET=freedom-e310-arty software

在这里插入图片描述
编译成功生成hello.elf和hello.hex

  1. debug hello程序
make PROGRAM=hello TARGET=freedom-e310-arty debug

在这里插入图片描述
可以看到成功打开gdb调试窗口

输入gdb调试命令在这里插入图片描述
成功加载hello程序

在这里插入图片描述
运行hello程序

在这里插入图片描述
串口成功打印hello world

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值