Archiv der Kategorie: Benchmark

Teensy 4.0 – NXP’s i.MX RT1062 für alle

Teensy 4.0

Mit dem Teensy 4.0 steht ein kompaktes, aber dennoch handliches Boards mit NXP’s i.MX RT1062 (Arm Cortex-M7), einem sogenannten Crossover Processor (Kombination aus Mikrocontroller & Application Processor) , zur Evaluation bereit.

Die Ausstattungsliste im Datenblatt liest sich wie der Wunschzettel eines Embedded Entwicklers in der Vor-Weihnachtszeit. Ein Blick ins Datenblatt (https://www.nxp.com/part/MIMXRT1062CVL5A ) zeigt das.

Paul Stoffregen hat dafür gesorgt, dass der Teensy 4.0 auch als Arduino-kompatibler Mikrocontroller gehandhabt werden kann ( https://www.pjrc.com/teensy-4-0/ ) und somit der derzeit wohl leistungsfähigste Arduino zu einem sehr moderaten Preis von USD 19.95 zur Verfügung steht.

Den ersten Eindruck möchte ich mit den erweiterten Benchmarks aus meinem letzten Post https://ckblog2016.net/2019/08/19/maixduino/ beschließen.

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

Benchmarkergebnisse Sieve of Erastothenes
Benchmarkergebnisse Coremark 1.0

Wie die beiden Benchmarks deutlich zeigen, hat Teensy 4.0 mit seinem mit 600 MHz getakteten i.MX RT1062 die Performance des Maixduino wesentlich überboten und kann als derzeit leistungsfähigster Arduino-kompatibler Mikrocontroller (oder eben als Crossover Processor) angesehen werden.

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.

HiFive1 Rev. B

Vor wenigen Tagen war nun das über Mouser bestellte und von CrowdSupply gelieferte HiFive1 Rev. B Board im Postkasten.

HiFive1 Rev. B

Das HiFive1 Rev, B Board weist die folgenden Features auf:

  • MCU – SiFive Freedom E310-G0002 32-Bit RV32IMAC processor @ bis zu 320+ MHz (1.61 DMIPS/MHz)
  • Storage – 32 MBit SPI Flash
  • Connectivity – ESP32-SOLO-1 WiFi & Bluetooth module
  • I/Os (19 x Digital I/O Pins, 19 x external Interrupt Pins, 1 x external Wakeup Pin, 9 x PWM Pins, 1/3 SPI Controllers/HW CS Pins)
  • I/O Voltages –  3.3 V
  • USB – 1 x micro USB Port für Power, Programming und Debugging (via Segger J-Link)
  • Power Supply – 5 V via USB oder 7 – 12V via DC Jack; Operating Voltage: 3.3 V und 1.8 V
  • Dimensions – 68 mm x 51 mm
  • Gewicht– 22 g

Zur Programmierung kann das Freedom-E SDK herangezogen werden, was allerdings einen Linux-Rechner erfordert. ‌Alle Informationen hierzu sind unter https://github.com/sifive/freedom-e-sdk​ zu finden.

Die beim HiFive1 vorhanden Unterstützung der Arduino IDE wurde nicht weitergeführt.

Das Eclipse-basierte, wesentlich komplexere Freedom Studio läuft auch auf Windows.

Eine erste Idee von der Performance des HiFive1 Rev. B bekommt man über den Dhrystone Benchmark.

Resultat Dhrystone Benchmark (Out of the Box) (Das Ergebnis ist noch falsch – Bild wird ersetzt)

Mit diesem Ergebnis liegt der HiFive1 Rev. B in der Nähe von Cortex-M3/M4/A5.

MCUDIPS/MHz
HiFive1 Rev. B1.6
Cortex-M31.24
Cortex-M41.25
Cortex-A51.6

Quelle: https://brtchip.com/wp-content/uploads/Support/Documentation/Application_Notes/ICs/MCU/AN_304-FT900-Microcontroller-Benchmark.pdf

Arduino MKR1000

Mit dem Arduino MKR1000 steht ein WLAN-fähiger Arduino für IoT-Projekte zur Verfügung. Das Board basiert auf einem ATSAMW25 von Microchip/Atmel mit einem ARM-Cortex-M0+-Prozessor (Atmel SAMD21) und einem WLAN-Modul, welches nach IEEE 802.11 b/g/n im 2,4 GHz-Netz arbeitet.

Der Atmel SAMD21 ist mit 48 MHz getaktet und verfügt über 256 KB Flash und 32 KB RAM.  Damit entspricht die Performance einem Arduino M0, wie mit den im Beitrag „Arduino32 – Die jungen Wilden“ verwendeten Benchmarks gezeigt werden kann.

Arduino32: Die jungen Wilden
DESIGN&ELEKTRONIK 5/2016 (Teil 1), 6/2016 (Teil 2)
Teil 1 http://www.elektroniknet.de/embedded/entwicklungstools/artikel/130493
Teil 2 http://www.elektroniknet.de/embedded/entwicklungstools/artikel/131502/

Die betreffenden Benchmarks sind unter Sieve und IOLoop zu finden.

Sieve of Eratosthenes - Arduino MKR1000
5000 iterations
303 primes.
Runtime = 5209 ms
I/O Loop - Arduino MKR1000
Measure IO frequency on Pin 2
Runtime = 5 us

Der Arduino MKR1000 kann über einen LiPo-Akku oder eine externe 5V-Spannungsquelle betrieben werden. Beim Anschluss einer externen Spannungsquelle ist das Laden des Akkus möglich. Der LiPo-Akku sollte mindestens 700 mAh besitzen, so dass auch mobile Projekte über längeren Zeitraum ohne externe Spannungsquelle betrieben werden können

Raspberry Pi 3 Model B vs. 3 B+

Hier ist ein interessanter Vergleich zwischen Raspberry Pi 3 Model B und Raspberry Pi 3 Model B +.

Fazit des Autors Andrew Back:
Leistungssteigerungen sind immer willkommen. Während es immer jemanden gibt, der auf der Suche nach zusätzlicher Rechenleistung oder grösserem Netzwerkdurchsatz ist, ist Power-over-Ethernet mit ziemlicher Sicherheit das heißeste Feature des Raspberry Pi 3 Model B +. Der Vorteil, ein Gerät mit Netzwerk und Stromversorgung über ein einziges Kabel betreiben zu können – und zwar ohne eine Unordnung von Netzteilen und Stromkabeln – ist nicht zu unterschätzen.

Hochintegrierter WiFi-Chip

ist der Titel eines in Design & Elektronik 3/2018 erschienenen Beitrag zu Ledunia, einem ESP8266 High-End-Modul.

Die intelligente Analyse bestehender ESP8266 Module hat einen Ansatz geliefert, den verbreiteten ESP8266 Modulen eine Ergänzung beizustellen, die bestehende Beschränkungen aufhebt und neue Merkmale hinzufügt. Dieser Ansatz hat die Teilnehmer der Kickstarter-Kampagne überzeugt und diese zu einem erfolgreichen Abschluss geführt.

Wichtig für den Einsatz einer solchen Baugruppe sind neben der starken Arduino Community auch direkte Ansprechpartner, die bei einem in Deutschland entwickelten Produkt vorhanden sind.

Die vorliegenden Zertifizierungen (CE, FCC) für Ledunia bieten darüber hinaus Sicherheit beim Einsatz der Baugruppen.

Raspberry Pi 3 Model B+ UNIX Bench

Wie schon mit einer ganzen Reihe von Linux-Devices habe ich nun auch für den Raspberry Pi 3 Model B+ den UNIX-Benchmark laufen lassen. Die Resultate sind auf der Seite Resultate UNIXBench eingearbeitet.

Wie zu erwarten war, sehen die Resultate mit dem neuen Broadcom- SoC BCM2837B0, einem 64-bit Quad-Core-Cortex-A53 (ARMv8)  mit einer maximalen Taktfrequenz von 1.4 GHz hervorragend aus.

Nach der Installation von Raspbian Stretch hat man einen Linux-Kernel v4.9 installiert.

Vor der Installation des UNIX Benchmarks sollten Update und Upgrade erfolgen:

# sudo apt-get update
# sudo apt-get upgrade

Die Installation des UNIX Benchmarks erfolgt über Git durch

# git clone https://github.com/kdlucas/byte-unixbench.git

Danach kann das Programm gestartet werden

# cd byte-unixbench/Unixbench
# ./Run

und hält nach einiger Laufzeit das im Verzeichnis /results die Ergebnisse in verschiedenen Formatierungen bereit.

Ich habe für den Test mit Hilfe des Shell-Scripts max_cpu_freq.sh eine Taktfrequenz von 1.4 GHz eingestellt.

Screenshot

Hier ist das Resultatfile des UNIX-Benchmarks.

Eine Übersicht über die Performancesteigerung innerhalb der Raspberry Pi Familie zeigt die folgende Tabelle:

UNIX Bench
(single proc.)
Raspberry Pi Raspberry Pi 2
Model B
Raspberry Pi 3
Model B
Raspberry Pi 3
Model B+
 CPU  BCM2835  BCM2836 BCM2837  BCM2837B0
 Core  ARM1176JZFS  Cortex-A7
Quad Core
 64-bit quad-core ARMv8  64-bit quad-core Cortex-A53
 Architecture  ARMv6  ARMv7  ARMv8  ARMv8
 Clock  700 MHz  900 MHz  1200 MHz  1400 MHz
 Memory  256 MByte  1 GB  1 GB  1 GB
 Index  67.2  167.6  201.5  349.8