Common Bootloader#

Common bootloader interface defines and functions.

See bootloader-interface.h for source code.

Bootloader type definitions#

These are the type definitions for the bootloader.

typedef uint8_t

Define the bootloader base type.

typedef uint16_t

Define the bootloader extended type.

Bootloader Numerical Definitions#

These are numerical definitions for the possible bootloader types and a typedef of the bootloader base type.

#define
BL_TYPE_NULL (0)

Numerical definition for a bootloader type.

#define
BL_TYPE_STANDALONE (1)

bl type standalone

#define
BL_TYPE_APPLICATION (2)

bl type application

#define
BL_TYPE_BOOTLOADER (3)

Generic bootloader type.

#define
BL_TYPE_SMALL_BOOTLOADER (4)

Generic, but small bootloader type.

Functions#

Returns the bootloader base type the application was built for.

Returns the extended bootloader type of the bootloader that is present on the chip.

uint16_t

Returns the version of the installed bootloader, regardless of its type.

void
halGetExtendedBootloaderVersion(uint32_t *getEmberVersion, uint32_t *customerVersion)

Return extended bootloader version information, if supported.

Macros#

#define
BOOTLOADER_BASE_TYPE (extendedType)

Macro returning the base type of a bootloader when given an extended type.

#define
BOOTLOADER_MAKE_EXTENDED_TYPE (baseType, extendedSpecifier)

Macro returning the extended type of a bootloader when given a base type and extendedSpecifier.

#define
BL_EXT_TYPE_NULL ((BL_TYPE_NULL << 8U) | 0x00U)

Macro defining the extended NULL bootloader type.

#define
BL_EXT_TYPE_STANDALONE_UNKNOWN ((BL_TYPE_STANDALONE << 8U) | 0x00U)

Macro defining the extended standalone unknown bootloader type.

#define
BL_EXT_TYPE_SERIAL_UART ((BL_TYPE_STANDALONE << 8U) | 0x01U)

Macro defining the extended standalone UART bootloader type.

#define
BL_EXT_TYPE_SERIAL_UART_OTA ((BL_TYPE_STANDALONE << 8U) | 0x03U)

Macro defining the extended standalone OTA and UART bootloader type.

#define
BL_EXT_TYPE_EZSP_SPI ((BL_TYPE_STANDALONE << 8U) | 0x04U)

bl ext type ezsp spi

#define
BL_EXT_TYPE_EZSP_SPI_OTA ((BL_TYPE_STANDALONE << 8U) | 0x06U)

bl ext type ezsp spi ota

#define
BL_EXT_TYPE_SERIAL_USB ((BL_TYPE_STANDALONE << 8U) | 0x07U)

Macro defining the extended standalone USB bootloader type.

#define
BL_EXT_TYPE_SERIAL_USB_OTA ((BL_TYPE_STANDALONE << 8U) | 0x08U)

Macro defining the extended standalone OTA and USB bootloader type.

#define
BL_EXT_TYPE_APP_UNKNOWN ((BL_TYPE_APPLICATION << 8U) | 0x00U)

Macro defining the extended application unknown bootloader type.

#define
BL_EXT_TYPE_APP_SPI ((BL_TYPE_APPLICATION << 8U) | 0x01U)

Macro defining the extended application SPI bootloader type.

#define
BL_EXT_TYPE_APP_I2C ((BL_TYPE_APPLICATION << 8U) | 0x02U)

Macro defining the extended application I2C bootloader type.

#define
BL_EXT_TYPE_APP_LOCAL_STORAGE ((BL_TYPE_APPLICATION << 8U) | 0x03U)

Macro defining a type for the local storage app bootloader.

#define
BOOTLOADER_INVALID_VERSION 0xFFFF

Define an invalid bootloader version.

#define
CUSTOMER_APPLICATION_VERSION 0

Macro defining the customer application version stored in the ApplicationProperties_t struct.

#define
CUSTOMER_APPLICATION_CAPABILITIES 0

Macro defining the customer application capabilities stored in the ApplicationProperties_t struct.

#define
CUSTOMER_APPLICATION_PRODUCT_ID { 0 }

Macro defining the customer application product ID stored in the ApplicationProperties_t struct.

#define
MPSI_PLUGIN_SUPPORT 0

Macro defining the support for the MPSI protocol stored in the capabilities field of the ApplicationProperties_t struct.

#define
APPLICATION_PROPERTIES_CAPABILITIES_MPSI_SUPPORT_BIT 31

Macro defining the bit position that corresponds to MPSI support in the capabilities field of the ApplicationProperties_t struct.

#define
APPLICATION_PROPERTIES_CAPABILITIES undefined

Macro defining the capabilities that this application has.

Bootloader type definitions Documentation#

BlBaseType#

typedef uint8_t BlBaseType

Define the bootloader base type.


BlExtendedType#

typedef uint16_t BlExtendedType

Define the bootloader extended type.


Bootloader Numerical Definitions Documentation#

Function Documentation#

halBootloaderGetType#

BlBaseType halBootloaderGetType (void )

Returns the bootloader base type the application was built for.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns


halBootloaderGetInstalledType#

BlExtendedType halBootloaderGetInstalledType (void )

Returns the extended bootloader type of the bootloader that is present on the chip.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • the extended bootloader type of the bootloader that is present on the chip.


halGetBootloaderVersion#

uint16_t halGetBootloaderVersion (void )

Returns the version of the installed bootloader, regardless of its type.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • Version if bootloader installed, or BOOTLOADER_INVALID_VERSION. A returned version of 0x1234U would indicate version 1.2 build 34


halGetExtendedBootloaderVersion#

void halGetExtendedBootloaderVersion (uint32_t * getEmberVersion, uint32_t * customerVersion)

Return extended bootloader version information, if supported.

Parameters
TypeDirectionArgument NameDescription
uint32_t *N/AgetEmberVersion

If specified, we will return the full 32bit ember version for this bootloader. Format is major, minor, patch, doc (4bit nibbles) followed by a 16bit build number.

uint32_t *N/AcustomerVersion

This will return the 32bit value specified in CUSTOMER_BOOTLOADER_VERSION at build time.

This API is not supported for EM2XX chips and only returns extra information on bootloaders built on or after the 4.7 release.