
Wie finden Sie diesen Artikel? Helfen Sie uns, bessere Inhalte für Sie bereitzustellen.

Vielen Dank! Ihr Feedback ist eingegangen.

There was a problem submitting your feedback, please try again later.

Was denken Sie über diesen Artikel?
Das kostengünstige Arty FPGA-Board mit einer Arduino-kompatiblen RISC-V-Plattform konfigurieren
In diesem Artikel werfen wir einen Blick darauf, wie das äußerst erschwingliche, auf Xilinx Artix-7 basierende Digilent Arty Board, das für Modellbauer und Bastler entwickelt wurde, mit einem Open-Source-RISC-V-Mikrocontroller konfiguriert werden kann, der optional mithilfe von RTL-Quellcode entwickelt und dann über Arduino IDE oder alternativ eine Makefile-gesteuerte GNU-Toolchain programmiert werden kann.
Grundlegende Kenntnisse in Linux, Git und Makefile-gesteuerter Softwareerstellung werden vorausgesetzt.
Freedom E310
Allgemeines Blockdiagramm der Plattform E300, © 2017 SiFive Inc.
RISC-V ist eine kostenlose und frei zugängliche Befehlssatzarchitektur (instruction set architecture; kurz: ISA), die unter einer offenen Lizenz veröffentlicht ist, um einen weitverbreiteten Einsatz zu fördern. Sie ermöglicht es jedem, eigene kompatible Geräte zu implementieren, entweder in einer Simulationsumgebung, einem FPGA oder einem ASIC. Kompatibel können viele verschiedene Geräte sein, von IoT-Geräten mit sehr geringer Leistungsaufnahme über mobile Geräte, Laptops/Desktop-PCs und Servergeräte bis hin zu Geräten für HPC-Anwendungen.
Dabei ist RISC-V per se jedoch kein Prozessor, sondern eine ISA-Spezifikation. Dennoch stellt die RISC-V Foundation eine Prozessorreferenzimplementierung namens Rocket sowie Tools zum leichteren Generieren von Kernen sowie eine GNU-Compiler-Toolchain zur Verfügung.
-V-Entwicklern gegründeten Unternehmens SiFive umfasst IP-Cores und SoC-Plattformen, die von Beratungsservices ergänzt werden. Ihre SoC-Plattform Freedom E300 SoC baut auf E3 Coreplex auf und ist HYPERLINK "https://www.rs-online.com/designspark/hifive1-heralds-new-era-of-silicon-freedom" als ASIC verfügbar
Das Chip-Design für Freedom E310, das wir in die Konfiguration des Arty Boards laden, basiert auf der obigen SoC-Architektur.
Hardware
Während das Digilent Arty 410-319, RS-Bestellnr. (134-6478) , einen USB-JTAG-Adapter integriert hat, der zur direkten Programmierung des Xilinx Artix-35T-FPGA genutzt werden kann, und über Quad-SPI-Flashspeicher verfügt, der gewöhnlich zur Konfiguration des FPGA nach dem Einschalten dient, ist auch ein ARM-USB-TINY-H-USB-JTAG-Adapter erforderlich, um eine Debugging-/Programmierverbindung zum RISC-V-Kern herzustellen.
So viele Schnittschnellen und Optionen! Naja, wir sprechen schließlich über eine vollständig programmierbare Plattform, bei der Sie das Design der MCU selbst frei anpassen und Ihren eigenen Code ausführen können.
USB-JTAG-Verdrahtung
Im Freedom E300 Arty FPGA Dev Kit Getting Started Guide werden die Verschaltung des Adapters beschrieben und Anweisungen zum Erstellen der SoC- und GNU-Toolchain, zum Programmieren des Boards etc. gegeben. Im Zweifelsfall ist diese Dokumentation ganz klar die erste Referenz und auch die in diesem Artikel beschriebenen Schritte basieren auf den Anweisungen in dieser Anleitung.
Den PMOD-Anschluss JD verschalten
Es wurden die in der Anleitung vorgeschlagenen Farben zur Verschaltung verwendet. Auf dem Board im Lieferzustand müssen keine Steckbrücken angebracht oder entfernt werden, man muss nur darauf achten, PMOD JD und nicht einen der anderen Anschlüsse zu verbinden.
Um den Zugriff auf ARM-USB-TINY-H herzustellen, müssen neue udev-Regeln hinzugefügt werden:
Öffnen Sie /etc/udev/rules.d/99-openocd.rules zum Bearbeiten und fügen Sie Folgendes hinzu:
# 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"
Geben Sie dann Folgendes ein:
$ sudo udevadm control --reload-rules
Wenn Ihr Benutzerkonto noch nicht in der Gruppe plugdev aufgelistet ist, müssen Sie es hinzufügen und sich anschließend aus- und dann wieder einloggen.
FPGA toolchain
Die kostenlose Version “WebPACK” der Vivado HL-Tools ist ausreichend und ein Downloader steht zur Verfügung, sobald man sich auf der Xilinx-Website eingeloggt hat. Wenn die Installation abgeschlossen ist, muss der Support für Digilent Boards hinzugefügt werden. Dazu muss man nur die Dateien herunterladen und an entsprechender Stelle ablegen.
Zum Beispiel sieht der Prozess nach dem Herunterladen des Installationsprogramms Vivado 2017.1 so aus:
Das Installationsprogramm ausführbar machen und als Root ausführen:
$ chmod +x Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin
$ sudo ./Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin
Installieren der Kabeltreiber:
$ cd /opt/Xilinx/Vivado/2017.1/data/xicom/cable_drivers/lin64/install_script/install_drivers
$ sudo ./install_drivers
Supportdateien für das Digilent Board herunterladen und am entsprechenden Ort ablegen:
$ 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/
Ins Basisverzeichnis zurückkehren und Umgebungsvariablen einrichten:
$ cd
$ source /opt/Xilinx/Vivado/2017.1/settings64.sh
Dieses Skript muss beim Einloggen oder Öffnen eines neuen Terminals jedes Mal über den Source-Befehl ausgeführt werden.
An dieser Stelle kann die GUI durch folgende Eingabe gestartet werden:
$ vivado
Das Board konfigurieren
Eine Datei zur Flash-Programmierung einschließlich mitgeliefertem FPGA-Bitstream und Demoprogramm kann von der SiFive Website heruntergeladen werden (Registrierung erforderlich).
Öffnen Sie nach dem Starten von Vivado den Hardwaremanager und stellen Sie eine Verbindung zum Board-Ziel her. Nach einem Rechtsklick auf das FPGA wählen Sie Add Configuration Memory Device und wählen Sie dann das Micron Teil n25q128-3.3v aus. Wenn Sie sich anschließend für das Programmieren des Gerätes entscheiden, kann die heruntergeladene .mcs-Datei ausgewählt werden.
Wenn die Programmierung abgeschlossen und der rote „PROG“-Knopf gedrückt ist, wird das FPGA konfiguriert und das Demoprogramm sollte ausgeführt werden, während LED1 und LED2 leuchten.
Wenn Sie zur Verbindung zu /dev/ttyUSB1 einen Terminalemulator nutzen, sollten Sie eine Meldung erhalten.
An dieser Stelle können Sie entweder den nächsten Abschnitt überspringen und direkt mit dem Programmieren des SoC mit Arduino IDE oder der GNU-Toolchain fortfahren. Oder aber Sie versuchen sich selbst daran, ein SoC aufzubauen.
Fertig ist der Chip!
Zunächst müssen wir das GitHub Repository rekursiv kopieren. Es enthält Chisel RTL-Quellcode für die Plattformen SiFive E300 und U500.
$ git clone --recursive https://github.com/sifive/freedom.git
Das nimmt etwas Zeit in Anspruch, denn alle Git Submodule, die Abhängigkeiten erzeugen (wie etwa Rocket Chip Generator, Chisel etc.) werden nacheinander kopiert.
Sobald dieser Vorgang abgeschlossen ist, kann der Chisel-Quellcode bis zu Verilog herunterkompiliert werden. Geben Sie dazu Folgendes ein:
$ make -f Makefile.e300artydevkit verilog
Zum Erstellen einer Konfigurationsdatei müssen wir zunächst sicherstellen, dass die Vivado Umgebungsvariablen eingerichtet sind, indem die entsprechende Shell-Datei wie bereits erklärt über den Source-Befehl ausgeführt wird. Geben Sie dann Folgendes ein:
$ make -f Makefile.e300artydevkit mcs
Die Xilinx FPGA-Synthese wird zusammen mit dem Place-and-Route-Vorgang etc. durchgeführt. Kurz darauf sollten Sie eine schöne neue .mcs-Datei erhalten, die zum Programmieren des Konfigurations-Flashs genutzt werden kann.
Beachten Sie, dass das erzeugte Flash-Image standardmäßig kein Demoprogramm wie in der mitgelieferten Version enthält. Ein Programm kann jedoch in das Image eingebaut werden. Dazu muss das entsprechende Makefile bearbeitet werden. Genaueres dazu finden Sie in diesem Forumsbeitrag.
Arduino-kompatibel
Softwareentwicklung für Freedom E310 gelingt am leichtesten, wenn man den Support von Arduino IDE für Arty Boards nutzt. Dazu gehen wir zuerst zu „File“ → „Preferences“ → „Settings“ und fügen dann die URL des Board-Managers ein:
http://static.dev.sifive.com/bsp/arduino/package_sifive_index.json
Anschließend gehen wir zu „Tools“ → „Board“ → „Board Manager“, suchen nach SiFive Freedom Boards und installieren den zugehörigen Support. Danach können wir das Freedom E300 Arty DevKit Board auswählen, den zuverlässigen Blink-Test durchführen und das Kompilieren und Uploaden auf das Board durchführen.
Sollte die Programmierung an dieser Stelle fehlschlagen, kann es sein, dass das USB-JTAG-Kabel nicht korrekt mit dem PMOD-Anschluss verbunden wurde, udev nicht konfiguriert ist oder Sie nicht in der Gruppe plugdev aufgelistet sind.
freedom-e-sdk
Wenn Sie einen Text-Editor Ihrer Wahl nutzen und Ihnen die Makefile-gesteuerte Entwicklung besser liegt, seien Sie unbesorgt: Die eigenständige GNU-Toolchain freedom-e-sdk lässt sich genauso leicht erstellen.
Zunächst müssen wir die Build-Abhängigkeiten definieren:
$ sudo apt-get install autoconf automake libmpc-dev libmpfr-dev libgmp-dev gawk bison flex texinfo libtool libusb-1.0-0-dev make g++ pkg-config libexpat1-dev zlib1g-dev
Dann kopieren wir Quellen und Build:
$ git clone --recursive https://github.com/sifive/freedom-e-sdk.git
$ cd freedom-e-sdk
$ make tools
Geben Sie zum Erstellen und Uploaden des Demoprogramms schließlich Folgendes ein:
$ make software PROGRAM=demo_gpio BOARD=freedom-e300-arty
$ make upload PROGRAM=demo_gpio BOARD=freedom-e300-arty
Völlig freier Aufbau
Für kleines Geld und in kürzester Zeit können Sie also eine anpassbare Mikrocontroller-Plattform zum Laufen bringen, bei der Sie den SoC-Aufbau völlig frei auseinandernehmen können – oder, wenn Ihnen dabei nicht so wohl zumute ist, das zurzeit coolste Arduino-kompatible Board zusammenstellen.