DesignSpark Electrical Logolinkedin
菜单 搜寻
提问问题

【转载】为ARTY-100T搭建RISC-V

ARTY 100T 是ARTY A7最大的设备。它适合于部署软核处理器。处理器可以是开源的或是私有的。到现在为止,最火的开源处理器之一就是PISC-V。

在这个教程里面,我们将探索如何搭建一个RISC-V尤其是SiFive Freedom E310。

E300平台俯视图, © 2017 SiFive Inc

要编译处理器,请生成位流,然后将应用程序上载到我们需要使用Linux开发或虚拟机的处理器。

完成这项目,你需要以下硬件:

  • Arty A7 100T
  • Olimex ARM-USB-TINY-H USB编程器
  • 10个引线(编程器和PMOD之间的连接),PMOD连接到处理器的JTAG测试访问端口

你也需要安装以下SW在你的linux系统里面

  • Vivado 2017.1 – 网络版本
  • Arduino开发环境

确保你安装了以下选项在你的Linux环境里面

  • Git – sudo apt-get install git
  • Device Tree Compiler – sudo apt-get install device-tree-compiler
  • Java run time environment – sudo apt-get install default-jre
  • JAVC installed – sudo install openjdk-8-jdk
  • 确保设置好 JAVA_HOME

 

步骤

首先,下载然后安装Vivado。点开下面的链接,然后打开终端窗口。在这里,我会在主目录当中操作。

链接:https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html

搭建RISCV处理器,我们需要用到主目录。我们可以通过采购脚本source /opt/Xilinx/Vivado/2017.1/settings64.sh来确保软件Vivado已经安装。

我们需要下载和加载board definition files让Vivado可以使用他们,进而操作Arty board。我们可以使用git从Digilent储存库来下载board definition files。

网址:https://github.com/Digilent/vivado-boards.git

下载完成后,我们需要复制这些文件到Vivado的目录当中,以下指令可以完成操作:

sudo cp -r vivado-boards/new/board_files/* /opt/Xilinx/Vivado/2017.1/data/boards/board_files/

现在,我们可以进入搭建处理器以及实现FPGA的环节。

搭建 RISC-V

运行make文件可以生成处理器和实现。

首先,我们需要下载SiFive freedom处理器。我们使用git复制一个知识库。此知识库拥有我们所需的一切。

链接:https://github.com/sifive/freedom.git

复制过程会需要一定时间,因为有许多文件需要下载。下载完了之后,你可以在目录中看到一个新的文件,叫Freedom。

复制完成后的Freedom目录

在这个目录当中,你会看到一些生成文件。我们需要的是Makefile.e300artydevkit。

使用这个脚本,我们可以生成适用于Arty 35T与Arty 100T的RISC-V处理器。在这之前,我们需要编程工具链。

在终端窗口中找到toolchains目录,在rocket-chip/riscv-tools下面。然后运行运行build.sh script,建造我们生成文件时需要的toolchains。

make -f Makefile.e300artydevkit Verilog

接下来的步骤是从Chisel HDL文件发出命令生成处理器的Verilog实例化。指令是

make -f Makefile.e300artydevkit Verilog

我们需要点时间来编写文件。因为他是通用的Verilog,因此当我们生成文件时,我们不需要设定针对哪一个Arty board。

完成Verilog makefile

在终端窗口中,你可以在内存映射中查看外围设备还有位置。

Freedom RISC-V生成了内存映射

接下来的步骤时确定我们所需要定位的Arty板。如果是定位35T的话,我们不需要进行任何的更改。如果是定位100T的话(像教程一样),我们需要进行微小的调整。

Arty 35T的默认构建脚本

想要生成Arty 100T,我们需要改变板的类型更改至适用于Arty 100T的类型。打开文件游览器,找到freedom/fpga-shells/Xilinx目录,在这当中你会找到几个支持开发板的文件。请找到arty_a7_100 development board。

Xilinx支持文件档案

返回Makefile文件,然后将板名更改为arty_a7_100。

更新Arty 100T的board definition

保存然后关闭修改过的文件。现在,我们可以生成FPGA了。在终端窗口输入指令make -f Makefile.e300artydevkit mcs

 这个过程需要一些时间,因为脚本会使用Vivado和RISC-V toolchain来生成一个bitstream和一个MCS文件。MCS文件可以编写进Arty 100T当中,并且在开机时运行RISC-V处理器。

FPGA生成脚本完成

输出的文件会在导入进目录<workspace>/freedom/builds/e300artydevkit/obj

在这个目录里面,你不止可以找到BIT和MCS文件,你也可以找到Vivado生成报告。

Vivado 使用报告

编写硬件

下一步是使用Vivado编程闪存。打开Vivado可以使用指令Vivado。

使用USB连接器J10链接ARTY 100T到机器。当GUI运行后,打开硬件管理器。我们应该可以在屏幕左侧的硬件选项卡下看到设备已经被检测到。

选择设备,右击及选择”Add Configuration Memory Device”。一个对话框弹出后,选择memory type。他会显示我的ARTY 100T已经与Spansion S25FL128xxxx配对了。

选择Flash然后进行编程

选择了这个设备后,如果你希望继续编写这个设备的话,选择yes然后会跳出一个谈话框。

Flash的编程谈话框

编写Arty 100T Flash

选择生成MCS文件然后编写设备。完成后,ARTY 100T会运行RISC-V处理器。

你可以通过以下途径确认过程

1)点击按钮3然后看见LED 6熄灭

2)点击reset按钮然后看见LED 4熄灭

<视频示范>

我们希望连接上处理器然后上传我们的应用。我们可以利用Arduino开发环境来实现。

 

生成SW

首先,我们连接Olimex JTAG pod到Pmod D。我们可以使用JPAG接口下载与运行程序。下面链接可以找到链接两者的pin。

链接:https://static.dev.sifive.com/SiFive-E310-arty-gettingstarted-v1.0.6.pdf

上述进行完成时,我们可以开始开发我们的应用了。最好的编写RISC-V环境是Arduino开发环境。

安装SiFive Freedom处理器的支持很容易,只需在file->preferences中的附加版管理器URL添加以下网址。

http://static.dev.sifive.com/bsp/arduino/package_sifive_index.json

下一步是使用board manger安装board。流程是Tools -> Boards -> Board Manager 。

在board’s manager对话框里面选择”Type Contributed”。”SiFive Freedom Boards”应该显示是已经安装了。

安装完成后,我们可以开始开发应用了。 开发过程就好像其他开发环境一样。

记得从board selection列表里面选择”Freedom ArtyDev Kit”。

选择 Freedom E300 Arty DevKit

 

陷阱/注意事项

1)确保安装了Xilinx cable driver。我们可以通过以下指令完成安装:

sudo ./install_drivers within the folder

<xilinx Install>Vivado/2017.1/data/xicom/cable_drivers/lin64/install_script/install_drivers

 

2)确保你已经授权Olimex USB了。

编辑  /etc/udev/rules.d/99-openocd.rules and add:

 

#这些是用于与E310 Arty Dev Kit一起使用的Olimex调试器

SUBSYSTEM=="usb", ATTR{idVendor}=="15ba", ATTR{idProduct}=="002a", MODE="664", GROUP="plugdev"

SUBSYSTEM=="tty", ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002a", MODE="664", GROUP="plugdev"

保存并输入命令sudo udevadm control --reload-rules

 

3)如果有上传问题:检查Olimex与Pmod d之间的连接,以及确保你是pluggev组织的会员。

 

Note:

Sentence with red color means that I don’t know the meaning of the sentence.

If any question or correction please feel free feedback to me.

Appreciate.

PuaChengLin 还没写个人简介...

19 Dec 2019, 9:07