Durch einen Artikel im Heise Newsticker bin ich auf den Longan Nano der chinesischen Firma Sipeed gestoßen. Das Board basiert auf einem neu entwickelten 32-bit-RISC-V-Prozessor, dem GD32V (genau: GD32VF103CBT6) von GigaDevice, der am 22.08.2019 offiziell vorgestellt wurde. Es ist mit ca. 46 mm x 20 mm etwas größer als ein Arduino Nano (45 mm x 18 mm) und verfügt über einen Micro-SD-Kartenleser auf der Unter- sowie ein kleines Display (0,96 Zoll, 80 x 160 Pixel) auf der Oberseite. Außerdem wird ein transparentes Kunstoffgehäuse mitgeliefert, dazu zwei Pinleisten zum Anlöten. Die Verbindung mit dem PC erfolgt über einen USB-C-Anschluss.
Die Angaben zu Preisen und Software beziehen sich auf Mitte November 2019 (sofern nicht anders angegeben).
Den Absatz zur Board-Variante Longan Nano Lite habe ich am 21.11.2019 ergänzt. Weitere Änderungen mache ich bei Bedarf bzw. wenn es weitere Dokumentationen oder andere Ressourcen im Web gibt.
Hardware
Eine (mehr oder weniger) komplette Produktinformation gibt es beim Hersteller auf der Seite longan.sipeed.com/en/ und im Datenblatt.
Longan Nano | Longan Nano Lite | |
---|---|---|
Prozessor: | GD32VF103CBT6 | GD32VF103C8T6 |
Speicher: | 128 KB Flash 32 KB SRAM | 64 KB Flash 20 KB SRAM |
Anschlüsse: | USB-C, 3 x USART (serielle Kommunikation), JTAG, 8-Pin Folienkabelanschluss für LCD, Speicherkartenleser (Mikro-SD) |
|
Peripherie: | 2 x I2C 3 x SPI 2 x I2S 2 x CAN 2 ADC (Analog-Digital-Konverter; 10 Kanäle) 2 DAC (Digital-Analog-Konverter) |
|
dazu: | verschiedene 16-bit-Timer, Watchdog, RTC, Systick |
Bilder
Bestellung und Preis
Einzige Bezugsquelle war im September 2019 der Seeed-Shop; der dort verlangte Preis von 4
,90 $ (ca. 4,40 €) scheint für diese Ausstattung sehr günstig, relativiert sich aber durch die anfallenden Versandkosten – für meine Kleinbestellung waren das rund 9,50 $ (ca. 8,55 €). Damit der Stückpreis erträglich bleibt, muss man mehrere Boards bestellen. Dabei ist zu beachten, dass bei einem Wert ab 22 € (inkl. Versandkosten!; ca. 24,50 $, also ziemlich genau drei Boards inkl. Versand) Einfuhrumsatzsteuer von 19% fällig wird. Für 5 Dollar kommt man jedenfalls nicht an den Longan Nano, aber bei Bestellung mehrerer Boards kann man alles in allem bei 7-8 € pro Stück landen.
Noch ist das Board sehr neu – Mitte September 2019 war nur eine Vorbestellung zum 16. Oktober möglich.[1]Die per Mail angekündigte Lieferung wurde pünktlich verschickt und traf Anfang November 2019 nach 2 ½ Wochen ein. Der Postversand innerhalb Deutschlands erfolgte über die Logistikfirma … Continue reading Derzeit gibt es im Seeed-Shop keine Wartezeiten mehr und der Longan Nano ist auch bei aliexpress.com im Programm. Einzelne Kits (Board mit Display und Gehäuse) sind dort ab ca. 6 € zu haben; außerdem ist auch eine günstigere Variante (nur das Board ohne Display und Gehäuse) ab ca. 3,50 € erhältlich (die genannten Preise vom November 2019 scheinen auch im Mai 2021 noch gültig zu sein; jeweils zzgl. Versandkosten).
Arduino als Entwicklungsumgebung unvollständig
Momentan bietet Sipeed für den Longan Nano eine vollständige Unterstützung nur in PlatformIO an. Die Unterstützung der Arduino-IDE ist in Arbeit, aber noch nicht fertig – siehe die offenen Punkte in der To-Do-Liste auf GitHub. Die Kommunikation per SPI ist inzwischen implementiert, aber die darüber anschlossenen Geräte (SD-Kartenleser und das Display) können noch nicht angesprochen werden.
Ich habe mich wegen der (fehlenden) Funktionen und Dokumentation erst einmal an PlatformIO gehalten und werde mir später angucken, wie der Longan Nano sich in der Arduino-IDE verhält. Er kann dort jedenfalls eingerichtet werden, indem als Boardverwalter-URL folgender Link eingetragen wird (Quelle): [2]Die Einrichtung zusätzlicher Mikrocontroller-Boards in der Arduino-IDE geschieht im Menü Datei → Voreinstellungen → Reiter Einstellungen → Zusätzliche Boardverwalter-URLs. Dann kann … Continue reading
http://bigbits.oss-cn-qingdao.aliyuncs.com/Arduino_for_GD32V/package_longduino_index.json
Nachtrag vom 08.05.2021: Seit Herbst 2019 hat sich bei der Entwicklung der Arduino-Bibliotheken anscheinend nichts mehr getan – z.B. werden lt. der To-Do-Liste immer noch nicht die I2C- (Wire) und die serielle Schnittstelle (HardwareSerial) unterstützt. Da das Git-Repository seit September 2019 nicht mehr aktualisiert wurde, sollte man wohl nicht mehr auf Updates, erst recht nicht auf eine vollständige Integration des Longan Nano in die Arduino-IDE hoffen, sondern stattdessen mit PlatformIO arbeiten.
Bei den folgenden Schritten halte ich mich im Großen und Ganzen an die Dokumentation von Sipeed auf longan.sipeed.com/en/. Wegen einiger Abweichungen und Hindernisse stelle ich das hier aber ausführlich dar. Ich habe die Software unter Windows 10 installiert; sie ist auch für Linux verfügbar.
Treiber
Nach dem Auspacken und Anschließen per USB-C leuchtet das Display auf und die On-Board-LED blinkt abwechselnd rot-grün-blau – auf dem Board ist also zusätzlich zur roten Power-LED eine RGB-LED eingebaut. Im Windows-Gerätemanager ist das Board erstmal nicht als USB-Gerät oder COM-Port zu finden.
Um das Board über den USB-C-Anschluss zu programmieren, muss der Treiber libusb installiert werden. Dieser Programmier-Modus per USB wird als DFU (Device Firmware Upgrade) bezeichnet.
Download des GigaDevice-Treibers: dl.sipeed.com/LONGAN/Nano/Tools/GD32_MCU_Dfu_Tool_V3.8.1.5784_1.rar
Das Archiv enthält zwei Verzeichnisse. Ich habe nur die Treiber aus GD32 MCU Dfu Drivers_v1.0.1.2316
benötigt. Je nach Windows-Version verwendet man die 32- oder 64-bit-Version. Das Installationsprogramm GD32 MCU Dfu Drivers.exe
muss als Administrator gestartet werden.


(Der andere Ordner GD32 MCU Dfu Tool_v3.8.1.5784
enthält ein Tool, um eine neue Firmware auf den Longan Nano aufzuspielen. Das war mit meinem System aber nicht nötig, da PlatformIO den Upload erledigt.)
Damit PlatformIO das Board im DFU-Modus anspricht, muss mit dem Tool ZADIG ein anderer Treiber installiert werden.
Zuerst muss das Board in den DFU-Modus gebracht werden:
- Boot-Taste (Beschriftung: BOOT0) drücken und gedrückt halten
- kurz die Reset-Taste drücken und loslassen
- dann die Boot-Taste loslassen
Wenn sich das Board im DFU-Modus befindet, ist es im Windows-Gerätemanager zu sehen (sonst nicht) – bei den USB-Controllern wird ein Gerät GD32 Device in DFU mode angezeigt.
Zadig wird ohne Installation direkt ausgeführt; es fordert Administratorrechte an. Damit die USB-Geräte angezeigt werden, muss im Menü Options → List all Devices
das Häkchen gesetzt werden. Hat man das richtige Gerät ausgewählt (bei mir war es bereits passend vorbelegt), erfolgt durch Klicken auf Replace Driver
die Installation (s. Screenshots).
PlatformIO einrichten
PlatformIO ist eine Open-Source-Entwicklungsumgebung für das Internet of Things (IoT) und ist deutlich leistungsfähiger als die Arduino-IDE. Hunderte von Mikrocontroller-Boards werden unterstützt, darunter zig Varianten des Arduino und anderer Controller mit dem Chip AT328x, der Raspberry Pi und Espressifs ESP32 und ESP8266.
Es wird als Erweiterung von Visual Studio Code (VS Code) installiert. Wer VS Code noch nicht auf dem Rechner hat, findet die Software (Microsoft kann auch Open Source 😉 ) auf code.visualstudio.com. Die Einrichtung von PlatformIO erfolgt dann über den Extension Manager: Menü View → Extensions
; im Suchfeld platformio
eingeben, das Paket PlatformIO IDE
auswählen und installieren.
Im Blog des Versandhändlers AZ-Delivery gibt es eine ausführliche Anleitung zur Installation von PlatformIO mit vielen Bildern. Dort wird auch gleich der Git-Client mitinstalliert, was ich zuerst nicht beachtet hatte (siehe unten).
Installation des Longan Nano Boards
Nach dem Starten von VS Code klickt man am linken Rand auf das PlatformIO-Icon (im Bild mit „1.” markiert), um die PlatformIO-Übersicht zu öffnen. Links unten im Schnellzugriffs-Menü wählt man Platforms
aus (2.) und klickt dann rechts auf Advanced Installation
(3.). In dem Dialog, der sich dann öffnet, trägt man folgende Adresse ein (4.):
https://github.com/sipeed/platform-gd32v.git
Ein Klick auf Install
(5.) installiert die Board-Definitionen von Sipeed für die GD32-Plattform.
Da ich vorher nicht den Git-Client installiert hatte, gab es eine Fehlermeldung:
PlatformManager: Installing platform-gd32v Error: Please install Git client from https://git-scm.com/downloads
Also habe ich Git nachinstalliert; den Download findet man unter der in der Fehlermeldung angegebenen Adresse git-scm.com/downloads. Durch die Installation kann man sich jeweils mit Bestätigen der Vorauswahl durchklicken. Bei der Frage nach dem Editor wählt man Visual Studio aus und lässt die anderen Optionen unverändert (siehe der bereits oben verlinkte Blog-Eintrag von AZ-Delivery). Anschließend hat auf meinem System erst nach einem Neustart des Rechners die Installation der Boards funktioniert – nur ein (mehrfacher) Neustart von VS Code und die Kontrolle, dass der Pfad zu Git in der Umgebungsvariablen PATH eingetragen ist, hat nicht ausgereicht.
Testprogramm in PlatformIO: Blinken der internen LED
Für den ersten Test habe ich das Blink-Beispiel aus der Anleitung von Sipeed nachvollzogen.
In PlatformIO klickt man auf den Button Project Examples
(Schritt 1), wählt das Projekt arduino blink
aus (Schritt 2) und öffnet es durch Klick auf Open
(Schritt 3).
Den Quellcode kann man – wie zu erwarten – durch einen Klick auf den Programmnamen Blink.cpp
anzeigen und bearbeiten. [3]Anders als in der Arduino-IDE, wo die Quellprogramme (Sketches) die Dateiendung .ino haben, wird hier die übliche Endung .cpp für Programme in C++ verwendet.
In der Konfigurationsdatei platformio.ini löscht man den nicht benötigten Abschnitt mit den Angaben zum GD32V-Evaluations-Board (Schritt 5) und ergänzt im Abschnitt zum Longan Nano folgende Zeile, um DFU als Upload-Protokoll einzustellen (Schritt 6). Andernfalls wird als Default die serielle Übertragung verwendet, was mit der hier verwendeten Konfiguration nicht funktioniert.
upload_protocol = dfu
; PlatformIO Project Configuration File ; ; Build options: build flags, source filter, extra scripting ; Upload options: custom port, speed and extra flags ; Library options: dependencies, extra library storages ; ; Please visit documentation for the other options and examples ; http://docs.platformio.org/page/projectconf.html [env:sipeed-longan-nano] platform = gd32v framework = arduino ; alternativ: framework = gd32vf103-sdk board = sipeed-longan-nano upload_protocol = dfu monitor_speed = 115200

Durch einen Klick auf das Build-Icon am unteren Rand des Programmfensters (der Haken) wird das Programm übersetzt (Schritt 7) und mit einem Klick auf den Pfeil daneben auf den Longan Nano hochgeladen. Der muss sich dazu im DFU-Modus befinden (s.o.; bei gedrückter Boot-Taste kurz Reset drücken). Wie in der Arduino-IDE kann man auch hier gleich das Icon zum Hochladen anklicken – dann wird die Übersetzung mit angestoßen.
Nach dem erfolgreichen Upload wird eine Fehlermeldung („error 74”) ausgegeben. Die habe ich erst einmal ignoriert – die Bedeutung ist mir (noch) unklar. Das Programm wurde trotzdem zum Longan Nano übertragen und die interne LED blinkt wie gewünscht.


Zum Abschluss noch die vollständige Ausgabe beim Programm-Upload:
> Executing task: C:\Users\Heiko\.platformio\penv\Scripts\platformio.exe run --target upload Sipeed Longan Nano HARDWARE: GD32VF103CBT6 108MHz, 32KB RAM, 128KB Flash DEBUG: Current (altera-usb-blaster) External (altera-usb-blaster, gd-link, jlink, rv-link, sipeed-rv-debugger, um232h) PACKAGES: framework-arduino-gd32v 0.1.1, tool-openocd-gd32v 0.1.1, tool-gd32vflash 0.1.0, toolchain-gd32v 9.2.0 LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf LDF Modes: Finder ~ chain, Compatibility ~ soft Found 0 compatible libraries Scanning dependencies... No dependencies Checking size .pio\build\sipeed-longan-nano\firmware.elf Memory Usage -> http://bit.ly/pio-memory-usage DATA: [= ] 7.2% (used 2358 bytes from 32768 bytes) PROGRAM: [= ] 6.3% (used 8250 bytes from 131072 bytes) Configuring upload protocol... AVAILABLE: altera-usb-blaster, dfu, gd-link, jlink, rv-link, serial, sipeed-rv-debugger, um232h CURRENT: upload_protocol = dfu Uploading .pio\build\sipeed-longan-nano\firmware.bin dfu-util 0.9 Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ Opening DFU capable USB device... ID 28e9:0189 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuERROR, status = 10 dfuERROR, clearing status Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 2048 GD32 flash memory access detected Device model: GD32VF103CB Memory segment (0x08000000 - 0801ffff)(rew) Erase size 1024, page count 128 Downloading to address = 0x08000000, size = 8268 Download [ ] 0% 0 bytes Download [====== ] 24% 2048 bytes Download [============ ] 49% 4096 bytes Download [================== ] 74% 6144 bytes Download [======================== ] 99% 8192 bytes Download [=========================] 100% 8268 bytes Download done. File downloaded successfully Error during download get_status *** [upload] Error 74 =============================== [FAILED] Took 3.23 seconds =============================== Der Terminalprozess wurde mit folgendem Exitcode beendet: 1 Das Terminal wird von Aufgaben wiederverwendet, drücken Sie zum Schließen eine beliebige Taste.
Longan Nano Lite
Wie oben geschrieben ist inzwischen auch eine Version des Longan Nano ohne Display und Gehäuse erhältlich – dieses Board wird aber noch nicht auf der Herstellerseite erwähnt; auch der Seeed-Shop hat es nicht im Programm. Ich habe es bisher nur bei aliexpress.com gefunden (und gekauft). Die Händler dort unterscheiden bei den verschiedenen Boards nicht nach Prozessortyp – man kann also den Produktbeschreibungen nicht entnehmen, dass der Nano Lite einen anderen Chip mit weniger Speicher hat (bzw. dass es überhaupt verschiedene Chips gibt).
Das „Lite” im Namen ist nicht auf meinem Mist gewachsen – es wird auf der Github-Seite von Sipeed zu den Definitionen der Boards mit GD32V-Chip genannt. Der Name ist vor allem relevant für die Arbeit mit PlatformIO – dort muss eine aktuelle Version der Board-Definitionen installiert sein (siehe oben). Neben dem fehlenden Display ist auf dem Board auch ein anderer Chip mit weniger Speicher verbaut, der GD32VF103C8T6. Deshalb scheinen auf dem Board auch interne Pin-Definitionen anders zu sein – das Blink-Beispiel kompiliert zwar in PlatformIO und wird sogar ohne die oben beschriebene Fehlermeldung hochgeladen – aber die interne LED blinkt nicht. Das funktioniert erst, wenn die Board-Definition in der platformio.ini
wie folgt geändert wird:
[env:sipeed-longan-nano]
platform = gd32v
framework = arduino
board = sipeed-longan-nano-lite ; <-----
upload_protocol = dfu
monitor_speed = 115200
Wenn man sich die Informationen im Board-Explorer von PlatformIO ansieht, findet man dort auch die Informationen aus dem Datenblatt [4]Datenblatt als PDF; die Features der verschiedenen Varianten des GD32V-Chips zeigt die Tabelle auf Seite 10. wieder: das Lite-Board hat weniger Speicher und einen anderen Chip.
Die unterschiedliche Speicherausstattung kann man auch in den Meldungen beim Übersetzen des Blink-Programms sehen:
Longan Nano Lite:
DATA: [= ] 11.5% (used 2358 bytes from 20480 bytes) PROGRAM: [= ] 12.6% (used 8250 bytes from 65536 bytes)
Longan Nano:
DATA: [= ] 7.2% (used 2358 bytes from 32768 bytes) PROGRAM: [= ] 6.3% (used 8250 bytes from 131072 bytes)
Momentan ist die Dokumentation zum Longan Nano noch sehr dünn – und zum Nano Lite so gut wie nicht vorhanden. Das wird sich voraussichtlich mit der Zeit noch ändern, wenn die Boards etwas weitere Verbreitung gefunden haben.
Links
- Homepage des Longan Nano (Dokumentation) beim Hersteller Sipeed: longan.sipeed.com/en/ [5]Man findet die Dateien auch bei GitHub: github.com/sipeed/Longan-DOC
- Pin-Zuordnung: Bild
- Forum (Bulletin Board) von Sipeed: bbs.sipeed.com
- libusb-Treiber: dl.sipeed.com/LONGAN/Nano/Tools/GD32_MCU_Dfu_Tool_V3.8.1.5784_1.rar
Zadig-Tool: Download – Homepage - diverse Downloads, Dokus etc.: dl.sipeed.com/LONGAN/Nano
Benannt ist der Longan Nano übrigens nach der Longan-Frucht – Linux Development Boards mit dem Namen Lichee hat Sipeed auch im Programm. Mit Himbeeren, Bananen, Äpfeln und Kirschen aus anderer Quelle kann man sich so einen bunten Hardware-Obstkorb zusammenstellen. 🙂
Themenverwandte Beiträge
Mit den Funktionen der Bibliothek »Preferences« kann man im Flash-Speicher des ESP32 Daten zur Progr...
Der TEMT6000 ist ein Lichtsensor, der seine Messwerte analog ausgibt. Er besteht im wesentlichen aus...
Der BH1750 ist ein Sensor zum Messen der Stärke des Umgebungslichts. Er misst die Beleuchtungsstärke...
Mit dem ADS1115 Breakout Board) ist es möglich, Analogwerte deutlich genauer zu messen, als es ein E...
Fußnoten
1↑ | Die per Mail angekündigte Lieferung wurde pünktlich verschickt und traf Anfang November 2019 nach 2 ½ Wochen ein. Der Postversand innerhalb Deutschlands erfolgte über die Logistikfirma 4PX in Grolsheim, eine Tochterfirma des chinesischen Versandriesen Alibaba – also nicht direkt aus China, sondern mit einer Zwischenstation. |
---|---|
2↑ | Die Einrichtung zusätzlicher Mikrocontroller-Boards in der Arduino-IDE geschieht im Menü Datei → Voreinstellungen → Reiter Einstellungen → Zusätzliche Boardverwalter-URLs . Dann kann über den Boardverwalter im Menü Werkzeuge → Board… → Boardverwalter der Longan Nano installiert werden. Der Beitrag zu den ersten Schritten mit dem ESP32 enthält eine ausführlichere Beschreibung des Boardverwalters. |
3↑ | Anders als in der Arduino-IDE, wo die Quellprogramme (Sketches) die Dateiendung .ino haben, wird hier die übliche Endung .cpp für Programme in C++ verwendet. |
4↑ | Datenblatt als PDF; die Features der verschiedenen Varianten des GD32V-Chips zeigt die Tabelle auf Seite 10. |
5↑ | Man findet die Dateien auch bei GitHub: github.com/sipeed/Longan-DOC |