Einstieg in RISC-V-basierte Mikrocontroller

Von Jacob Beningo

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von DigiKey

Die Entwickler stehen ständig unter dem Druck, innovativ zu sein, aber ihr geistiges Eigentum (Intellectual Property, IP) geheimzuhalten und dabei den Energieverbrauch und die Kosten zu senken. Dadurch wurde die Open-Source-Hardwarebefehlssatz-Architektur (Instruction Set Architecture) RISC-V für die Entwickler von Prozessoren für Mobilanwendungen interessant. Seit nun RISC-V eine Option für Mikrocontroller ist, benötigen die Entwickler von Embedded-Systemen und Verbrauchergeräten eine schnelle Einstiegshilfe in die Entwicklung von eigenen RISC-V-Designs.

Eine derartige Einstiegshilfe ist das Entwicklungsboard LoFive-R1 FE310 von GroupGets LLC. Vor der Vorstellung des LoFive-R1 werden in diesem Artikel RISC-V und die Gründe für seinen Einsatz behandelt. Danach folgt eine Beschreibung des LoFive-R1 und eine Einführung in die Entwicklung von Anwendungen sowie einige Tipps und Tricks.

Was ist RISC-V?

RISC-V ist ein Open-Source-Projekt für eine Hardwarebefehlssatz-Architektur, das im Jahre 2010 an der Berkeley-Universität in Kalifornien seinen Anfang nahm. Es gab viele Gründe für die Entwicklung der RISC-V-Architektur, darunter die folgenden:

  • Nachfrage nach einer Open-Source-Befehlssatz-Architektur (ISA), die für akademische Projekte an der Universität und von Studenten genutzt werden konnte
  • Eine Möglichkeit, Entwicklungs-Know-how in die Entwicklung von ISAs zu investieren
  • Die Möglichkeit, die Zahlung von Lizenzgebühren an beherrschende Chip-Hersteller zu vermeiden und Kosten einzusparen
  • Geheimhaltung der Entwicklungsdetails einer Architektur (das geistige Eigentum eines Unternehmens), um wirtschaftlich relevant zu bleiben

Vom Standpunkt eines Entwicklers aus gesehen ist RISC-V eine vereinfachte Architektur, die für Geschwindigkeit und geringen Energieverbrauch optimiert ist. Damit sind auf RISC-V basierende Chips nicht nur für akademische, sondern auch für kommerzielle Anwendungen geeignet. Die RISC-V Foundation hat in der Tat so viel Interesse geweckt, dass sie inzwischen auf 325 Mitglieder angewachsen ist. Darunter sind Unternehmen wie Si-Five, Google, Microchip Technology, NVIDIA und Qualcomm.

Viele Unternehmen tragen zwar zur RISC-V-Entwicklung bei, jedoch besteht die beste Möglichkeit, in RISC-V einzusteigen, darin, sich ein Entwicklungsboard mit einem RISC-V-Prozessor zu beschaffen.

Das Entwicklungsboard LoFive FE310

Ein derartiges Entwicklungsboard ist das LoFive-R1 von GroupGets LLC (Abbildung 1).

Bild: Entwicklungsboard LoFive-R1 von GroupGetsAbbildung 1: Das Entwicklungsboard LoFive-R1 verfügt über einen RISC-V-Prozessor sowie über die gesamte erforderliche Elektronik, die das Entwicklungsboard zu einem Prozessormodul macht, das direkt auf eine Trägerkarte gelötet werden kann. (Bildquelle: GroupGets LLC)

Zum Ersten verfügt das LoFive R1 über einen RISC-V-Prozessor, der mit bis zu 320 MHz läuft. Der Prozessor besitzt 8 kB OTP-Speicher (One-Time-Programmable), 8 kB MROM (Mask ROM), ein 16 kB großes Befehlscache und 16 kB SRAM. Darüber hinaus verfügt der Prozessor über drei unabhängige PWM-Controller (Pulsweitenmodulation), über SPI, I2C, einen UART und sogar über eine QSPI-Flash-Schnittstelle.

Zum Zweiten können auf das Entwicklungsboard Erweiterungsanschlüsse gelötet werden, oder die Entwicklungsplatine kann aufgrund ihrer gekerbten Kanten direkt auf eine Trägerkarte gelötet und als Prozessormodul verwendet werden. Dies kann die Entwicklung von kundenspezifischer Hardware erheblich 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 MB großes 128-Mbit-Flash-Modul, das im Quad-Modus mit SPI-Bus-Geschwindigkeiten von bis zu 133 MHz betrieben werden kann (Abbildung 2). Das SPI-Flash-Modul kann zum Speichern verwendet werden, damit ausreichend Platz für Anwendungen vorhanden ist, oder es kann zum Speichern von Laufzeitdaten wie Anwendungsprotokollen eingesetzt werden.

Schaltbild: 128-Mbit-SPI-Flash-Modul von ISSIAbbildung 2: Das Entwicklungsboard LoFive-R1 umfasst ein 128-Mbit-SPI-Flash-Modul von ISSI zur Speicherung von Anwendungsdaten. (Bildquelle: ISSI)

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 eignet sich für bis zu 500 mA. Das Entwicklungsboard zieht nicht viel Strom. Daher können weitere Sensoren und Bausteine ohne eine zusätzliche Stromquelle betrieben werden,.

Schaltbild: 3,3 V-Linearregler SPX3819 von MaxLinearAbbildung 3: Der 3,3 V-Linearregler SPX3819 von MaxLinear auf dem Entwicklungsboard LoFive-R1 liefert bis zu 500 mA. Dies reicht für die On-Board-Elektronik sowie für zusätzliche Bausteine, z. B. für Sensoren, aus. (Bildquelle: MaxLinear)

Alle Konstruktionsdetails der Entwicklungsplatine, z. B. Schaltpläne und Materiallisten, finden Sie auf github. Diese Informationen erleichtern das Verständnis der Arbeitsweise des Boards. Sie können auch als Konstruktionsleitlinien für kundenspezifische Entwicklungsprojekte dienen.

Einrichtung der RISC-V-Toolchain und Programmierung des Entwicklungsboards

Den Entwicklern stehen je nach gewählter Entwicklungsplatine mehrere Toolchains für RISC-V zur Verfügung. Es ist wichtig zu erwähnen, dass das SDK für RISC-V für Windows, macOS und Linux verfügbar ist. 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

Gehen Sie dann mithilfe des folgenden Befehls in das vom SDK 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 SDK kann mithilfe der folgenden Befehle heruntergeladen werden:

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 (Abbildung 4). 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. Das SDK verwendet die allgemeine E/A-Schnittstelle (GPIO) des FT2232H-56Q, um die für die Programmierung des Mikrocontrollers erforderlichen JTAG-Verbindungen herzustellen.

Bild: Serielles Modul FT2232H-56Q MINI MDL von FTDIAbbildung 4: Das FT2232H-56Q MINI MDL von FTDI ist ein kostengünstiges serielles Modul, das über USB direkt an einen Computer und dann an den On-Board-UART des Entwicklungsboards LoFive-R1 angeschlossen werden kann. (Bildquelle: FTDI)

Zwischen dem Entwicklungsboard LoFive-R1 und dem Modul FT2232H-56Q müssen neun verschiedene Verbindungen hergestellt werden (Tabelle 1).

Pin auf Entw.-Board LoFive-R1 Pin auf Modul FT2232H-56Q
+5 VIN VBS
Masse GND
TRSTN AD5
TCK AD0
TDO AD2
TMS AD3
TDI AD1
UART0.TX BD1
UART0.RX BD0

Tabelle 1: Eine einfache Tabelle zur Herstellung der Verbindungen zwischen dem Entwicklungsboard LoFive-R1 und dem Modul FT2232H-56Q. (Quelle der Tabelle: DigiKey)

Diese Verbindungen können wie folgt zusammengefasst werden:

  • Stromversorgung und Masse
  • JTAG-Signale
  • UART-Signale

Die Verbindungen könnten direkt oder mithilfe einer Steckplatine hergestellt werden, z. B. mit der PB-83M von Global Specialties (Abbildung 5). Zu diesen Steckplatinen gehören Bananenstecker für zwei Spannungsquellen und Masse, um das Prototyping zu vereinfachen.

Bild: Steckplatine PB-83M von Global Specialties mit Bananensteckern

Abbildung 5: Zur Steckplatine PB-83M gehören Bananenstecker für zwei Spannungsquellen und Masse, um das Prototyping zu vereinfachen. (Bildquelle: Global Specialties)

Es ist empfehlenswert, vor der ersten Verwendung der LoFive-R1 einen Bootloader auf der Platine zu installieren. Der Bootloader wird einmal installiert und kann zur Vereinfachung von weiteren Upgrades verwendet werden. Der Bootloader kann vom SDK durch Ausführung des folgenden Befehls generiert werden:

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

Die „hello world“-Anwendung kann dann mit dem folgenden Befehl auf das Entwicklungsboard geladen werden:

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

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

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

Der Einstieg in die Arbeit mit RISC-V-Prozessoren ist etwas anders als bei anderen Mikrocontroller-Ökosystemen.  Es folgen einige „Tipps und Tricks“:

  • 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 seit 2017.
  • Für Entwickler, die lieber mit einer IDE anstatt mit Befehlszeilen-Tools arbeiten, ist vielleicht Freedom Studio, eine IDE auf Eclipse-Basis, für die RISC-V-Entwicklung interessant.

Entwickler, die sich an diese „Tipps und Tricks“ halten, werden feststellen, dass sie damit ziemlich viel Zeit und Ärger sparen, wenn sie zum ersten Mal mit RISC-V arbeiten.

Fazit

RISC-V ist eine interessante Architektur, die sich möglicherweise für Entwickler anbietet, die eine Open-Source-Hardware-Architektur einsetzen möchten. Zurzeit sind Entwicklungsboards für RISC-V-Prozessoren verfügbar, und aus diesem Artikel ist ersichtlich, dass die Einrichtung der Toolchains nicht schwieriger als bei jedem anderen Standard-Mikrocontroller ist.

Denken Sie daran, dass RISC-V faszinierend ist, aber nicht über das reichhaltige Ö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 je nach Endanwendung, den Vorlieben des Entwicklers und den Ressourcen lohnen.

DigiKey logo

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.

Über den Autor

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo ist ein Berater für eingebettete Software, der derzeit mit Kunden in mehr als einem Dutzend Ländern zusammenarbeitet, um ihr Unternehmen durch die Verbesserung von Produktqualität, Kosten und Markteinführungszeit dramatisch zu transformieren. Er hat mehr als 200 Artikel über Entwicklungstechniken für eingebettete Software veröffentlicht, ist ein gefragter Redner und technischer Trainer und verfügt über drei Abschlüsse, darunter einen Masters of Engineering der University of Michigan. Bei Interesse können Sie ihn unter jacob@beningo.com kontaktieren oder besuchen Sie seine Website www.beningo.com und melden Sie sich für seinen monatlichen Embedded Bytes Newsletter an.

Über den Verlag

Nordamerikanische Fachredakteure von DigiKey