Suchen

Einstieg in die Entwicklung mit RISC-V-basierten Mikrocontrollern

| Autor / Redakteur: Rich Miron * / Michael Eckstein

SoCs auf Basis von RISC-V bieten sich als lizenzfreie Alternative zu verbreiteten MCUs an. Ob sie auch für das eigene Projekt geeignet sind, lässt sich mit einem günstigen Entwicklungsboard klären.

Firma zum Thema

Bild 1: Das Entwicklungsboard LoFive-R1 ist ein vollwertiges Prozessormodul auf Basis des RISC-V-Prozessors FE310 von SiFive. Es lässt sich direkt auf eine Trägerkarte löten.
Bild 1: Das Entwicklungsboard LoFive-R1 ist ein vollwertiges Prozessormodul auf Basis des RISC-V-Prozessors FE310 von SiFive. Es lässt sich direkt auf eine Trägerkarte löten.
(Bild: GroupGets LLC)

Entwickler stehen ständig unter Druck: Sie müssen schnell innovative Schaltungen entwerfen, die mit möglichst wenig Energie ausreichend Rechenleistung bereitstellen und möglichst wenig kosten sollen. Gleichzeitig müssen sie ihr geistiges Eigentum (Intellectual Property, IP) bestmöglich schützen. „Reduced Instruction Set Computer V“, kurz RISC-V, könnte eine Lösung für diese Anforderungen sein – nicht zuletzt für Mobilanwendungen im Internet of Things.

Die Hardware-Befehlssatz-Architektur (Instruction Set Architecture, ISA) ist als Open Source unter einer BSD-Lizenz verfügbar. Damit ist es möglich, für Applikationen maßgeschneiderte Prozessoren oder Cores auf Basis dieser Architektur zu entwickeln, herstellen zu lassen und zu verkaufen, ohne Lizenzgebühren zahlen zu müssen. Oder eben solche Prozessoren in seinen Projekten einzusetzen. Mittlerweile sind einige RISC-V-Controller samt passender Entwicklungskits kommerziell erhältlich.

Bildergalerie

Eine gute Möglichkeit, in das RISC-V-Universum einzusteigen, ist ein Entwicklungsboard mit einem RISC-V-Prozessor – zum Beispiel das LoFive-R1 von Groupgets LLC. Dessen Basis bildet die neuste Version des FE310 RISC-V-Prozessors von SiFive, der mit bis zu 320 MHz getaktete 32-bit RV32IMAC-Prozessor FE310-G002. Er besitzt 8 kByte OTP-Speicher (One-Time-Programmable), 8 kByte MROM (Mask Read Only Memory), ein 16 kByte großen Befehls-Cache und 16 kByte SRAM (Static Random Access Memory).

Darüber hinaus verfügt der Prozessor über drei unabhängige PWM-Controller (Pulsweitenmodulation) und hat neben den integrierten Schnittstellen SPI, QSPI, I2C auch zwei UARTs an Bord. Gegenüber dem Vorgänger stehen damit mehr Möglichkeiten zur Verfügung, externe Sensoren und Peripherie-Schnittstellen hinzuzufügen. Auch die Platine wurde verbessert und hat jetzt gekerbte Kanten.

Das Entwicklungsboard LoFive R1 mit FE310-Prozessor

Auf das Entwicklungsboard lassen sich Erweiterungsanschlüsse löten. Alternativ lässt sich die Entwicklungsplatine dank ihrer gekerbten Kanten auch direkt auf eine Trägerkarte löten und als Prozessormodul verwenden. Dies kann die Entwicklung von kundenspezifischer Hardware erleichtern, da die oft mühevolle Beschaffung des Prozessors entfällt.

Darüber hinaus verfügt das Entwicklungsboard über On-board-QSPI-Flash-Speicher, der von einem Flash-Modul IS25LP128 von Integrated Silicon Solution Inc. (ISSI) bereitgestellt wird. Das IS25LP128 ist ein 16 MByte großes 128-MBit-Flash-Modul, das im Quad-Modus mit einem SPI-Bustakt von bis zu 133 MHz betrieben werden kann. Das SPI-Flash-Modul eignet sich zum Speichern von Anwendungen oder auch von Laufzeitdaten wie Anwendungsprotokollen.

Das Entwicklungsboard läuft auch mit 5 V, die von einem Linearregler SPX3819M5 von MaxLinear auf 3,3 V heruntertransformiert werden. Der Regler wird in einem SOT23-5-Gehäuse geliefert und liefert bis zu 500 mA Strom. Das Entwicklungsboard zieht nicht viel Strom. Daher können weitere Sensoren und Bausteine ohne eine zusätzliche Stromquelle betrieben werden. Alle Konstruktionsdetails der Entwicklungsplatine, z.B. Schaltpläne und Materiallisten, sind auf github erhältlich. Diese Informationen erleichtern das Verständnis der Arbeitsweise des Boards. Sie können auch als Leitfäden für kundenspezifische Entwicklungsprojekte dienen.

Toolchain einrichten und Board programmieren

Blockschaltbild des auf dem Entwicklungsboard LoFive R1 eingesetzten 128-MBit-SPI-Flash-Moduls zum Speichern von Anwendungsdaten.
Blockschaltbild des auf dem Entwicklungsboard LoFive R1 eingesetzten 128-MBit-SPI-Flash-Moduls zum Speichern von Anwendungsdaten.
(Bild: ISSI)

Nun geht es ans Einrichten der RISC-V-Toolchain und ans Programmieren des Entwicklungsboards. Je nach gewählter Entwicklungsplatine stehen Entwicklern mehrere Toolchains für RISC-V zur Verfügung. Die Software-Entwicklungsumgebung (SDK) für RISC-V läuft auf den Betriebssystemen Windows, macOS und Linux. In diesem Artikel wird die Einrichtung des Entwicklungsboards unter Linux beschrieben.

Laden Sie zuerst in einem Terminalfenster das LoFive Freedom-E-SDK mithilfe des folgenden Befehls von github herunter:

git clone --recursive https://github.com/mwelling/freedom-e-sdk.git

Wechseln Sie dann in das soeben mithilfe des SDKs erzeugte Verzeichnis:

cd freedom-e-sdk

Für das Entwicklungsboard stehen zwei verschiedene SDKs zur Verfügung. Das erste wird als „the legacy SDK“ bezeichnet, da es sich um eine ältere Version handelt. Verwenden Sie das neueste SDK. Es verfügt über eine vorinstallierte Toolchain und umfasst OpenOCD zum Debuggen. Das Herunterladen gelingt mit folgenden Befehlen:

git checkout lofive-r1
git submodule sync
git submodule update --init --recursive

Das Entwicklungsboard kann auf mehrere verschiedene Arten programmiert werden. Zuerst sind auf dem Prozessor über die Erweiterungsanschlüsse des LoFive-R1 Standard-JTAG-Signale verfügbar. Es kann jeder Programmer verwendet werden, der JTAG unterstützt, z.B. der J-Link von SEGGER. Wenn kein Programmer verfügbar ist, kann auch ein kostengünstiger USB-seriell-Wandler wie der FT2232H-56Q Mini MDL von FTDI verwendet werden. Der FT2232H-56Q Mini MDL ist ein Modul, das mit allen Verbindungen und Anschlüssen bestückt ist, die für eine Kommunikation mit dem Entwicklungsboard LoFive-R1 benötigt werden.

Verbindungen zwischen dem Entwicklungsboard LoFive R1 und dem Modul FFT2232H-56Q von FTDI.
Verbindungen zwischen dem Entwicklungsboard LoFive R1 und dem Modul FFT2232H-56Q von FTDI.
(Bild: Digi-Key)

Das SDK verwendet die allgemeine E/A-Schnittstelle (General Purpose Input/Output, GPIO) des FT2232H-56Q, um die für die Programmierung des Mikrocontrollers erforderlichen JTAG-Verbindungen herzustellen. Zwischen dem Entwicklungsboard LoFive-R1 und dem Modul FT2232H-56Q müssen neun verschiedene Verbindungen hergestellt werden (siehe Tabelle): Stromversorgung und Masse, JTAG-Signale und UART-Signale. Dies kann direkt erfolgen, oder mithilfe einer Steckplatine wie der PB-83M von Global Specialties. Zu diesen Steckplatinen gehören Bananenstecker für zwei Spannungsquellen und Masse, um das Prototyping zu vereinfachen.

Es ist empfehlenswert, vor der ersten Verwendung der LoFive-R1 einen Bootloader auf der Platine zu installieren. Die Komponente wird einmal eingerichtet und vereinfacht spätere Upgrades. Zum Generieren des Bootloaders dient der Befehl:

make PROGRAM=lofive-boot TARGET=lofive-r1-bootloader upload

Das folgende Kommando lädt eine einfache „hello world“-Anwendung auf das Entwicklungsboard:

make PROGRAM=sifive-welcome TARGET=lofive-r1 upload

Damit hat der Entwickler seine erste RISC-V-Anwendung programmiert – die weiteren Möglichkeiten sind praktisch unbegrenzt.

Tipps und Tricks für die Arbeit mit RISC-V

Der Einstieg in die Arbeit mit RISC-V-Prozessoren unterscheidet sich von anderen Mikrocontroller-Ökosystemen. Folgende Hilfestellungen erleichtern den Erstkontakt:

  • Nehmen Sie sich nach dem Herunterladen des LoFive-R1-SDK die Zeit, die Datei README.md im Hauptverzeichnis zu lesen. Diese enthält nützliche Informationen zum Speicherort der Dokumentation des SDK, zu Unterstützungspaketen für das Board und weitere interessante Informationen.
  • Wenn Sie eine professionelle Debug-Sonde, z.B. eine J-Link von SEGGER, zur Verfügung haben, können Sie damit Anwendungen für den RISC-V-Prozessor programmieren. J-Link unterstützt RISC-V offiziell bereits seit dem Jahr 2017.
  • Für Entwickler, die lieber mit einer integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) als mit den Befehlszeilen-Tools arbeiten, ist das Eclipse-basierende Freedom Studio für die RISC-V-Entwicklung interessant.

Das RISC-V-Ökosystem wächst schnell

Eine Steckplatine wie die PB-83M vereinfacht den Anschluss externer Komponenten und Module – und damit das Prototyping.
Eine Steckplatine wie die PB-83M vereinfacht den Anschluss externer Komponenten und Module – und damit das Prototyping.
(Bild: Global Specialities)

RISC-V ist eine interessante Architektur für Open-Source-interessierte Entwickler. Mittlerweile sind mehrere Entwicklungsboards für RISC-V-Prozessoren verfügbar, und die Einrichtung der Toolchains ist nicht schwieriger als bei jedem anderen Standard-Mikrocontroller. Wichtig bei aller RISC-V-Euphorie ist, dass die freie ISA nicht über das umfassende Tool-Ökosystem vieler anderer Mikrocontroller-Plattformen verfügt.

Daher werden Entwickler, die den RISC-V-Weg gehen, möglicherweise feststellen, dass Ihnen eine kleinere Auswahl und weniger Ressourcen zur Unterstützung auf dem Weg zu ihrem Ziel zur Verfügung stehen. Dieser Verzicht kann sich trotzdem lohnen – je nach Endanwendung, den Vorlieben des Entwicklers und den verfügbaren Ressourcen.

* Rich Miron ist Applications Engineer und Sr. Technical Content Developer bei Digi-Key Electronics in Wadena, Minnesota.

(ID:46492583)