Posted on Leave a comment

netpp node ‘Dual’ Firmware

Die netpp-Firmware besteht aus einem binären Abbild im Konfigurations-Flash, welche die Funktionalität und Identität der auf dem netpp node programmierbaren Hardware definiert. Sie unterstützt von Haus aus die Möglichkeit, zwei Varianten einer Firmware und des zugehörigen Betriebssystems zu speichern. Die Möglichkeiten dieser doppelten Konfiguration sind im netpp node quick start (englisch) beschrieben und werden hier im Detail erläutert.

Wir verwenden im Folgenden die Begriffe ‘Slot’ (Steckplatz) für den Speicherplatz der Konfiguration.

Im Standard-Fall wird der netpp node mit einem Bootloader in Slot 0 beim Einstecken der Stromversorgung gestartet. Der Bootloader überprüft die im Flash gespeicherte Variable ‘SysCtrl.BootMode’, falls sie von 0 abweicht, wird das System neu gestartet und die Hardware/Software-Konfiguration aus Slot 1 geladen.

Durch eine ungünstige Konfiguration oder beim Ausprobieren neuer Firmware-Versionen kann u.U. das System nicht mehr zugänglich für eine Neukonfiguration sein. Deshalb lässt sich der netpp node wie folgt  in den Urzustand versetzen:

  1. SW2 drücken und halten
  2. SW1 kurz drücken, warten bis alle LEDs kurz aufleuchten
  3. SW2 loslassen

Im Urzustand gilt die netpp URL: UDP:192.168.0.5:2016

Wichtig: Der Urzustand sollte nicht im aktiven Fabrik-Netz bei mehreren nodes hergestellt werden, da sonst Adresskollisionen auftreten können.

Bootloader

Der Bootloader bietet minimale Funktionalität:

  • Programmierung der Netzwerkparameter
  • Flash-Zugriff zum Update der Firmware per Netzwerk

Normalerweise enthält auch die komplexere, kundenspezifische Firmware die Bootloader-Komponenten im ‘Service-Modus’, damit Neuprogrammierung aus dem laufenden Betrieb heraus erfolgen kann, ohne den Urzustand herstellen zu müssen.

Wird der Bootloader durch Überschreiben des entsprechenden Flash-Speichers beschädigt, startet das System nicht und besitzt keine Identität, über die es per Netzwerk angesprochen werden kann. Dann ist Neuprogrammierung über den Programmieradapter (bzw. eingebauten USB-Adapter, falls vorhanden) notwendig.

Szenarien

Prototyping-Modus

Bevor die Firmware in der Anlage final eingesetzt wird, empfiehlt es sich, SysCtrl.BootMode auf 0 zu lassen (Standard-Auslieferung), die zu testende Firmware in Slot 1 zu programmieren und explizit zu booten. Dies geschieht, indem die Property SysCtrl.Reboot auf ‘1’ gesetzt wird, z.B. per Kommandozeile:

netpp UDP:192.168.0.22:2016 SysCtrl.Reboot 1

Beim nächsten Reset oder Unterbruch der Stromversorgung startet das System wieder aus Slot 0.

Soll schliesslich das System automatisch in Slot 1 booten, sind die netpp-Properties wie folgt zu setzen:

SysCtrl.BootMode  1
SysCtrl.StoreNV   1

Wird anschliessend SysCtrl.Reboot auf 0 gesetzt (Slot 0), bootet das System zwar zunächst in Slot 0, lädt aber bei korrekter Firmware in Slot 1 diese nach.

Redundante Firmware

Sicherheitsrelevante Firmware benutzt u.U. einen Hardware-Watchdog, um bei einem Programmfehler oder unerlaubter Intrusion einen Neustart auszulösen. Dabei wird der Reset aus Slot 0 ausgeführt.

Da der Bootloader durch eigene, angepasste Firmware ersetzt werden kann, sind folgende Szenarien möglich:

  • Safety-Konfiguration: BootMode = 1
    • ‘Goldene’ Firmware in Slot 0: Bei einem Fehler wird auf diese Version ‘zurückgefallen’ (Fail-Safe)
    • ‘Aktive’ Firmware in Slot 1: Diese Version wird im laufenden Betrieb genutzt
  • Test-Konfiguration: BootMode = 0
    • ‘Aktive’, stabile Firmware in Slot 0
    • Test-Firmware (in Entwicklung) in Slot 1

Da die Konfigurationslogik aus der Bootloader-Routine angesprochen wird, kann sie durch den Benutzer modifiziert werden, so sind also eigene Konfigurationsoptionen möglich.

Es wird empfohlen, in der Entwicklungsphase die Bootloader-Default-Properties beizubehalten. So kann per SysCtrl.Reboot 0 oder 1 zwischen den Slots im laufenden Betrieb umgeschaltet werden.

Fehlerszenarien

  • Bei SysCtrl.BootMode 1 und aktivem Watchdog in Slot 1 können im Prinzip Endlos-Neustart-Schleifen auftreten. Diese können durch SW2 unterbrochen werden, d.h. das System startet dann mit Slot 0.
  • Wenn im Wartungs-Modus (ServiceMode.ChallengeResponse) die IP-Adresse verändert wird, kann u.U. beim Zusammenbrechen der Verbindung das Gerät aus Sicherheitsgründen nicht mehr ansprechbar sein. In diesem Fall ist ein Reset (SW1) notwendig.