LinxVIEW论坛-斯科道

 找回密码
 立即注册
查看: 8271|回复: 0

开源Arduino平台使用FPGA开源MCU编程

[复制链接]

534

主题

745

帖子

2592

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2592
发表于 2018-4-11 16:20:03 | 显示全部楼层 |阅读模式
本帖最后由 Scadao 于 2018-4-11 16:24 编辑

开源Arduino平台使用FPGA开源MCU编程

1.jpg
使用兼容RISC-V的Arduino平台配置低价格的Arty FPGA板

这篇文章里我们来谈谈基于Xilinx Artix-7 FPGA的Digilent Arty板,缘于创客和爱好者理念而设计的,使用开源RISC-V微处理器架构配置,编译可来源RTL级别,通过Arduino IDE平台编程,也可通过GNU工具链来开发。

基于Linux的熟悉,极客对makefile软件编译方面的知识是清楚的。

Freedom E310

2.jpg
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是基于上面图片架构。

硬件
3.jpg

Digilent公司的 Arty 410-319集成了USB-JTAG适配器,能够用来编程Xilinx Artix-35T FPGA,Quad-SPI flash典型用作FPGA上电配置,而ARM-USB-TINY-H适配器用于连接到RISC-V核提供调试/编程。

这些接口配置,你能完全用来编程,可以免费针对MCU进行修改设计,并可上载代码到它上面来运行。
4.jpg
USB-JTAG连线

《Freedom E300 Arty FPGA开发板入门指南》包含如何连线到适配器的详细细节,按照指令怎样编译SoC和GNU工具链,及对板编程等等。这篇文档是按规范编写的,有些步骤不确定,可参照着指南指令来操作。
5.jpg
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 工具链
6.png

登录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

配置板参数
7.png

集成了预编译FPGA位流的flash编程文件,可在SiFive官网注册下载DEMO程序。

打开Vivado后,切换到硬件管理器,并连接到硬件板,接着右键FPGA,选择Add Configuration MemoryDevice,然后选择Micron制造商部件n25q128-3.3v。如果您选择对设备进行编程,可以选择下载的MCS文件。
8.png

一旦编程完成,如果按下PROG红按钮,FPGA将被配置,DEMO程序开始执行,LED1和LED2灯点亮。
9.jpg

如果你使用终端模拟器连接到 /dev/ttyUSB1,你应该可以看到如下信息呈现:
10.png

操作到这,你可以跳过下一步骤,直接进入SoC编程,通过Arduino IDE/GNU工具链,否则就要自己去创建编译工具。

芯片编译!
11.jpg

首先我们需要复制一下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平台的兼容
12.png

到目前为止,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闪烁程序编译上传到板上验证下。
13.jpg

如果上述编程过程发生失败,这可能是USB-JTAG没正确连线到PMOD端口,或设备管理器没配置好,即不能在即插即用设备组中搜索到。

Freedom-e-sdk
14.png

如果你选择文本编辑器,通过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平台,你也是能马上搭建的。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|SCADAO  

GMT+8, 2024-4-16 16:26 , Processed in 0.048579 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表