你觉得这篇文章怎么样? 帮助我们为您提供更好的内容。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
你觉得这篇文章怎么样?
ARTY 100T 是ARTY A7最大的设备,从而使其成为部署软核处理器的理想之选。处理器可以是开源的或是私有的。现在最火的开源处理器之一就是PISC-V。
在这个教程里面,我们将探索如何搭建一个SiFive Freedom E310的RISC-V。
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目录当中操作。
我们会使用这个终端窗口来搭建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。
复制完成后的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。
完成Verilog makefile
在终端窗口中,你可以在内存地址映射中查看外围设备及位置。
Freedom RISC-V生成了内存映射
处理器的Verilog描述一旦完成,接下来的步骤就是确定所需的Arty板。如果是定位35T的话,我们不需要进行任何的更改。如果是定位100T的话(像教程一样),我们需要进行微小的调整。
使用text编辑器打开编译文件 Makefile.e300artydevkit,你会看到板定义是arty。缺省状态,这会为Arty 35T生成FPGA执行文件。
Arty 35T的默认构建脚本
想要生成Arty 100T的执行文件,我们需要改变板的类型为适用于Arty 100T的类型。打开文件游览器,找到freedom/fpga-shells/Xilinx目录,在这当中你会找到所支持的开发板命名的文件夹。请找到arty_a7_100。
Xilinx支持文件夹
返回Makefile文件,然后将板定义更改为arty_a7_100。
更新Arty 100T的板定义
保存然后关闭修改过的文件。现在,我们可以生成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然后会跳出一个谈话框。
闪存的编程谈话框
编写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
下一步是使用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
并添加:
#这些是用于与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组织的会员。