Bild 1: Im Visitenkartenformat: Mit Labview und RT-Linux programmierbares SoM mit Multicore-ARM-Cortex-A9 und FPGA auf kundenspezifischer Hardware.

Bild 1: Im Visitenkartenformat: Mit Labview und RT-Linux programmierbares SoM mit Multicore-ARM-Cortex-A9 und FPGA auf kundenspezifischer Hardware.Schmid Elektronik

Der Temperaturbereich des scheckkartengroßen RIO-System-on-Module (SoM) von National Instruments erstreckt sich von -40 bis +85 °C. Es ist stromsparend und stellt alle Funktionen für ein smartes Embedded-System bereit. Die Highspeed-CPU besteht aus einem ZYNQ-System-on-Chip (SoC) von Xilinx, mit 667 MHz Dual-Core-ARM-Cortex-A9, Artix-7-FPGA und externem 512 MByte DRAM sowie 512 MByte Flash. Daneben stehen weitere Funktionen wie Gigabit Ethernet, CAN, USB 2.0 Host/Device, SD-Card und serielle Schnittstellen zur Verfügung. Diese werden zusammen mit 160 GPIO des FPGAs über einen robusten 320-poligen Verbindungsstecker auf das Baseboard geführt. Dieses konditioniert die TTL-Signale und enthält zusätzliche kundenspezifische Hardwarebausteine sowie Speisungen (Bild 2). Der besondere Wert des SoM ist seine Programmierbarkeit in Labview und der damit verbundenen Entwicklungsbeschleunigung.

Auf einen Blick

In der klassischen Produktentwicklung mit Embedded-Systemen ist üblicherweise eigene Hardware mit spezifischen I/Os gefordert. Waren bislang die Programmiersprachen C und VHDL der Quasi-Standard, findet heute in der Branche ein interessanter Wandel statt. Der traditionelle Ansatz wird zunehmend hinterfragt, da sich die typischen Embedded-Systeme immer mehr hin zu verteilten, vernetzten und smarten Systemen entwickeln. Für diese zwangsläufig höhere Komplexität bedarf es neuer Denkweisen und Methoden. Dieser Artikel beschreibt eine Lösung, die die grafische Programmiersprache Labview mit RT-Linux und einen Dual-Core-ARM-Scheckkartenrechner mit FPGA kombiniert.

Entwicklung beschleunigen

Je nach Aufgabenstellung oder Präferenz des Entwicklers lassen sich unterschiedliche Programmiermodelle anwenden. So ist es beispielsweise möglich, Regeltechnik in Matlab-Notation umzusetzen und auszuführen. Dieses lässt sich ebenso in das grafische Labview-Blockdiagramm einfügen wie Differenzialgleichungen, die mit Model-Based-Design entworfen wurden. Statecharts vereinfachen komplizierte Ablauflogik und eine C-Code-Schnittstelle ermöglicht das Einbinden bestehender C-Algorithmen oder den direkten Zugriff auf das Linux-Betriebssystem. Weitere umfangreiche Unterstützung wie Bibliotheken für Mathematik und Signalverarbeitung, Toolkits (unter anderem Filter, Regler, Sound & Vibration, Vision, Motion und mehr) sowie Echtzeitsynchronisierung dezentraler Systeme bis zu modernen Bedienstrategien (Smartphones, Tablets) und Datenkommunikation (Cloud, Realtime Ethernet) können Labview-Programmierer ohne zeitaufwendige Entwicklung sofort nutzen. Zudem werden Timing, Betriebssystem, Multitasking, Multicore und unterlegte Hardware komfortabel abstrahiert. Die Labview-Anwendung lässt sich damit ohne Detailkenntnisse per Knopfdruck auf die eigene Embedded-Hardware laden und dort in Echtzeit ausführen.

Bild 2: Das SoM wird auf ein Baseboard mit individuellem Formfaktor und kundenspezifischen Hardwarebausteinen gesteckt.

Bild 2: Das SoM wird auf ein Baseboard mit individuellem Formfaktor und kundenspezifischen Hardwarebausteinen gesteckt.Schmid Elektronik

Flexibilität und Sicherheit von RT-Linux

Dank des weit verbreiteten Betriebssystems RT-Linux und des zugehörigen Ökosystems eröffnen sich der Labview-Entwickler-Gemeinde neue Möglichkeiten. Installiert ist die für den Embedded-Bereich optimierte Ångström-Distribution mit einem Repository auf den Servern von NI. Das Labview-Diagramm wird entsprechend dem Posix-Standard 1:1 auf das Linux-Betriebssystem abgebildet. Dort lässt sich das Linux-Ökosystem nutzen, etwa zum Laden von SQL-Datenbank, Apache-Webserver oder QT-GUI mit dem Package-Manager „opkg“. Mit der Busybox steht ein Tool für typische Embedded-Aufgaben zur Verfügung, von Filesystemzugriffen, Abholen der Systemzeit und kleinem DHCP-Client bis zum Sleepmodus und Systemreboot. Labview erhält direkten Zugriff auf die Linux-„command-line“, womit sich direkt Systembefehle ausführen und so Filesystem- und Userberechtigungen live steuern lassen. Mit Technologien wie Python stehen zudem mächtige Scriptsprachen zur Verfügung. Weiterhin kann Labview mit TCP/IP über „localhost“ die Dienste weiterer Linux-Prozesse, sogenannter Deamons, anzapfen. Auch besteht seit jeher die Möglichkeit, über das native C-API (Application Programming Interface) von Labview auf die Bibliotheken des Linux-Betriebssystems zuzugreifen. Darüber hinaus haben versierte Linux-User die Möglichkeit, den Kernel individuell zu konfigurieren und neu zu kompilieren.

Bild 3: Mit der SSH (Secure Shell) lässt sich RT-Linux auf ARM verwalten
und die verschiedenen Command-Line-Dienste können genutzt werden.

Bild 3: Mit der SSH (Secure Shell) lässt sich RT-Linux auf ARM verwalten
und die verschiedenen Command-Line-Dienste können genutzt werden.Schmmid Elektronik

Als Bootloader dient das nicht nur bei Embedded-Linux-Anwendungen weit verbreitete U-boot. Der Start und das Initialisieren des Kernels folgt dem System-V-Schema, bei dem Prozesse benutzerspezifisch gestartet werden können. Über eine der Shells lässt sich das System mit externem Terminal wie PuTTY einfach verwalten (Bild 3). Noch einfacher geht es mit einem webbasierenden, grafischen Konfigurationstool. Daten werden anstelle von FTP über WebDAV ausgetauscht, einem ebenfalls von Dropbox genutzten Industriestandard für die sichere Datenübertragung auf HTTP-Basis.

Timing in verteilten Netzwerken

Vor allem im Netzwerk smarter Embedded-Systeme ist Timing die größte Herausforderung. Timing ist bei Labview integraler Bestandteil der Sprache. Grafische Multitaskingprogrammierung setzt jedoch Betriebssystemfunktionen wie Scheduling voraus. Hier stehen sechs Schemata zur Verfügung. Mit „cron“ lassen sich bis [min]-Auflösung repetitive Tasks ausführen, zum Beispiel das Löschen von Logfiles oder regelmäßige Email-Checks. Der CFS (Completely Fair Scheduler) dient vor allem dazu, zeitunkritische, aber trotzdem effiziente Work-Tasks zu integrieren. Werden Antwortzeiten in Millisekunden benötigt, kann der Kernel entsprechend „preemtive“ konfiguriert werden. Durch den Multicore-Support von Labview lassen sich grafische Tasks direkt einem Prozessorkern zuordnen. Bei zeitkritischen Tasks mit gefordertem Jitter zwischen 10 und 100 µs wird der Linux-Kernel mit PREEMPT_RT gepatched. Für harte Echtzeit im einstelligen Mikro- oder Nanosekundenbereich kommt der FPGA zum Einsatz, entweder über das variablenorientierte Labview-Interface oder über ein C-API.

FPGA mit der Maus programmieren

Bild 4: Die echte Parallelität der FPGA-Programmierung kommt dem
Datenflussparadigma von Labview am nächsten.

Bild 4: Die echte Parallelität der FPGA-Programmierung kommt dem
Datenflussparadigma von Labview am nächsten. Schmid Elektronik

Der Artix-7-FPGA ist eine softwarerekonfigurierbare, parallel arbeitende Hardware. An ihn werden zeitkritische Aufgaben und I/Os delegiert, um den ARM-Prozessor zu entlasten. Entscheidende Eckdaten sind dabei die realisierbare Funktionalität und deren Timing. Bislang waren Spezialisten nötig, um FPGAs zu programmieren. Mit Labview erhalten auch Ingenieure ohne diese Erfahrung Zugang zur mächtigen Technologie rekonfigurierbarer Logik (Bild 4). Über intuitive Funktionsblöcke lässt sich ein breites Spektrum analoger, digitaler und serieller Prozesssignale einbinden, verknüpfen und parallel vorverarbeiten, bevor sie in den ARM weitergeleitet werden. Die Funktionalität der abzubildenden Anwendung ist direkt begrenzt durch die zur Verfügung stehende Anzahl Gatter. Bekannte Kennwerte, welche Operation (Addition, Filter, FFT) wie viele Gatter benötigt, liefern deshalb wertvolle Entscheidungsgrundlagen für den maximal möglichen Funktionsumfang. Beim Timing denkt auch der grafisch orientierte Anwendungsprogrammierer in Ticks, dem kleinsten FPGA-Zeitinkrement in der Größenordnung von Nanosekunden. Dabei ist definiert, wie viel Zeit die logischen und mathematischen Operationen und I/O-Zugriffe benötigen. Das ergibt Richtwerte für das System-Timing.

Beim Softwaredesign gilt es, die Embedded-Anwendung sorgfältig auf ARM und FPGA aufzuteilen. ARM ist verantwortlich für die Highlevel-Hauptfunktionen. Lowlevel-Details wie Gerätetreiber, zeitkritischer Code, digitale Filter, kombinatorische und sequenzielle Logik, Skalierungen, Fixed-Point- und Integer-Arithmetik werden besser auf den FPGA ausgelagert. Das NI-Labview-FPGA-Diagramm wird schlußendlich in VHDL-Code synthetisiert, mit den FPGA-Tools in eine Firmware/Bitfile kompiliert und in den FPGA geladen.

Meine eigene Labview-Hardware

Nahezu jeder am Markt verfügbare I/O-Baustein lässt sich an das SoM anbinden und mit Labview ansteuern, zum Beispiel über digitale I/Os, synchrone (SPI, I²C) und asynchrone (UART) serielle Schnittstellen oder parallele Highspeed-Bussysteme. Typische Beispiele sind Analog-I/O, PWM, Counter, Encoder und Digital-I/O, Wireless/WLAN, RFID, GSM/GPRS, GPS, Zigbee und Color-TFTs mit CAP-/Multitouch. Vorteil dabei ist, dass sich die Hardware in Form und Funktion an jede beliebige Aufgabenstellung anpassen lässt. Diese Flexibilität hat jedoch auch ihren Preis. Beim Zweiplatinenansatz ist zuerst immer Hardware in Form eines Baseboards zu entwickeln. Die kritischsten Schaltungen rund um CPU und Memory sind zwar auf dem eingesteckten SoM bereits realisiert. Trotzdem kann beim Baseboard je nach Anforderung und auch infolge des dicht gepackten BGA-Steckers fortgeschrittenes Entwicklerwissen gefragt sein, das üblicherweise zehn Schritte durchläuft:

  • Analysieren der Anforderung und Evaluieren der I/O-Bausteine, zum Beispiel AD-Wandler;
  • Datenblätter studieren (Betriebs- und Grenzwerte, Timings) und Schemasymbole erstellen;
  • das Schema anhand des Bausteindatenblattes und der Application Notes entwickeln;
  • eine Material- und Stückliste als Input für Einkauf und Produktion generieren;
  • Baustein-Footprint gemäß Produktionsvorgaben wie etwa IPC-Normen erstellen;
  • Boardgeometrie erstellen, Stecker und Montagebohrungen platzieren;
  • Ground- und Speisungskonzept im Zusammenhang mit Multilayerstruktur festlegen;
  • Komponenten innerhalb der Boardgeometrie platzieren;
  • Verbindungen routen, Ground/Power-Flächen füllen, Signalintegrität prüfen;
  • Produktionsdaten wie Gerberfiles, Pick-&-place-Daten oder Schablonendaten erstellen.

Bild 5: NI-Allianzpartner mit Zertifikat in Industrie-Elektronik-Design entwickeln (links)
und produzieren (rechts) kundenspezifische Baseboards, auf denen Kunden wiederum
die Embedded-Anwendung entwickeln .

Bild 5: NI-Allianzpartner mit Zertifikat in Industrie-Elektronik-Design entwickeln (links)
und produzieren (rechts) kundenspezifische Baseboards, auf denen Kunden wiederum
die Embedded-Anwendung entwickeln .Schmid Elektronik

Der 320-polige Searay-Stecker zwischen SoM und Baseboard ist ein BGA (Ball Grid Array) und setzt ein Multilayer-PCB voraus. Deshalb erfolgt die Produktion vorteilhaft bei einem EMS mit professionell eingerichtetem Hightech-SMT-Maschinenpark.

Zertifizierter Entwicklungs- und Produktionsservice

Falls die professionelle EDA-Infrastruktur, das nötige Hardware-Knowhow oder die Zeit fehlen, bieten NI-Allianzpartner mit dem Electronic-Design-Specialty-Zertifikat wie Schmid Elektronik entsprechende Dienstleistungen an. Schmid arbeitet schon seit Jahren mit NI R&D in Austin, Texas/US, direkt zusammen und bietet Gesamtlösungen mit Labview, Betriebssystem und Hardware. Letztere umfasst einen schnellen Entwicklungs- und Produktionsservice für individuelle Baseboards mit kundenspezifischer, industrieller Elektronik bis hin zur Komplett-Hardware (Bild 5). Dazu steht ein Hightech-Maschinenpark für Prototyping und Serienfertigung (ISO9001:2008) mit Test- und EMV-Labor sowie mechanischer Konstruktion bereit. Softwareseitig gehören Anpassungen des Linux-Kernels ebenso dazu wie das Entwickeln individueller Gerätetreiber mit Eclipse und deren Einbinden in die Labview-Umgebung. Alles zusammen also ein komfortabler One-stop-Shop mit Embedded-Plattformen auf dem neusten Stand der Technik.

Individuelle Hardwaretreiber mit Eclipse

Bild 6: Labview führt über die Command-Line-VI (Virtuelles Instrument, links)
ein Linux Executable aus, das in Eclipse kompiliert worden ist (rechts).

Bild 6: Labview führt über die Command-Line-VI (Virtuelles Instrument, links)
ein Linux Executable aus, das in Eclipse kompiliert worden ist (rechts).Schmid Elektronik

Die externen I/O-Bausteine wollen in der Labview-Applikation über intuitive virtuelle Instrumente (VIs) angesprochen werden. Dazu braucht es Lowlevel-Treiber. Sind die Bausteine an den 160 FPGA-Pins angeschlossen, lassen sich die Treiber ähnlich implementieren wie bei einem Singleboard-RIO oder Compact-RIO. Sind sie direkt mit dem ARM-Prozessor verbunden und fehlt im BSP der Treiber (Board Support Package), so gibt es unter RT-Linux drei Möglichkeiten. Liegt der Treiber als Executable vor, lässt er sich aus Labview direkt über das Command-line-VI ausführen. Labview ist in diesem Fall bei Linux als „lvuser“ angemeldet. Andernfalls wird das Executable mit der Eclipse-IDE erstellt (Bild 6 rechts) und ausgeführt (Bild 6 links). Voraussetzung dazu ist das Vorliegen des Treibers als C/C++-Sourcecode. Die erreichbaren Antwortzeiten liegen infolge des Zugriffs über das Betriebssystem im zweistelligen Millisekundenbereich. Schließlich kann mit Eclipse eine Bibliothek (Shared Object) erzeugt und von Labview aus über das C-API angesprochen werden (Bild 7), ähnlich wie eine DLL unter Windows. Dank des Direktzugriffs auf die C-Bibliothek sind Timings im zweistelligen Mikrosekundenbereich möglich.

Smarte Werkzeuge erleichtern die Produktion

Bild 7: Labview greift über sein C-API (links) auf eine in Eclipse generierte Linux-Bibliothek zu (*.so = Shared Object, rechts).

Bild 7: Labview greift über sein C-API (links) auf eine in Eclipse generierte Linux-Bibliothek zu (*.so = Shared Object, rechts).Schmid Elektronik

Der Flugzeughersteller Airbus nutzt das RIO-SoM von NI in seinem Forschungsprojekt „Factory of the Future“ als Prototyping-Plattform für intelligente Werkzeuge. Die Herstellung eines Flugzeugs erfordert zehntausende präziser Arbeitsschritte und Fehler haben hohe Kosten zur Folge. Intelligente Werkzeuge sollen Techniker wirksam unterstützen und die Produktion stark vereinfachen. Man denke etwa an einen elektronischen Schraubenzieher, der dank integriertem Visionsystem genau „weiß“, welche Schraube der Techniker anziehen will, und das Drehmoment entsprechend anpasst. Ein weiteres Beispiel ist die intelligente Bohrmaschine, die sich an das Material des Werkstücks adaptiert. Handelt es sich um eine Sandwichkonstruktion, so passt sich die Drehzahl bei jeder Lage dem jeweiligen Material an. Die Bohrtiefe wird kontinuierlich überwacht und schließlich zusammen mit anderen Daten an den Server geschickt.