嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

ARTY 100T 是ARTY A7最大的设备,从而使其成为部署软核处理器的理想之选。处理器可以是开源的或是私有的。现在最火的开源处理器之一就是PISC-V。

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

gergergergergewrghujtutyh_ec5b2aade080f8ca4b59a5a57f5b800a15d1e648.png

E300原理框图, © 2017 SiFive Inc

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

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

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

You will also need the following SW installed on your Linux development environment

你也需要在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
  • Ensure JAVA_HOME is set

开始

第一件事:下载并安装Vivado。点开下面的链接,然后打开终端窗口。在这里,我会在Home目录当中操作。

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

我们会使用这个终端窗口来搭建RISCV处理器。首先要确保能调用刚才安装好的Vivado.使用下面脚本做测试:

 source /opt/Xilinx/Vivado/2017.1/settings64.sh

因为要工作在Arty板上,所以还要下载并把板定义文件加入Vivado。我们可以使用git从Digilent储存库来下载板定义文件:

git clone 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获取所有所需文件:

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

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

vetyyh_65e86f3a9f71919bc37f82ab54206a32917526b2.png

复制完成后的Freedom目录

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

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

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

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

make -f Makefile.e300artydevkit Verilog

同样,我们需要点时间来编译文件,以便于后续执行。因为他是通用的Verilog,因此当我们生成文件时,我们不需要设定针对哪一个Arty board。

1111111111111111111111111111111111111_f666a6181da44b5a927a5354d6897b29377b415b.png

完成Verilog makefile

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

2222222222222222222222222222222222222222222222222222222222222222222222222222_87d4c2b42476e7ef4d004f9fae953321ec5c8d89.png

Freedom RISC-V生成了内存映射

处理器的Verilog描述一旦完成,接下来的步骤就是确定所需的Arty板。如果是定位35T的话,我们不需要进行任何的更改。如果是定位100T的话(像教程一样),我们需要进行微小的调整。

使用text编辑器打开编译文件 Makefile.e300artydevkit,你会看到板定义是arty。缺省状态,这会为Arty 35T生成FPGA执行文件。

333333333333333333333333333333333333333333333333333333333333333333333_5941cb9454e009ed6c05c8f1e0dc2867261e67b6.png

Arty 35T的默认构建脚本

想要生成Arty 100T的执行文件,我们需要改变板的类型为适用于Arty 100T的类型。打开文件游览器,找到freedom/fpga-shells/Xilinx目录,在这当中你会找到所支持的开发板命名的文件夹。请找到arty_a7_100。

44444444444444444444444444444444444444444444444444444444444444444444_e0cc2e6d64938b294663d4bd01f5ed46576f6c0b.png

Xilinx支持文件夹

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

5555555555555555555555555555555555555555555555555555555555555555555_661d2155cb639311a55dca724e33e1835fdf4cef.png

更新Arty 100T的板定义

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

make -f Makefile.e300artydevkit mcs

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

wsgrehyertrujh_b9e6598b23454967d149f8e6496e8ff763e9b0ff.png

FPGA执行脚本完成

输出的文件在此目录

<workspace>/freedom/builds/e300artydevkit/obj

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

77777777777777777777777777777777777777777777777777777777777777777777777777777_bd63aaadc5c7e31d48d927e7494f5233a44c6d99.png

Vivado完成报告

编写硬件

 程序软件已经具备,下一步是使用Vivado编程闪存。可以使用指令Vivado打开Vivado。

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

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

8888888888888888888888888888888888888888888888888_34d4af28ecb37ac379dbef0de222b1a4b57de9c5.png

选择Flash然后进行编程

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

9999999999999999999999999999999999999999999999999999999999999999999999999999999999999_9d12d10d4122c86d69a425c2160cd4157d328a36.png

闪存的编程谈话框

000000000000000000000000000000000000000000000000000000000_79155bc40391e5fde5e8c79c751f1472d9bb3a2d.png

编写Arty 100T 闪存

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

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

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

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

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

生成软件

 

首先,我们连接Olimex JTAG pod到Pmod D,以便于我们可以使用JTAG接口下载与调试程序。下面链接可以找到两者的pin脚连接说明。

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

With that we are ready to start developing our application, the best way to get started programming the RISC-V is to use the Arduino development environment.

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

安装SiFive Freedom处理器的支持很容易,只需在file->preferences中指定附加板管理器URL为以下网址:

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

101010101010101010101010010101_9b32946b61ac6f08fb1eb0d1a21f03b1bda15ea8.png

下一步是使用board manger安装board。

Tools -> Boards -> Board Manager 。

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

13131313131313131313131313131313131313_0cb9586b8d24841c97b622765ed0c73c3580f406.png

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

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

14141441141414141414141414141414_c0b0906ac2f34d48438e0a5860e57ceee8d95990.png

选择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

并添加:

#这些是用于与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组织的会员。

下载

PuaChengLin 还没写个人简介...
DesignSpark Electrical Logolinkedin