Common bootloader definitions See Common for detailed documentation.
License#
Copyright 2018 Silicon Laboratories Inc. www.silabs.com
The licensor of this software is Silicon Laboratories Inc. Your use of this software is governed by the terms of Silicon Labs Master Software License Agreement (MSLA) available at www.silabs.com/about-us/legal/master-software-license-agreement. This software is distributed to you in Source Code format and is governed by the sections of the MSLA applicable to Source Code.
/***************************************************************************/
#ifndef __BOOTLOADER_COMMON_H__
#define __BOOTLOADER_COMMON_H__
#ifndef DOXYGEN_SHOULD_SKIP_THIS
//#define BL_DEBUG
#ifdef BL_DEBUG
#define BLDEBUG(x) (x) // turn debug output on
#define BLDEBUG_PRINT(str) serPutStr(str)
#else
#define BLDEBUG(x) // turn debug output off
#define BLDEBUG_PRINT(str)
#endif
#endif //DOXYGEN_SHOULD_SKIP_THIS
typedef uint8_t BL_Status;
#define BL_SUCCESS 0U
#define BL_CRC_MATCH 2U
#define BL_IMG_FLASHED 3U
#define BL_ERR 1U
#define BL_ERR_MASK 0x40U
#define BL_ERR_HEADER_EXP 0x41U
#define BL_ERR_HEADER_WRITE_CRC 0x42U
#define BL_ERR_CRC 0x43U
#define BL_ERR_UNKNOWN_TAG 0x44U
#define BL_ERR_SIG 0x45U
#define BL_ERR_ODD_LEN 0x46U
#define BL_ERR_BLOCK_INDEX 0x47U
#define BL_ERR_OVWR_BL 0x48U
#define BL_ERR_OVWR_SIMEE 0x49U
#define BL_ERR_ERASE_FAIL 0x4AU
#define BL_ERR_WRITE_FAIL 0x4BU
#define BL_ERR_CRC_LEN 0x4CU
#define BL_ERR_NO_QUERY 0X4DU
#define BL_ERR_BAD_LEN 0x4EU
#define BL_ERR_TAGBUF 0x4FU
#define BL_EBL_CONTINUE 0x50U
#define BL_ERR_UNEXPECTED_TAG 0x51U
#define BL_ERR_UNK_ENC 0x52U
#define BL_ERR_INV_KEY 0x53U
#define BL_ERR_ENC 0x54U
#define BL_IBR_ERR_CRC 0x55U
#define BL_IBR_ERR_VERS 0x56U
#define BL_IBR_ERR_ADDR 0x57U
#define BL_IBR_ERR_HDR 0x58U
#define TIMEOUT 0x16
#define FILEDONE 0x17
#define FILEABORT 0x18
#define BLOCKOK 0x19
#define QUERYFOUND 0x1A
#define START_TIMEOUT 0x1B
#define BLOCK_TIMEOUT 0x1C
#define BLOCKERR_MASK 0x20
#define BLOCKERR_SOH 0x21
#define BLOCKERR_CHK 0x22
#define BLOCKERR_CRCH 0x23
#define BLOCKERR_CRCL 0x24
#define BLOCKERR_SEQUENCE 0x25
#define BLOCKERR_PARTIAL 0x26
#define BLOCKERR_DUPLICATE 0x27
// two possible communication modes: serial mode, or radio/ota mode.
enum {
COMM_SERIAL = 0x01, // in serial mode (uart or ezsp spi)
COMM_RADIO = 0x02, // in radio mode
};
#endif //__BOOTLOADER_COMMON_H__
Bootloader Status Definitions#
These are numerical definitions for the possible bootloader status codes.
Numerical definition for a bootloader status code: Success.
Numerical definition for a bootloader status code: CRC match.
Numerical definition for a bootloader status code: Image flashed.
Numerical definition for a bootloader status code: serial error.
Numerical definition for a bootloader status code: Error mask.
Numerical definition for a bootloader status code: Failed in header state. Header expected.
Numerical definition for a bootloader status code: Failed write/CRC of header.
Numerical definition for a bootloader status code: Failed file CRC.
Numerical definition for a bootloader status code: Unknown tag.
Numerical definition for a bootloader status code: EBL header error.
Numerical definition for a bootloader status code: Trying to flash odd length bytes.
Numerical definition for a bootloader status code: Indexed past end of block buffer.
Numerical definition for a bootloader status code: Attempt to overwrite bootloader flash.
Numerical definition for a bootloader status code: Attempt to overwrite Simulated EEPROM flash.
Numerical definition for a bootloader status code: Flash erase failed.
Numerical definition for a bootloader status code: Flash write failed.
Numerical definition for a bootloader status code: END tag CRC wrong length.
Numerical definition for a bootloader status code: Received data before query request/response.
Numerical definition for a bootloader status code: Invalid length detected.
Numerical definition for a bootloader status code: Problem with tagBuf detected.
Numerical definition for a bootloader status code: processEbl deferred, call again to continue.
Numerical definition for a bootloader status code: A known tag was found in an unexpected location (eg. header tag found after data)
Numerical definition for a bootloader status code: The specified encryption type is unknown to this bootloader.
Numerical definition for a bootloader status code: No valid encryption key found on the device (ie. It's all 0xFF's). Bootloader will not function until this key is set.
Numerical definition for a bootloader status code: Generic error indicating that there was a problem with the encrypted file when decrypting.
Numerical definition for a bootloader status code: Failed IBR crc.
Numerical definition for a bootloader status code: Incorrect IBR version.
Numerical definition for a bootloader status code: Invalid ebl address in IBR.
Numerical definition for a bootloader status code: Incorrect IBR header.
Bootloader State Flags#
These are numerical flags for the possible bootloader states. These values are used in the bootloader code for making the current state more verbose. The flags do not start at 0 so that they can be output via the serial port during debug and easily screened out of normal xmodem traffic which depends only on ACK (0x06) and NAK (0x15).
Bootloader state flag.
Bootloader state flag.
Bootloader state flag.
Bootloader state flag.
Bootloader state flag.
Bootloader state flag.
Bootloader state flag.
Bootloader state flag.
Bootloader state flag: Start Of Header not received.
Bootloader state flag: Sequence of bytes don't match.
Bootloader state flag: CRC High byte failure.
Bootloader state flag: CRC Low byte failure.
Bootloader state flag: Block received out of sequence.
Bootloader state flag: Partial block received.
Bootloader state flag: Duplicate of previous block.
Enumerations#
Bootloader Status Definitions Documentation#
Bootloader State Flags Documentation#
Enumeration Documentation#
@0#
@0
Enumerator | |
---|---|
PRIORITIZE_BEACONS_BASED_ON_PARENT_CLASSIFICATION | |
PRIORITIZE_BEACONS_BASED_ON_TC_CONNECTVITY | |
TC_CONNECTIVITY | |
LONG_UPTIME | |
BAD_PARENT_CONNECTIVITY | |
EMBER_OUTGOING_MESSAGES | There are messages waiting for transmission. |
EMBER_INCOMING_MESSAGES | One or more incoming messages being processed. |
EMBER_RADIO_IS_ON | The radio is currently powered on. On sleepy devices, the radio is turned off when not in use. On non-sleepy devices (EMBER_COORDINATOR, EMBER_ROUTER, or EMBER_END_DEVICE), the radio is always on. |
EMBER_TRANSPORT_ACTIVE | The transport layer has messages awaiting an ACK. |
EMBER_APS_LAYER_ACTIVE | The ZigBee APS layer has messages awaiting an ACK. |
EMBER_ASSOCIATING | The node is currently trying to associate with a ZigBee PRO network. |
EMBER_ZLL_TOUCH_LINKING | The node is currently touch linking. |
EMBER_NETWORK_TIMEOUT_REQUEST | Network Timeout Request Event. |
EMBER_SEND_ORPHAN_NOTIFICATION | Sending Orphan Notification Event. |
EMBER_MAC_DATA_POLL_SUPER_RETRY | MAC Data Poll Super Retry Event . |
INITIAL | |
SCAN_FOR_TOUCH_LINK | |
SCAN_FOR_DEVICE_INFORMATION | |
SCAN_FOR_IDENTIFY | |
SCAN_FOR_RESET | |
TARGET_NETWORK_FOUND | |
ABORTING_TOUCH_LINK | |
SCAN_COMPLETE | |
TOUCH_LINK_TARGET | |
FORMING_NETWORK | |
RESETTING_TO_FACTORY_NEW | |
ADC_REF_INT | Internal reference. |
TOKEN_COUNT | |
COMM_SERIAL | |
COMM_RADIO |