Flash Layout for Off-Chip OAD

This section will describe the method for placing placing images in internal and external flash when using off-chip OAD.

Internal flash refers to the flash memory inside the CC26x2 and external flash refers to an external SPI flash memory connected to the CC26x2 via SPI.

See requirements below for off-chip OAD.

Constraints and Requirements for Off-chip OAD

In order to perform an Off-chip OAD the target system must have:

  • An off-chip flash storage as large as the application size + one external flash page to store the external flash image header. (default example will use 1MB of external flash)
  • A serial connection (SPI) is used to communicate with the off-chip flash component.
  • Free GPIO pins to interface to the external memory (i.e. 4 wires for SPI)
  • Enough free code space to reserve the entire contents of the last flash page for BIM

Internal Flash Memory Layout

The internal flash of the device contains the active user application and the BIM. Off-chip OAD maximizes the available flash space to the user application because of its ability to store the incoming image in external flash during the download process.

../_images/ditaa-79f2d4e740873e01c09453a347325174c81eb33d.png

The user application pictured above is responsible for the following:

  • Implementing the protocol stack specific implementation of the OAD transport
  • Finding a suitable location in external flash for the image and storing its image header in the table.

External Flash Memory Layout

The off-chip flash memory on the CC26x2 LaunchPad contains the image header vector table and the user applications. The memory map layout of the external flash part is defined in ext_flash_layout.h. The amount of space reserved for each application is dynamically sized by the user application’s implementation of the OAD protocol. The size of the image in external flash can be determined once the image header vector is sent over the air.

The application will round up as necessary according to the equation below:

\textrm{numExtFlashPages} = \frac{imageLen}{EFL\_PAGE\_SIZE} + imageLen \bmod EFL\_PAGE\_SIZE

The memory partition of the application for Off-chip OAD is depicted in below.

../_images/ditaa-08e0d57594b83cf772e0deaf78880c50cbfca769.png

The size of the image header table is scalable and can be changed in the user application implementation of the OAD protocol.

Each entry to the image header table contains a pointer to it’s associated image location in external flash as shown below.

Warning

The convention is that image header sector 0 is reserved for the Factory Image. This region should be reserved for known good images as the BIM will revert to the factory image if there are no acceptable images in internal or external flash (user section).