13.3.2.1 Firmware Image Format
The firmware image comes with a metadata header, metadata payload and metadata footer that gives the ROM firmware information about location of the firmware image, authentication information, sequence number and more. The user can only execute the application (firmware image) from embedded Flash.
The following table provides details about the contents of each firmware image.
Offset | Byte 0 | Byte 1 | Byte 2 | Byte 3 |
---|---|---|---|---|
0x00 | 0x00 | |||
0x04 | 0x00 | |||
0x08 | 0x00 | |||
0x0C | 0x00 | |||
0x10 | 0x00 | |||
0x14 | 0x00 | |||
0x18 | “MCHP” | |||
0x1C | 0x00 | |||
0x20 | 0xFFFF_FFFF/0x00(1) | |||
0x24 | 0xFFFF_FFFF/0x00(1) | |||
0x28 | 0xFFFF_FFFF/0x00(1) | |||
0x2C | 0xFFFF_FFFF/0x00(1) | |||
0x30 | 0xFFFF_FFFF/0x00(1) | |||
0x34 | 0xFFFF_FFFF/0x00(1) | |||
0x38 | 0xFFFF_FFFF/0x00(1) | |||
0x3C | SEQ_NUM | |||
0x40 | MD_REV (0x03) | CONT_IDX | MD_AUTH_MTHD | MD_AUTH_KEY |
0x44 | PL_DEC_MTHD | PL_DEC_KEY | PL_LEN | |
... | PAYLOAD... | |||
... | ... | |||
... | MD_SIG | |||
“MCHP” | The indicator that specifies this is a Microchip metadata | |||
MD_REV | Reversion of the metadata definition. This field is 0x03 indicating this is V3 | |||
CONT_IDX | Contain Indicator
| |||
MD_AUTH_MTHD | Metadata Authentication or Integrity Method:
| |||
MD_AUTH_KEY |
Metadata Authentication Key Index:
| |||
PL_DEC_MTHD |
Payload Decrypt Method:
Note: The current implementation always sets
PL_DEC_MTHD to 0. | |||
PL_DEC_KEY | Payload Decrypt Key Index:
| |||
PL_LEN | The Length of PAYLOAD:
| |||
PAYLOAD | Payload Data | |||
MD_SIG |
The signature of metadata authentication. The signature length is authentication method dependent. | |||
Note:
|
Embedded Flash Variant | ||
---|---|---|
Address | Size (bytes) | |
Image 0 metadata | 0x0080_0000 | 512 |
Image 0 | 0x0080_0200 | Max: 60928 |
Image 1 Metadata | 0x0080_8000 | 512 |
Image 1 | 0x0080_8200 | Max: 28160 |
Image 2 Metadata | 0x0100_0000 | 512 |
Image 2 | 0x0100_0200 | Max: 2096640 |
Image 3 Metadata | 0x0110_0000 | 512 |
Image 3 | 0x0110_0200 | Max: 1048064 |
Image 4 Metadata | NA | NA |
Image 4 | NA | NA |
Image 5 Metadata | NA | NA |
Image 5 | NA | NA |
Embedded Flash Variant | ||
---|---|---|
Address | Size (bytes) | |
Image 0 metadata | 0x0080_0000 | 512 |
Image 0 | 0x0080_0200 | Max: 60928 |
Image 1 Metadata | 0x0080_8000 | 512 |
Image 1 | 0x0080_8200 | Max: 28160 |
Image 2 Metadata | 0x0100_0000 | 512 |
Image 2 | 0x0100_0200 | Max: 1048064 |
Image 3 Metadata | 0x0108_0000 | 512 |
Image 3 | 0x0108_0200 | Max: 523776 |
Image 4 Metadata | NA | NA |
Image 4 | NA | NA |
Image 5 Metadata | NA | NA |
Image 5 | NA | NA |
For an embedded Flash-only device, the ROM firmware checks for a valid image in three memory locations, see Table 13-3.