OAD Image Header

Structure definition for image header and segments, these are prepended to the over the air images.

Defines

OAD_IMG_TYPE_PERSISTENT_APP

OAD on-chip persistent application image

The persistent app is the permanently resident app used in on-chip OAD The persistent app is responsible for updating the user application

OAD_IMG_TYPE_APP

OAD user application image

A user application of split app/stack type

OAD_IMG_TYPE_STACK

OAD stack image

An OAD enabled stack image of split image type

OAD_IMG_TYPE_APP_STACK

OAD app + stack merge

An OAD enabled image that is a merge of both app and stack that are of split image type.

OAD_IMG_TYPE_NP

OAD network processor image

A network processor image. This image is intended to run an external processor

OAD_IMG_TYPE_FACTORY

OAD network processor image

A network processor image. This image is intended to run an external processor

OAD_IMG_TYPE_BIM

OAD Boot Image Manager (BIM) image

A BIM image

Note
BIM upgrade is not currently supported

OAD_IMG_TYPE_APPSTACKLIB

OAD app + stack library image

An OAD enabled executable where the app and stack are built and linked together as one image.

Note
This is different than OAD_IMG_TYPE_APP_STACK which is a post build merge of two split images.

OAD_IMG_TYPE_USR_BEGIN

OAD User defined image type begin

This is the beginning of the range of image types reserved for the user. OAD applications will not attempt to use or load images with this type

OAD_IMG_TYPE_USR_END

OAD User defined image type end

This is the end of the range of image types reserved for the user. OAD applications will not attempt to use or load images with this type

OAD_IMG_TYPE_HOST_BEGIN

OAD Host image type begin

An image for a host processor

OAD_IMG_TYPE_HOST_END

OAD Host image type end

An image for a host processor

OAD_IMG_TYPE_RSVD_BEGIN

OAD reserved image type begin

Warning
These fields are RFU

OAD_IMG_TYPE_RSVD_END

OAD reserved image type end

Warning
These fields are RFU

OAD_WIRELESS_TECH_BLE

Image built for BLE

OAD_WIRELESS_TECH_TIMAC_SUBG

Image built for Sub1-GHz TI 15.4-Stack

OAD_WIRELESS_TECH_TIMAC_2_4G

Image built for 2.4-GHz TI 15.4-Stack

OAD_WIRELESS_TECH_ZIGBEE

Image built for Zigbee

OAD_WIRELESS_TECH_RF4CE

Image built for RF4CE

OAD_WIRELESS_TECH_THREAD

Image built for TI Open Thread

Image built for EasyLink

OAD_IMG_ID_VAL

Magic number to identify OAD image header. It is recommended that the customer adjust these to uniquely identify their device

This define will be filled in conditionally based on DeviceFamily_*

  • DeviceFamily_CC26X2:
    {'C', 'C', '2', '6', 'x', '2', 'R', '1'} 
    
  • DeviceFamily_CC13X2:
    {'C', 'C', '1', '3', 'x', '2', 'R', '1'} 
    
  • DeviceFamily_CC26X0R2:
    {'O', 'A', 'D', ' ', 'I', 'M', 'G', ' '} 
    
  • Else an error will be thrown

OAD_EXTFL_ID_VAL

Magic number used by entries in the image header table at the beginning of external flash. Note this is different from OAD_IMG_ID_VAL so that the application can determine the difference between an entry in the header table and the start of an OAD image

Note
This is only used by off-chip OAD

CRC_OFFSET

Offset in bytes of crc32 into the structure imgFixedHdr_t

BIM_VER_OFFSET

Offset in bytes of bimVer into the structure imgFixedHdr_t

IMG_DATA_OFFSET

Offset in bytes of bimVer into the structure imgFixedHdr_t. This is the start of data after the CRC bytes

IMG_INFO_OFFSET

Offset in bytes of imgCpStat into the structure imgFixedHdr_t

IMG_COPY_STAT_OFFSET

Offset in bytes of IMG_INFO_OFFSET into the structure imgFixedHdr_t

CRC_STAT_OFFSET

Offset in bytes of CRC status into the structure imgFixedHdr_t

IMG_TYPE_OFFSET

Offset in bytes of imgType into the structure imgFixedHdr_t

BOUNDARY_SEG_OFFSET

Offset in bytes of the boundary segment into the structure imgHdr_t

SEG_LEN_OFFSET

Offset in bytes of the length field into the structure boundarySeg_t

SEG_HDR_LEN

Length of boundarySeg_t in bytes

OAD_IMG_ID_LEN

Length of OAD image ID field, this is the length of OAD_IMG_ID_VAL and OAD_EXTFL_ID_VAL

OAD_SW_VER_LEN

Length of software version in bytes

OAD_IMG_HDR_LEN

Length of imgFixedHdr_t, this is the length of the core header

IMG_BOUNDARY_SEG_ID

Op code used to identify a boundary segment boundarySeg_t

IMG_PAYLOAD_SEG_ID

Op code used to identify a contiguous image segment imgPayloadSeg_t

IMG_NONCOUNT_SEG_ID

Op code used to identify a non-contiguous image segment.

IMG_SECURITY_SEG_ID

Op code used to identify a security segment.

BIM_VER

Version of BIM this image is intended to work with

Warning
This is not intended to be changed

META_VER

Version of metadata that defined this image header

Warning
This is not intended to be changed

DEFAULT_STATE

Default state of unprogrammed flash in an image header field

CRC_VALID

Flag for crcStat indicating the CRC of the image is valid

CRC_INVALID

Flag for crcStat indicating the CRC of the image is invalid

NEED_COPY

FlagimgCpStat indicating the image should be copied

COPY_DONE

FlagimgCpStat indicating the image is already copied

EFL_MATADATA_HDR_LEN

Length of image external flash image header

INVALID_ADDR

An invalid address as shown by unprogrammed flash

INVALID_LEN

An invalid length as shown by unprogrammed flash.

DEFAULT_CRC

An invalid address as shown by unprogrammed flash.

struct imgFixedHdr_t
#include <oad_image_header.h>

OAD Core image header structure definition

Note
This header is required to be part of all OAD images

Public Members

uint8_t imgFixedHdr_t::imgID[8]

User-defined Image Identification bytes.

uint32_t crc32

Image’s 32-bit CRC value.

uint8_t bimVer

BIM version.

uint8_t metaVer

Metadata version.

uint16_t techType

Wireless protocol type BLE/TI-MAC/ZIGBEE etc.

uint8_t imgCpStat

Image copy status.

uint8_t crcStat

CRC status.

uint8_t imgType

Image Type.

uint8_t imgNo

Image number of ‘image type’.

uint32_t imgVld

This field is RFU.

uint32_t len

Image length in bytes.

uint32_t prgEntry

Program entry address.

uint8_t imgFixedHdr_t::softVer[4]

Software version of the image.

uint32_t imgEndAddr

Address of the last byte of a contiguous image.

uint16_t hdrLen

Total length of the image header.

uint16_t rfu

Reserved bytes.

struct imgPayloadSeg_t
#include <oad_image_header.h>

OAD continuous image payload segment

This segment is used to describe a contiguous region of an image The code data in this blob will be flashed to sequential addresses

Public Members

uint8_t segTypeImg

Segment type - for Contiguous image payload.

uint16_t wirelessTech

Wireless technology type.

uint8_t rfu

Reserved byte.

uint32_t imgSegLen

Payload segment length.

uint32_t startAddr

Start address of image on internal flash.

struct boundarySeg_t
#include <oad_image_header.h>

OAD boundary segment

This segment is used to describe the RAM and Flash boundaries in a split image system.

Note
This segment is optional and not required if app and stack are linked together as one image.

Public Members

uint8_t segTypeBd

Segment type - for boundary segment.

uint16_t wirelessTech

Wireless technology type.

uint8_t rfu

Reserved byte.

uint32_t boundarySegLen

Boundary segment length.

uint32_t stackStartAddr

Start address of stack image on internal flash.

uint32_t stackEntryAddr

Stack start address.

uint32_t ram0StartAddr

RAM entry start address.

uint32_t ram0EndAddr

RAM entry end address.

struct imgHdr_t
#include <oad_image_header.h>

OAD Image Header

This structure represents the complete header to be prepended to an OAD image

It is an amalgamation of the structures defined above, and must contain a core header

Public Members

imgFixedHdr_t fixedHdr

Required core image header.

imgPayloadSeg_t imgPayload

Required contiguous image segment.