Archiv der Kategorie: Open Source

Maixduino – Arduino-kompatibel auf Basis RISC-V

Das ganze $23.90 kostende Sipeed Maixduino Kit for RISC-V AI + IoT ist seit geraume Zeit im Haus und hat auf die Inbetriebnahme gewartet. Ziel für mich war, das Board in der Arduino-Umgebung in Betrieb zu nehmen, um einen direkten Vergleich zu anderen Arduinos zu bekommen.

Zum Lieferumfang des Maixduino Kits gehören die folgenden Komponenten:

  • Maixduino Board (rechts)
  • 2.4 inch TFT Display (Mitte)
  • OV2640 camera module (links)
Komponenten des Maixduino Kits

Die Frontseite des Maixduino Boards zeigt an Hand der Buchsenleisten Kompatibilität zum Arduino-Formfaktor und die Rückseite zeigt in einem Blockdiagramm die zur Verfügung stehenden Ressourcen.

Neben der eigentlichen Inbetriebnahme in der Arduino IDE hat mich vor allem die zu erwartende Performance interessiert.

Um das Maixduino Board der Arduino IDE bekannt zu machen ist der folgende Eintrag in den Preferences vorzunehmen.

File -> Preferences: Eintrag der URL http://dl.sipeed.com/MAIX/Maixduino/package_Maixduino_k210_index.json unter Additional Boards Manager URLs. Einträge durch Komma separieren.

Im Boards Manager dann Maixduino (K210) selektieren und die folgenden Board Settings einstellen:

  • Board: Maixduino
  • Burn Tool Firmware: open-ec
  • Burn Baudrate: 1.5 M
  • Port: Serial port
  • Programmer: k-flash

Die Programmer Software k-flash wird vom Norton SONAR entfernt. Norton muss hier entsprechend eingerichtet resp. „entschärft“ werden. Die komplette Installation ist unter https://maixduino.sipeed.com/en/get_started/install.html beschrieben.

Um die Performance des Maixduino gegenüber anderen Arduinos resp. Arduino-kompatiblen Mikrocontrollern zu vergleichen, habe ich zwei Benchmarks laufen lassen:

  • Sieve of Eratosthenes
  • CoreMark

Den ersten Benchmark habe ich zu Vergleichszwecken verwendet, da ich in der Vergangenheit damit bereits zahlreiche Tests vorgenommen habe:

CoreMark 1.0 ist ein vom EEMBC empfohlener Test und zudem an die Arduino-Umgebung angepasst ( https://www.eembc.org/coremark/ ). Beide Benchmarks stehen unter https://github.com/ckuehnel/newArduino/tree/master/Maixduino zum Download zur Verfügung.

Hier nun die Resultate der beiden Benchmarks. Verglichen wurden eine Arduino Due (AT91SAM3X8E@ 84 MHz), eine ESPduino-32 (ESP-Wroom-32@80 MHz) und ein Maixduino (Kendryte K210 RISC-V@400 MHz):

Benchmarkergebnisse Sieve of Erastothenes
Benchmarkergebnisse Coremark 1.0

Gegenüber dem Arduino Due hatte der ESP-32 bereits eine deutliche Verbesserung der Performance gezeigt, die aber vom Maixduino noch wesentlich überboten wird. Damit dürfte der Maixduino derzeit der leistungsfähigste Arduino-kompatible Mikrocontroller sein.

Maduino GPRS A6

Maduino GPRS A6 ist ein kostengünstiger Netzwerkknoten für das IoT. Der Hersteller
Makerfabs mit Sitz in Shenzhen, China hat auf dem Board einen Mikrocontroller ATmega 328, ein GRRS/GSM-Modul AI-Thinker A6, ein und ein integriertes Power-Management integriert.

Maduino GPRS A6

Das GRPS/GSM-Modul A6 unterstützt Quad-Band 850/900/1800/1900 MHz, das jedes GSM-Netzwerk abdeckt. In Verbindung mit einer SIM-Karte können Daten über GPRS übertragen werden. In meinem Post 2G für IoT Anwendungen hatte ich hierzu entsprechende Hinweise gegeben.

Das Modul kann über die Arduino IDE programmiert werden. Im Wiki sind Hinweise zur Inbetriebnahme und Programmierung enthalten. Hinweise zu einem Firmware Update sind hier zu finden.

Open-Source Real-Time OS für das IoT

Steht man heute vor der Aufgabe, ein neues Embedded System zu entwickeln, dann wird in den Anforderungen kaum die Anforderung nach einer Netzwerkverbindung fehlen. Dabei spielt es in erster Linie keine Rolle, ob es sich um eine drahtlose oder drahtgebundene Kommunikation handelt, ob die Kommunikation durch die Anwendung genutzt wird oder einen Remote Access für Konfiguration und Service darstellt. Möglicherweise lassen sich diese Dinge auch kaum vernünftig trennen.

Ein Embedded System, welches derartige Anforderungen erfüllen muss, ist mit vernünftigem Entwicklungsaufwand nicht ohne Betriebssystem umsetzbar. Die Suche nach einem für die betreffende Aufgabenstellung geeigneten Betriebssystem umfasst, viele und sehr unterschiedliche Aspekte.

Betrachtet man die Langlebigkeit von Investitionsgütern, dann erscheint schon aus strategischen Gründen der Einsatz eines OS-RTOS zwingend. Einer ersatzlosen Abkündigung eines etablierten, proprietären RTOS kann auf diese Weise der Schrecken genommen werden. In einer gewissen Klasse von Embedded Systems bis hin zu Supercomputern gibt es mit Linux ein ausgezeichnetes Beispiel für ein solches Open Source Betriebssystem.

Damit ist Linux heute ein mächtiges Betriebssystem, welches aber auch gewisser Ressourcen bedarf und für Systeme mit kleinem Footprint, geringen Ressourcen und möglichst für Batteriebetrieb angepasstem Stromverbrauch weniger geeignet ist.

Analysiert man aus Github Daten für Code Frequency, Commits und Contributions für Contiki, RIOT und Zephyr, dann kann deutlich eine größere Aktivität der Community beim Zephyr OS gegenüber den anderen beiden RTOS verzeichnet werden. Natürlich ist das Zephyr OS auch ein „junges“ RTOS, was nicht in allen Bereichen bereits ausgereift sein kann.

Das Zephyr Project (https://www.zephyrproject.org/what-is-zephyr) ist ein von der Linux Foundation gehostetes Collaboration-Projekt, eine Open Source Zusammenarbeit, die führende Kräfte aus der gesamten Branche zusammenbringt, um mit dem Zephyr OS ein skalierbares Echtzeit-Betriebssystem (RTOS) für mehrere Architekturen ressourcenbeschränkter Geräte zu entwickeln.

Der in der Zeitschrift Design & Elektronik erschienen Beitrag mit dem o.a. Titel (Design & Elektronik 3/2019, S. 42-48  ) soll Einblicke in das Zephyr OS und die Zephyr Entwicklungsumgebung geben. An Hand einiger einfacher und nachvollziehbarer Programmbeispiele wird die Vorgehensweise bei der Programmierung von Anwendungen und der Build Prozess dokumentiert. Die Programmbeispiele selbst sowie dazugehörige Screenshots sind auf Github unter https://github.com/ckuehnel/zephyrtests abgelegt.

Das Zephyr OS ist ein Open Source RTOS, welches durch das von der Linux Foundation gehostete Zephyr Project und die Nähe zu Linux das Potential hat, bei Embedded Systems mit kleinem Footprint in Zukunft vergleichbar erfolgreich zu werden, wie es Linux bei Systemen mit mehr Performance schon länger ist. Der Erfolg wird sicher stark durch die Community geprägt. Ausdauer und Kraft sind der Community zu wünschen. Die zentrale Mailinglist des Zephyr Projects [ https://lists.zephyrproject.org/g/main ] gibt aktuell Auskunft über die laufenden Aktivitäten.