Latest revision |
Your text |
Line 1: |
Line 1: |
| + | Argon firmware file contains embedded software for [[Argon (servo drive)]]. Firmware file is generated by makefirmware utily. |
| ==File format byte by byte== | | ==File format byte by byte== |
− | All multibyte integers are stored LSB first.
| |
− | ==GDF version 300==
| |
| ===Header=== | | ===Header=== |
| IDString - 4 bytes, always="GDFW" | | IDString - 4 bytes, always="GDFW" |
| | | |
− | BLFileVersion - 2 bytes, value=300 | + | BLFileVersion - 2 bytes, current=300 |
| | | |
− | TargetDriveType - 2 bytes, Argon=4000, Ion=11000, Atomi=14000 | + | TargetDriveType - 2 bytes, Argon=4000, Ion=5000 |
| | | |
| HostFWbytes - 4 bytes, number of bytes for STM32 CPU | | HostFWbytes - 4 bytes, number of bytes for STM32 CPU |
| | | |
− | GCFWbytes - 4 bytes, number of bytes for GraniteCore CPU or 0xffffffff if not included | + | GCFWbytes - 4 bytes, number of bytes for GraniteCore CPU |
− | | + | |
| ===Data=== | | ===Data=== |
| Data of HostFW begins. Amount of bytes is HostFWbytes | | Data of HostFW begins. Amount of bytes is HostFWbytes |
| | | |
− | Data of GCFW begins. Amount of bytes is GCFWbytes | + | Data of GCW begins. Amount of bytes is GCFWbytes |
− | | + | |
| ===File checksum=== | | ===File checksum=== |
− | FileCksum - 4 bytes calculated from the current file. Simply sum of all unsigned bytes in file except CKSum itself | + | FileCksum - 4 bytes cacluated from the current file. Simply sum of all unsigned bytes in file except CKSum itself |
− | | + | |
− | | + | |
− | ==GDF version 400 - draft==
| + | |
− | ===Header===
| + | |
− | Version 400 described below:
| + | |
− | <pre>
| + | |
− | /* GDF version 400 format
| + | |
− | * ----------------------
| + | |
− | *
| + | |
− | * Note: GDF v400 is not limited to firmware files any more,"
| + | |
− | * it can be used as general purpose data container for up to 4GB data chunks.
| + | |
− | *
| + | |
− | * Binary file contents
| + | |
− | * --------------------
| + | |
− | *
| + | |
− | * bytes meaning:
| + | |
− | *
| + | |
− | * 4 ASCII string = "GDFW"
| + | |
− | * 2 GDF version = 400
| + | |
− | * 2 GDF backwards compatible version = 400
| + | |
− | * 4 File category = 100 for firmware files (value range <2^31 is reserved and managed by GD, range from 2^31 to 2^32-1 are free for use by anyone for any purpose)
| + | |
− | * 4 number of data chunks in file = N
| + | |
− | *
| + | |
− | * repeat N times:
| + | |
− | * 4 data chunk descriptive name string length in bytes = L
| + | |
− | * L data chunk descriptive name string in UTF8
| + | |
− | * 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
| + | |
− | * ----------------
| + | |
− | * 0=target device name, UTF8
| + | |
− | * 1=firmware name, UTF8
| + | |
− | * 2=firmware version string, UTF8
| + | |
− | * 3=remarks, UTF8
| + | |
− | * 4=manufacturer, UTF8
| + | |
− | * 5=copyright, UTF8
| + | |
− | * 6=license, UTF8
| + | |
− | * 7=disclaimer, UTF8
| + | |
− | * 8=circulation, UTF8 (i.e. customer name)
| + | |
− | * 20=unix timestamp divided by 4, S=4
| + | |
− | * 50=target device type ID range, S=8
| + | |
− | * first 4 bytes are lowest supported target device ID, i.e. 11000=IONI
| + | |
− | * second 4 bytes are highest supported target device ID's, i.e. 11200=IONI PRO HC
| + | |
− | * 100=main MCU FW binary, S=any
| + | |
− | * 101=main MCU FW unique identifier number (this value is also readable from target device over SM bus), S=4
| + | |
− | * 102=main MCU FW required HW feature bits, S=4
| + | |
− | * helps to determine whether FW works on target
| + | |
− | * device version when compared to a value readable from the device.
| + | |
− | * 0 means no requirements, works on all target ID devices.
| + | |
− | * 200=secondary MCU FW binary, S=any
| + | |
− | *
| + | |
− | * note: firmware may contain many combinations of above chunks. in basic case, it contains just chunk type 100 and nothing else.
| + | |
− | *
| + | |
− | * data chunk option bits
| + | |
− | * ----------------------
| + | |
− | * bit 0: if 1, GDF loading application must support/understand the chunk type to use this file
| + | |
− | * bits 1-31: reserved
| + | |
− | *
| + | |
− | */</pre>
| + | |
− | | + | |
− | For practical reading software implementation, see devicedeployment.c from SimpleMotion library.
| + | |
− | | + | |
− | [[Category:Development]]
| + | |
− | | + | |
− | [[Category:Development]]
| + | |