本帖最后由 Scadao 于 2018-4-11 16:24 编辑
开源Arduino平台使用FPGA开源MCU编程
使用兼容RISC-V的Arduino平台配置低价格的Arty FPGA板
这篇文章里我们来谈谈基于Xilinx Artix-7 FPGA的Digilent Arty板,缘于创客和爱好者理念而设计的,使用开源RISC-V微处理器架构配置,编译可来源RTL级别,通过Arduino IDE平台编程,也可通过GNU工具链来开发。
基于Linux的熟悉,极客对makefile软件编译方面的知识是清楚的。
Freedom E310
E300平台顶级框图
RISC-V是免费开放的指令集架构(ISA),在自由许可下发布,鼓励广泛采用,并允许任何人实现他们自己的兼容设备,比如仿真、FPGA或ASIC。它们可能是超低功耗IoT级设备,也可能用于手机、机顶盒、桌面或服务器级别,直到HPC(高性能计算机群)设备。
RISC-V仅是ISA中的一种,由于RISC-V基金会提供了处理器的实现参考模型,从而促进核心工具的生成,以及GNU编译器工具链的完成。
SiFive——RISC-V发明者创建的一家商业性公司,提供了IP核和SoC平台产品,提供咨询服务,他们的Freedom E300 SoC平台是基于E3 Coreplex,可能作为ASIC或FPGA硬核。
Arty板载芯片Freedom E310是基于上面图片架构。
硬件
Digilent公司的 Arty 410-319集成了USB-JTAG适配器,能够用来编程Xilinx Artix-35T FPGA,Quad-SPI flash典型用作FPGA上电配置,而ARM-USB-TINY-H适配器用于连接到RISC-V核提供调试/编程。
这些接口配置,你能完全用来编程,可以免费针对MCU进行修改设计,并可上载代码到它上面来运行。 USB-JTAG连线
PMOD接口及连线
线缆颜色选择参照指南所述,不需要跳线,只是确保要连接到位。
新确定的规则使得ARM-USB-TINY-H适配器能被添加访问:
编辑 /etc/udev/rules.d/99-openocd.rules 并添加: # These are for the Olimex Debugger for use with E310 Arty Dev Kit
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
如果你的用户账号还不在开发组中,你需要额外添加上,如注销重复再来。
FPGA 工具链
登录Xilinx网站,你可在Vivado HL工具中免费下载“WebPACK”,一旦安装完成,Digilent板必须要添加拷贝安装文件到具体位置。
举例来说,下载完Vivado 2017.1安装包后,过程如下:
安装包执行命令行键入步骤: $ chmod +x Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin
$ sudo ./Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin
线驱动安装: $ cd/opt/Xilinx/Vivado/2017.1/data/xicom/cable_drivers/lin64/install_script/install_drivers $ sudo ./install_drivers
获取Digilent板级支持文件并拷贝安装到相应位置: $ git clone https://github.com/Digilent/vivado-boards.git
$ sudo cp -r vivado-boards/new/board_files/*/opt/Xilinx/Vivado/2017.1/data/boards/board_files/
返回主目录安装环境变量 $ cd
$ source /opt/Xilinx/Vivado/2017.1/settings64.sh
每次登录或打开新终端时,都需要获取该脚本。此时,可以通过键入来启动GUI: $ vivado
配置板参数
集成了预编译FPGA位流的flash编程文件,可在SiFive官网注册下载DEMO程序。
打开Vivado后,切换到硬件管理器,并连接到硬件板,接着右键FPGA,选择Add Configuration MemoryDevice,然后选择Micron制造商部件n25q128-3.3v。如果您选择对设备进行编程,可以选择下载的MCS文件。
一旦编程完成,如果按下PROG红按钮,FPGA将被配置,DEMO程序开始执行,LED1和LED2灯点亮。
如果你使用终端模拟器连接到 /dev/ttyUSB1,你应该可以看到如下信息呈现:
操作到这,你可以跳过下一步骤,直接进入SoC编程,通过Arduino IDE/GNU工具链,否则就要自己去创建编译工具。
芯片编译!
首先我们需要复制一下GitHub库方面的内容,也即包含SiFive E300和U500平台上的RTL级资源。
因为要将所有相关依赖的Git子模块复制,比如Rocket Chip Generator和Chisel等等,需要花一点时间的。
一旦完成,通过键入下面内容就能编译成Verilog: $ make -f Makefile.e300artydevkit verilog
为了配置内存文件,首先我们需要确保设定Vivado环境变量,然后键入: $ make -f Makefile.e300artydevkit mcs
这将促成Xilinx FPGA的综合布线,过一会,你将获得新的.mcs文件来编程配置flash。
需要注意的是,默认情况下生成的flash镜像不包含与预编译版本一样的演示程序。然而编辑合适的makefile文件,程序能够嵌入镜像中,具体详情可参照论坛中讨论的。
Arduino平台的兼容
到目前为止,Freedom E310软件开发最容易的方法是利用当前的现实环境,将Arty 硬件板用于支持Arduino IDE平台来开发。首先我们要在Arduino IDE菜单:文件→首选项→Settings and add theBoard Manager URL中键入: http://static.dev.sifive.com/bsp/arduino/package_sifive_index.json
然后我们就能在Arduino IDE菜单:工具→板→板级管理..对话框中搜索到SiFive Freedom Boards条目,安装完后我们就能找到相应的Freedom E300 Arty DevKit板,将LED闪烁程序编译上传到板上验证下。
如果上述编程过程发生失败,这可能是USB-JTAG没正确连线到PMOD端口,或设备管理器没配置好,即不能在即插即用设备组中搜索到。
Freedom-e-sdk
如果你选择文本编辑器,通过makefile驱动来开发,担心涉及到的诸多细节,其实也是很容易的,通过独立创建的freedom-e-sdk GNU工具链就可以。
首先,我们需要构建依赖项: $ sudo apt-get install autoconf automakelibmpc-dev libmpfr-dev libgmp-dev gawk bison flex texinfo libtoollibusb-1.0-0-dev make g++ pkg-config libexpat1-dev zlib1g-dev
然后,拷贝资源并编译: $ cd freedom-e-sdk $ make tools
最后,编译上传DEMO程序: $ make software PROGRAM=demo_gpioBOARD=freedom-e300-arty $ make upload PROGRAM=demo_gpioBOARD=freedom-e300-arty
自由黑客 因此,你适当花费点就可立即定制你的微控制器(MCU)平台,这种SoC设计定制是完全免费自由的,如果你想挪入曾经习惯舒适的开发环境,如众所周知的Arduino平台,你也是能马上搭建的。
|