Difference between revisions of "Firmware file format (.gdf)"

From Granite Devices Knowledge Wiki
Jump to: navigation, search
[checked revision][checked revision]
(GDF version 310 - draft)
Line 22: Line 22:
  
  
==GDF version 310 - draft==
+
==GDF version 400 - draft==
 
===Header===
 
===Header===
IDString - 4 bytes, always="GDFW"
+
Version 400 described below:
 +
<pre>
 +
        /* GDF version 400 format
 +
        * ----------------------
 +
        *
 +
        * Binary file contents
 +
        * --------------------
 +
        *
 +
        * bytes meaning:
 +
        *
 +
        * 4 ASCII string = "GDFW"
 +
        * 2 version = 400
 +
        * 2 backwards compatible version = 400
 +
        * 4 target device type ID
 +
        * 4 number of data chunks in file = N
 +
        *
 +
        * repeat N times:
 +
        * 4 data chunk type
 +
        * 4 data chunk option bits
 +
        * 4 data chunk size in bytes=S
 +
        * S data
 +
        * end of repeat
 +
        *
 +
        * 4 file's CRC-32
 +
        *
 +
        * data chunk types
 +
        * ----------------
 +
        * 100=main MCU FW binary, S=any
 +
        * 101=main MCU FW unique identifier number, S=4
 +
        * 200=secondary MCU FW binary, S=any
 +
        *
 +
        * data chunk option bits
 +
        * ----------------------
 +
        * bit 0: if 1, GDF loading application must support/understand the chunk type to use this file
 +
        *
 +
        */
 +
</pre>
  
BLFileVersion - 2 bytes, value=310
+
For practical reading software implementation, see devicedeployment.c from SimpleMotion library.
 
+
TargetDriveType - 2 bytes, Argon=4000, Ion=11000, Atomi=14000
+
 
+
HostFWbytes - 4 bytes, number of bytes for STM32 CPU
+
 
+
GCFWbytes - 4 bytes, number of bytes for GraniteCore CPU or 0xffffffff if not included
+
 
+
BLBackwardsCompatibilityVersion - 2 bytes. Value indicates if file is backwards comaptible with older versions (i.e. BLFileVersion may be >310 but if BLBackwardsCompatibilityVersion==310, then software supporting only up to 310 will be able to use this file)
+
 
+
AdditionalHeaderVariabalesAmount - 4 bytes, number of following structures in the header
+
 
+
''Following items are optional - following ValueID & Value pairs repeats AdditionalHeaderVariabalesAmount  times''
+
 
+
ValueID - 2 bytes, specifies type of data
+
 
+
Value - 4 bytes
+
 
+
''List of currently supported ValueIDs''
+
* ValueID=100: Value contains unique binary file ID used by SimpleMotion deployment tool API
+
 
+
===Data===
+
Data of HostFW begins. Amount of bytes is HostFWbytes
+
 
+
Data of GCFW begins. Amount of bytes is GCFWbytes
+
 
+
===File checksum===
+
FileCksum - 4 bytes calculated from the current file. Simply sum of all unsigned bytes in file except CKSum itself
+
  
 
[[Category:Development]]
 
[[Category:Development]]
  
 
[[Category:Development]]
 
[[Category:Development]]

Revision as of 13:24, 9 October 2018

File format byte by byte

All multibyte integers are stored LSB first.

GDF version 300

Header

IDString - 4 bytes, always="GDFW"

BLFileVersion - 2 bytes, value=300

TargetDriveType - 2 bytes, Argon=4000, Ion=11000, Atomi=14000

HostFWbytes - 4 bytes, number of bytes for STM32 CPU

GCFWbytes - 4 bytes, number of bytes for GraniteCore CPU or 0xffffffff if not included

Data

Data of HostFW begins. Amount of bytes is HostFWbytes

Data of GCFW begins. Amount of bytes is GCFWbytes

File checksum

FileCksum - 4 bytes calculated from the current file. Simply sum of all unsigned bytes in file except CKSum itself


GDF version 400 - draft

Header

Version 400 described below:

        /* GDF version 400 format
         * ----------------------
         *
         * Binary file contents
         * --------------------
         *
         * bytes  meaning:
         *
         * 4	ASCII string = "GDFW"
         * 2	version = 400
         * 2	backwards compatible version = 400
         * 4	target device type ID
         * 4	number of data chunks in file = N
         *
         * repeat N times:
         * 4	data chunk type
         * 4	data chunk option bits
         * 4	data chunk size in bytes=S
         * S	data
         * end of repeat
         *
         * 4	file's CRC-32
         *
         * data chunk types
         * ----------------
         * 100=main MCU FW binary, S=any
         * 101=main MCU FW unique identifier number, S=4
         * 200=secondary MCU FW binary, S=any
         *
         * data chunk option bits
         * ----------------------
         * bit 0: if 1, GDF loading application must support/understand the chunk type to use this file
         *
         */

For practical reading software implementation, see devicedeployment.c from SimpleMotion library.