Was für den Benchmark ULPMark-PP gilt, ist auch für die Praxis mit dem neuen Benchmark IoTMark-BLE [4] relevant, der – auf den ersten Blick – nur um Funktionen für den Test einer Bluetooth-Low-Energy-Funkstrecke erweitert wird.
Weitere Versionen dieses Benchmarks für Funktechniken wie WiFi, LoRa, Thread, ZigBee, die für Anwendungen im Internet der Dinge interessant sind, sollen laut EEMBC folgen [5].
Aufgrund der Komplexität und den bisher noch sehr lückenhaften Dokumentationen zum IoTMark-BLE ist es empfehlenswert, mit dem ULPMark-PP zunächst entsprechende Erfahrungen [6] zu sammeln und auf die bereits vertrauten Entwicklungsumgebungen und die bestehenden Kontakte zu den Experten der einzelnen Halbleiterhersteller zu setzen.
Erfreulicherweise erscheint der neue Benchmark IoTMark-BLE deutlich übersichtlicher (Bild 6) als ULPMark-PP. Gleichwohl gab es zum Zeitpunkt der ersten Tests für das Elektronik-Projekt keine richtige Dokumentation des EEMBC. Am 27. Oktober 2017 wurde die Version 0.0.x veröffentlicht, sodass der Inhalt von zwei Readme-Dateien besonders wichtig ist.
Die erste Readme-Datei im iot-ble-Hauptverzeichnis ist sehr überschaubar, denn es sind dort lediglich die Funk¬tionen aufgelistet, die zu portieren sind, und es wird knapp angegeben, wie das anzufertigende BLE-Profil beschaffen sein soll. In der zweiten Readme-Datei, die sich im Ordner monitor befindet, sind ebenfalls zu portierende Funktionen aufgelistet, die im Vergleich zur ersten Datei hier jedoch kommentiert sind. Leider sind die meisten Funktionen optional und für die Initialisierung nicht von Bedeutung. Vielfach sind allein der Quellcode und die (sparsamen) Kommentare in den c-Dateien für die Umsetzung hilfreich. Dinge wie beispielsweise die gültige I²C-Bus-Adresse des E/A-Managers (Arduino Uno) oder Informationen dazu, wie der Benchmark genau abläuft, werden allein aus den Quellcodes ersichtlich.
Eine weitere Schwierigkeit, den Benchmark auf einen bestimmten Mikrocontroller anzupassen, ergibt sich dadurch, dass sich die verschiedenen Komponenten nicht einzeln testen lassen, weil sie alle irgendwie voneinander abhängen. Um sicher zu gehen, dass die Implementierung für das zu testende Mikrocontrollermodul korrekt funktioniert, müsste deshalb für jede Komponente ein eigenes Projekt erstellt werden, damit es separat getestet und später mit den anderen Komponenten zusammengeführt wird, was einen beträchtlichen Aufwand erfordert. Beim ULPMark-PP ist hingegen eine gewisse Modularisierung gegeben, was auch für den IoTMark-BLE wünschenswert wäre.
Wie erwähnt, wird für den Energiemonitor (EMON V2, Bild 2) ein X-Nucleo-Modul von STMicroelectronics eingesetzt, der für alle aktuellen EEMBC-Benchmarks notwendig ist. Für den IoTMark-BLE wird zusätzlich ein E/A-Manager benötigt, der den Zugriff auf das zu testende Mikrocontrollermodul steuert und Timing-Messungen ausführt. Hierfür wird ein Arduino Uno verwendet, der wie das X-Nucleo-Modul mit dem USB eines PC (Bild 7) zu verbinden ist.
In einigen EEMBC-Dokumenten sowie Berichten mit Fotos über den IoTMark-BLE ist zu lesen und zu erkennen, dass das Energiemonitormodul auf den Arduino gesteckt wird. Dies ist nicht nötig, weil damit keinerlei elektrische Verbindung zwischen den beiden Platinen hergestellt wird. Es handelt sich hierbei lediglich um eine Methode um Platz auf dem Labortisch zu sparen.
EEMBC empfiehlt, alle USB-Anschlüsse des Messaufbaus über einen USB-3-Hub mit 0,9 A pro Anschluss an den PC, der das Host-System bildet, anzuschließen, wobei dann auch die Spannungsversorgungen der einzelnen Module über den USB erfolgen. Im realisierten Messaufbau (Bild 7) werden der Arduino und das Energiemonitormodul (Power Manager) über den USB und der Raspberry Pi von einem separaten Netzteil versorgt, was auch ohne USB-Hub mit dem verwendeten PC einwandfrei funktioniert hat.
Das zu testende Mikrocontrollermodul wird wie beim ULPMark-PP sonst auch an UB und Masse vom Energiemonitormodul angeschlossen. Die Befehle empfängt das DUT vom E/A-Manager (Arduino) über eine einfache UART-Verbindung (RXD, TXD, GND). Als Simulation von Sensordaten sendet der Arduino 1024 zufällig erzeugte Bytes, die über den I2C-Bus an das DUT übertragen werden, was entsprechend zu verschalten ist (Bild 8). Außerdem ist ein Digital-Pin vom DUT an das Energiemonitormodul anzuschließen, um dem Host-System hiermit den Status (Zeitstempel, Slot-Start) des Benchmarks signalisieren zu können.
Weil der Arduino mit 5 V arbeitet und die Testmodule (DUT) mit Spannungen von 1,8 V bis 3,3 V betrieben werden können, müssen die Signalpegel zwischen den beiden Kommunikationspartnern auf den einzelnen Signalleitungen angepasst werden. Dazu dienen zwei Pegelumsetzermodule mit BSS138, die auf einem Prototype Shield montiert und verdrahtet werden, das auf den Arduino Uno gesteckt wird.
Die Firmware für den E/A-Manager wurde vom EEMBC ursprünglich als Arduino-Projekt (iomanager.ino) zur Verfügung gestellt, neuerdings jedoch nur noch als Hex-Datei. Neben der Übertragung der Firmware in den Flash-Speicher fallen keine weiteren Arbeiten am E/A-Manager an.
Für den BLE-Test wird der Testaufbau um einen Funk-Manager (Bild 7) erweitert, der von einem Raspberry Pi mit BLE-Interface gebildet wird und der für die Funkübertragung einen BLE Client darstellt. Das Host-System kommuniziert mit dem E/A-Manager (Arduino), dem Energie-Manager (X-Nucleo) und dem Funk-Manager (Raspberry Pi) über den USB. Beim Raspberry Pi wird hierfür das UART-Interface verwendet, weshalb noch ein USB-zu-TTL-Adapter notwendig ist, z.B. von Delock oder FTDI. EEMBC hat den Raspberry Pi Model 2 und einen Bluetooth-4.0-USB-Adapter der Firma Plugable für den Funk-Manager ein¬gesetzt. Im Testbetrieb funktionierte jedoch auch ein aktueller Raspberry Pi Model 3 mit dem integrierten BLE-Transceiver. Das EEMBC liefert ein angepasstes Raspbian-Image als Funk-Manager-Software, das lediglich auf den Raspberry Pi aufzuspielen und zu starten ist. Auch hierfür sind keine Einstellungsarbeiten auszuführen.