Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Allgemeine Info zu BiDiB:


Treiberinstallation:


Programme für BiDiB:


Das BiDiB-System:

One-Serie:

Addon-Module:

Beispielkonfigurationen:


Das OpenCarSystem:


Anwendungsunterstützung:


Kompatibilität:


Codehilfe für eigene BiDiBOne Entwicklungen:

wizard:firmware-update-definition

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>
wizard/firmware-update-definition.txt · Zuletzt geändert: 2016/12/31 16:47 von akuhtz