Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
XML-Struktur einer Firmware-Update-Definition
Bei manchen BiDiB-Knoten reicht die bisherige Aufteilung in eine Firmware- und EEPROM-Datei (000- bzw. 001.hex) wegen der vielfältigen Konfigurationsmöglichkeiten dieses Knotens nicht mehr aus. Zusätzlich wird noch zwischen Installation und Update unterschieden.
Aus diesem Grunde wurde für das fehlerfreie Aufspielen der Firmware auf einen BiDiB-Knoten eine Beschreibung erdacht. Mit ihrer Hilfe können Konfigurationsprogramme wie BiDiB-Monitor und BiDiB-Wizard passende Auswahlmenüs bereitstellen. Dadurch kann ein Anwender verschiedene Vorgänge, wie Neuinstallation oder Firmware-Update, komfortable und vor Allem verwechslungsfrei durchführen.
Das nachfolgende Beispiel zeigt die XML-Struktur welche vom Wizard ausgewertet werden kann. Das XML-File hat gemäss Konvention den Namen firmware.xml und wird im Zip-File neben den Hex-Files gespeichert.
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="firmware_de.xsl"?> <Firmware xsi:schemaLocation="http://www.bidib.org/schema/firmware firmware.xsd" xmlns:firmware="http://www.bidib.org/schema/firmware" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.bidib.org/schema/firmware"> <!-- Version --> <Version Version="0.1" Lastupdate="20140411" Author="BiDiB.org" Pid="201" Vendor="013" Description="Firmware Definition for StepControl !!!Minimum-Beispiel!!!"/> <!-- The firmware definition --> <FirmwareDefinition> <!-- Nodes are defined here ... --> </FirmwareDefinition>
Im <FirmwareDefinition>-Tag wird die Struktur der Firmware angegeben. Dabei werden unterschiedliche Node-Typen unterstützt:
- DeviceNode: Äusserer Node-Typ der die Firmware-Files eines Node zusammenfasst. Hier können VID und PID sowie ein Kommentar angegeben werden.
- FirmwareNode: Node-Typ der ein Firmware-File (hex) definiert. Hier muss die Destination des Hex-File, der Text sowie der Filename des HEX-File innerhalb des Archiv (Zip-File) angegeben werden.
- SimpleNode: Dieser Node-Typ kann verwendet werden um eine oder mehrere zusätzliche Abstraktions-Ebenen zu definieren.
Das nachfolgende Beispiel zeigt eine minimale Definition des <FirmwareDefinition>-Tag:
<FirmwareDefinition> <Node xsi:type="DeviceNode"> <Nodetext Lang="de-DE" Text="Beispiel Firmware"/> <Nodetext Lang="en-EN" Text="Sample Firmware"/> <Node xsi:type="FirmwareNode" DestinationNumber="0" > ... </Node> ... </Node> </FirmwareDefinition>
Mit dem Attribute „DestinationNumber“ wird der Zielspeicherbereich auf dem Knoten festgelegt ( 0 = Flash, 1 = EEPROM.). Details dazu sind auf bidib.org zu finden.
Es besteht auch die Möglichkeit eine CV-Defintions anzugeben, welche dann im firmware.zip mitgeliefert werden muss:
<FirmwareDefinition> <Node xsi:type="DeviceNode"> <Nodetext Lang="de-DE" Text="Beispiel Firmware"/> <Nodetext Lang="en-EN" Text="Sample Firmware"/> <Node xsi:type="FirmwareNode" DestinationNumber="0" > ... </Node> ... </Node> <CvFilename>BiDiBCV-13-xyz.xml</CvFilename> </FirmwareDefinition>
Ab dem Wizard-1.9 können CV-Dateien direkt in den Wizard importiert werden, falls sie in der FirmwareDefinition
hinterlegt sind.
Ab dem Wizard-1.9.1 werden die CV-Dateien mit der Version versehen importiert. Das nachfolgende Beispiel würde die CV-Datei BiDiBCV-13-201-0.1.xml
erzeugen:
<Version Version="0.1" Lastupdate="20140411" Author="BiDiB.org" Pid="201" Vendor="013" Description="Firmware Definition for StepControl !!!Minimum-Beispiel!!!"/> <FirmwareDefinition> <Node xsi:type="DeviceNode"> <Nodetext Lang="de-DE" Text="Beispiel Firmware"/> <Nodetext Lang="en-EN" Text="Sample Firmware"/> <Node xsi:type="FirmwareNode" DestinationNumber="0" > ... </Node> ... </Node> <CvFilename>BiDiBCV-13-201.xml</CvFilename> </FirmwareDefinition>
Darstellung im Wizard
Nach der Auswahl des Zip-File wird die Struktur im Wizard analysiert und in einem Tree angezeigt. Der Benutzer kann anschliessend die Firmware-Pakete auswählen welche übertragen werden sollen.
Im Experten-Modus hat der Anwender Zugriff auf die einzelnen Firmware-Files und kann dadurch einzelne Files übertragen.
Durch Klick auf den Starten-Button werden die selektierten Firmware-Files auf den Knoten übertragen.
Legacy-Support
Falls kein firmware.xml vorhanden ist, kann auch ein einzelnes Hex-File ausgewählt werden. Der Wizard versucht dann anhand bisheriger Konvention die Destination zu ermitteln (*.000.hex > Flash, *.001.hex > Eeprom) und erzeugt dynamisch ein entsprechendes firmware.xml welches für die Darstellung im Tree benutzt wird.
Fiktives Beispiel für die StepControl
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="firmware_de.xsl"?> <Firmware xsi:schemaLocation="http://www.bidib.org/schema/firmware firmware.xsd" xmlns:firmware="http://www.bidib.org/schema/firmware" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.bidib.org/schema/firmware"> <Version Version="0.1" Lastupdate="20140411" Author="BiDiB.org" Pid="201" Vendor="013" Description="Firmware Definition for StepControl !!!Minimum-Beispiel!!!"/> <FirmwareDefinition> <Node xsi:type="DeviceNode" VID="013" PID="201" > <Nodetext Lang="de-DE" Text="StepControl: Komplette Installation"/> <Nodetext Lang="en-EN" Text="StepControl: complete installation"/> <Node xsi:type="FirmwareNode" DestinationNumber="0" > <Nodetext Lang="de-DE" Text="StepControl Main Flash"/> <Nodetext Lang="en-EN" Text="StepControl Main Flash"/> <Filename>StepControl_v0.1.0.000.hex</Filename> </Node> <Node xsi:type="FirmwareNode" DestinationNumber="1" > <Nodetext Lang="de-DE" Text="StepControl Main Eeprom"/> <Nodetext Lang="en-EN" Text="StepControl Main Eeprom"/> <Filename>StepControl_v0.1.0.001.hex</Filename> </Node> <Node xsi:type="SimpleNode" > <Nodetext Lang="de-DE" Text="StepControl Bühne"/> <Nodetext Lang="en-EN" Text="StepControl Platform"/> <Node xsi:type="FirmwareNode" DestinationNumber="2" > <Nodetext Lang="de-DE" Text="StepControl Bühne Flash"/> <Nodetext Lang="en-EN" Text="StepControl Platform Flash"/> <Filename>StepControl_v0.1.0.002.hex</Filename> </Node> <Node xsi:type="FirmwareNode" DestinationNumber="3" > <Nodetext Lang="de-DE" Text="StepControl Bühne Eeprom"/> <Nodetext Lang="en-EN" Text="StepControl Platform Eeprom"/> <Filename>StepControl_v0.1.0.003.hex</Filename> </Node> <Node xsi:type="FirmwareNode" DestinationNumber="4" > <Nodetext Lang="de-DE" Text="StepControl Bühne Sounddatei 1"/> <Nodetext Lang="en-EN" Text="StepControl Platform Soundfile 1"/> <Filename>StepControl_v0.1.0.004.hex</Filename> </Node> </Node> </Node> <Node xsi:type="DeviceNode" VID="013" PID="201" > <Nodetext Lang="de-DE" Text="StepControl: Update Installation"/> <Nodetext Lang="en-EN" Text="StepControl: update installation"/> <Node xsi:type="FirmwareNode" DestinationNumber="0" > <Nodetext Lang="de-DE" Text="StepControl Main Flash nur Update"/> <Nodetext Lang="en-EN" Text="StepControl Main Flash Update Only"/> <Filename>StepControl_update_v0.1.0.000.hex</Filename> </Node> </Node> </FirmwareDefinition> </Firmware>