2nd-Stage-Bootloader & Bootstrap [DE]


Hintergrund

Grundsätzlich werden alle netX-basierten Feldbus-Geräte erst mit einer Firmware sowie einer Konfiguration in die Lage versetzt, einen bestimmten Protokoll-Stack auszuführen. Diese müssen über die Host-Schnittstelle (PCI; PCIe; SPI etc.) heruntergeladen werden. Sogenannte "RAM-based Devices" (CifX-Karten) verfügen über keinen persistenten Speicher für Firmware und Konfiguration und werden daher bei jedem Gerätestart vom Treiber mit beidem versorgt. Sie werden in diesem Fall direkt auf dem RAM des Geräts geladen und unmittelbar ausgeführt. Ein Spannungsabfall hat den Verlust von Firmware und Konfiguration im RAM zur Folge und die Prozedur muss von vorn begonnen werden.

Ob RAM- oder Flash-basierte Devices, in beiden Fällen übernimmt normalerweise der Geräte-Treiber die Aufgabe, die benötigen Dateien herunterzuladen. Zu diesem Zweck verfügt der Treiber über ein definiertes Grund-Verzeichnis, das bei der Installation des Treibers angelegt wird:

  • Windows: C:\Program Files\cifX Device Driver
  • Linux: /opt/cifx/

Der Treiber nimmt die Firmware- (.nxf) sowie Konfigurations- (.nxd) Datei aus diesem Verzeichnis, um sie auf das Gerät zu laden. Bei Flash-basierten Geräten findet ein Download nur statt, wenn eine Differenz zwischen den Software-Ständen festgestellt wird.

2nd-Stage-Bootloader

Befindet sich ein Gerät im Auslieferungszustand, stellt dieses ein vereinfachtes DPM-Interface zur Verfügung (vgl. folgende Abbildung). Die Größe des DPM ist auf 64KByte (16KByte / 8KByte) begrenzt und ermöglicht so keinen Download einer Firmware-Datei. Daher muss das Gerät zunächst mit einem sogenannten 2nd-Stage-Bootload versorgt werden.



Der 2nd-Stage-Bootloader kann in Form einer Datei an das Gerät übertragen werden. Die verschiedenen Dateien, für verschiedene Gerätetypen, befinden sich im oben genannten Grund-Verzeichnis des Treibers. Die 2nd-Stage-Bootloader verbergen sich in den NETX***-BSL.BIN-Dateien. Beispielsweise wird für eine CifX-Karte die NETX100-BSL.BIN-Datei benötigt.

Firmware download

Wurde der 2nd-Stage-Bootloader erfolgreich hochgeladen und gestartet, wird der DPM neu organisiert und eine vereinfachte System-Mailbox bereitgestellt, vergleichbar mit der bekannten Channel-Mailbox. Die Mailbox ermöglicht nun das segmentierte Übertragen größerer Dateien wie der Firmware-Datei.



Grundsätzlich besteht auch die Möglichkeit, sich dieses Vorgehen im cifX/netX-Toolkit in Form von Quellcode anzusehen. Im Toolkit sind die Methoden der Treiber implementiert. Dies dient dem Kunden dazu eigene Treiber, ggf. für nicht unterstützte Betriebssysteme oder Plattformen, zu implementieren. Konkret ist hier die cifXInit.c interessant. Die Datei beinhaltet die cifXStartBootloader_hboot(…)-Funktion. Sie implementiert das oben geschilderte Vorgehen.

cifX/netX-Tookit: https://hilscher.atlassian.net/wiki/pages/viewpage.action?pageId=80904557


File Handling

Innerhalb des Basis-Verzeichnisses (siehe oben) wird für jedes Gerät, das im PC installiert ist, ein Ordner nach folgendem Schema angelegt.

Hinweis: Für die normale Feldbus-Kommunikation wird grundsätzlich Channel0 verwendet. Channel1 kann für einen Multichannel Betrieb oder Spezial-Anwendungen herangezogen werden. Erstere erfordert ein Endgerät mit entsprechender Hardware-Ausstattung.

Durch das Ersetzen der Dateien lassen sich die Firmware bzw. die Konfiguration austauschen. Beim Austauschen ist unbedingt darauf zu achten, dass die Konfiguration zur Firmware passt. Außerdem muss die Konfigurations-Datei grundsätzlich „config.nxd“ benannt werden.

Nach dem Austausch einer Datei ist ein Neustart der Karte erforderlich. Dies kann über die xSysdeviceReset()-Funktion der Cifx-API durchgeführt werden.