Zeit als neue Währung


Mit C-Code-Generator auf eigene Hardware

In der Embedded-Welt der Mikrocontroller und DSPs ist die Sprache ‚C‘ heute der Quasi-Standard. Genau hier setzt National Instruments‘ ANSI-C-Code-Generator an. Er übersetzt ein grafisches LabView-Diagramm/-Blockschaltbild inklusive Mathematik- und Signalverarbeitungs-VIs in neutralen ANSI-C-Code für 32-Bit-Mikrocontroller. Schmid Elektronik kombiniert diese Technologie mit der Funktionalität der Single-Board-Computer im Hutschienen- und PC104-Format sowie Briefmarken-Coremodulen und Scheckkarten-COMs (Bild1, links). Der so erzeugte Embedded-Applikations-C-Code wird mit dem Quellcode eines schlanken µ-Kernels verlinkt, mit den gängigen Tools (Compiler, Linker, Loader) in eine echtzeitfähige Standalone-Firmware gebaut und als Loaderfile ins Flashmemory der Zielhardware geladen. Von dort bootet die Anwendung direkt in weniger als einer Sekunde, geht in einen zuverlässigen 24/7-Echtzeit-Betrieb über und ist gegen Einflüsse von außen weitgehend unempfindlich.

Flexibel und netzwerkfähig durch Echtzeit-Linux

Das NI System-On-Module und die NI Single-Board-Computers werden durch Echtzeit-Linux betrieben. Durch dessen Beliebtheit und weltweiter Verbreitung sowie dazugehörigem Ökosystem eröffnen sich speziell für vernetzte, smarte Embedded Systems neue Möglichkeiten. Installiert ist die für den Embedded-Bereich verbesserte ? ngström-Distribution mit einem Repository auf den Servern von NI. Das LabView-Diagramm wird nach dem ‚POSIX‘-Standard 1:1 auf das Linux-Betriebssystem abgebildet. Dort lässt sich mit dem Package-Manager ‚opkg‘ die ‚Spielwiese‘ des Linux-Ökosystems nutzen, ob SQL-Datenbank, Apache-Webserver oder QT-GUI. Als Bootloader dient (Das) ‚U-boot‘. Weitere Merkmale von Echtzeit-Linux sind: 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 User-Berechtigungen live steuern lassen. Mit Technologien wie ‚Python‘ stehen mächtige Scriptsprachen zur Verfügung. LabView kann mit TCP/IP über ‚localhost‘ die Dienste weiterer Linux-Prozesse (Deamons) anzapfen. Über das native ‚C-API‘ von LabView kann auf Bibliotheken des Linux-Betriebssystems zugegriffen werden. Der versierte Linux-User kann den Linux-Kernel jederzeit individuell konfigurieren und neu kompilieren. Bei smarten und vernetzten Embedded Systems ist Timing die Herausforderung Nr.1. Hier unterstützt Linux als LabView-Betriebssystem mit sechs nützlichen Schemas. Mit ‚cron‘ lassen sich bis [min]-Auflösung repetitive Tasks wie das Löschen von Logfiles ausführen. Der ‚CFS‘ (Completely Fair Scheduler) dient vor allem zum Implementieren nicht-zeitkritischer, aber trotzdem effizienter ‚Work-Tasks‘. Werden Antwortzeiten in [ms] benötigt, wird der Kernel ‚preemtive‘ konfiguriert. Dank Multicore-Support von LabView lassen sich grafische ‚Tasks‘ direkt einem Prozessorkern zuordnen. Bei zeitkritischen Tasks mit gefordertem Jitter zwischen 10…100µs kommt der ‚PREEMPT_RT‘-Patch ins Spiel. Harte Echtzeit im einstelligen [µs]- oder sogar [ns]-Bereich wird durch den FPGA garantiert.

Messnetzwerk im Hochgeschwindigkeitszug

Bei der flächendeckenden Messintelligenz im Hochgeschwindigkeitszug aus Teil 1 dieses Beitrags wurde nach dem Prototyping mit einem Single-Board RIO das System-On-Module sbRIO-9651 von National Instruments als CAN-Master gewählt. Ein zentraler Grund neben der geforderten, hohen Rechenleistung war vor allem die flexible und sichere Netzwerkfähigkeit zum Leitrechner dank Linux. Über einfache CAN-Befehle steuert der Master zukünftig bis zu 256 Knoten. Diese sind je nach Typ und Aufgabe entweder als Briefmarkenrechner auf Baseboard oder Kompletthardware ausgeführt. Ein Netzwerk mit 32 Knoten wurde bereits erfolgreich im Feld getestet.

Seiten: 1 2 3 4Auf einer Seite lesen

Schmid Elektronik AG
www.schmid-elektronik.ch

Das könnte Sie auch Interessieren