netpp

Fernkontrolle leichtgemacht

netpp (network property protocol) vereinfacht die Entwicklung von Fernsteuerungen und Protokollen signifikant. Ursprünglich als Abstraktionsschicht für Register-basierte Protokolle eingeführt, stellt es heutzutage eine Softwarebibliothek dar, die rapide und dennoch robuste Entwicklung von Gerätesteuerungen fördert. Dies geschieht mit Hilfe einer XML Geräte-Beschreibungs-Sprache, die erlaubt, Register-Anordnungen und generische Geräteeigenschaften wie auch Betriebsarten schematisch (mit Hilfe eines Editors) zu beschreiben.

Diese Beschreibung wird direkt in kompakten Quellcode übersetzt und für das Endgerät kompiliert.

Die Parameter (Register-Bits oder Kommandos) des Endgeräts werden als sog. „Properties“ (Eigenschaften) abstrahiert, indem per XML eine Zuordnung erfolgt, z.B. das Property „Temperatur“ wird einem i2c-Backend mit einer zugehörigen Adressbeschreibung zugeordnet.

Funktional wird so die Temperatur des Geräts z.B. wie folgt abgerufen:

t = outdoor.Temperature.get()

Unter einer Vielzahl von ähnlichen RPC-Ansätzen (JSON, GenIcam, EDDL, …) hebt sich netpp insofern hervor:

  • Typensicheres Binärprotokoll, Endian-Safe, Thread-Safe
  • Zero-Copy für Binärbuffer (Bildübertragung)
  • Universell, atomar und leichtgewichtig

XML-Bearbeitung

XML Mind editor snapshot

Für die Bearbeitung der Gerätebeschreibung sind Style-Sheets bereitgestellt, die mit dem empfohlenen Editor XML Mind XML Editor (XXE) schematisch wie oben dargestellt zusammenarbeiten. Per XSD-Schema erfolgt eine Verifikation auf Gültigkeit.

Workflow

  1. Definiere die Funktionalität („Properties“)
  2. Schreibe Handler-Code (getter/setter)
  3. Rufe „make“ auf
  4. Teste und iteriere von (1)
  5. Generiere Dokumentation und Referenz

Mit integrierten Mechanismen zur Revisionskontrolle bleiben Software, Hardware und Dokumentation in Synchronisation. Keine Fehlinformationen mehr zwischen Entwicklerteams!

Referenzanwendungen

  • Ausstattung diverser Geräteklassen mit einer uniformen Firmware und Fernsteuerungssoftware
  • Hardware-Definition von ASIC/FPGA Registern und C-Treibersource
  • Hardware-Co-Simulation (model in the loop)
  • Smart Sensors (IoT), netpp on FPGA

Industrielle Kundenprojekte

  • Medizinische Diagnostik: Bildübertragung
  • Firmwareprogrammierung in Fertigungstaktstrasse
  • Smart Sensorik: Vernetzte Schwarmintelligenz zur Powergrid-Optimierung
  • Testbench-Systeme zur Prozessüberwachung mit hunderten Teilnehmern mit Labview-Interfacing

Details

Der netpp-Stack ist äusserst kompakt. Neben Startup-Code (crt0.o) und HW-Treibern benötigen Sie kaum mehr Programmlogik für ein Bare-Metal-Betriebssystem — die Hauptschleife ist bereits als Task-Handler konzipiert.

Beispiele für die Dichte-optimierte (‚-Os‘) Slave-library:

Architecture Size
avr8 24kB
ARM v5 thumb 22kB
ZPU (FPGA SoC) 19kB
msp430 17kB

Anwendungsszenarien und Optionen

  • Verwendung einer Kommunikations-DLL und eigenes GUI-Kontrolltool
  • Ansteuerung per Python, Java, Labview-VI
  • Automatisierte Generierung eines Web-Interface (Javascript, FCGI/WSGI), REST-API interface

Dokumentations-Resourcen (englisch)