3 Firmware Image Manipulation

There are five banks of image files composing the entire firmware. Inside each image file, there are many records indicating which type of hex record the records in the image file represent.

The following are the three types of hex records:
  • Bank start record
  • Data record or Firmware record
  • Bank end record
    Note: The firmware data resides in the data type record.

The file size of each bank of image files in the firmware is 64 Kbytes. Align the data record or the firmware record from the offset 0x0000 of the each bank in ascending order. There is no hole between the records.

Table 3-1. Hex Record Format

Start

Data Length

Starting Address

Category

Data

Checksum

End

Nibble#

0

1-2

3-6

7-8

9-N

N+1

N+2

Value

:

0xNN

0x0000 – 0xFFE0

0x04 – Start of bank

0x00 – Data

0x01 – End of bank

Data – up to 32 bytes

0xXX

‘\n’

In some exceptional cases, the offset does not always start from 0x0000, and there can be an empty hole between the data/firmware records. The following are the steps to generate one large .hex file where each data record or firmware record is placed in sequence using the isUpdate tool; see the following figure:
  1. Click Browse to select five bank files.
  2. Click Rehex to initiate the reHex process.
  3. The isUpdate tool converts five bank files into one large .hex file.
Fill each empty hole and each non-zero offset with an empty record of 0xFF so that the host MCU can download the firmware data in sequence from 0x0000 of bank0 to the end of bank4. At the same time, generate a binary file. In the BM78 Module DFU Demo with SAMG55 Xplained Pro Evaluation Kit, turn the binary file into a large constant C array, which is inside the Flash memory of the host MCU.
Figure 3-1. reHex Operation with isUpdate Tool