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#
BL_SUCCESS#
#define BL_SUCCESSValue:
0U
Numerical definition for a bootloader status code: Success.
53
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_CRC_MATCH#
#define BL_CRC_MATCHValue:
2U
Numerical definition for a bootloader status code: CRC match.
57
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_IMG_FLASHED#
#define BL_IMG_FLASHEDValue:
3U
Numerical definition for a bootloader status code: Image flashed.
61
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR#
#define BL_ERRValue:
1U
Numerical definition for a bootloader status code: serial error.
65
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_MASK#
#define BL_ERR_MASKValue:
0x40U
Numerical definition for a bootloader status code: Error mask.
69
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_HEADER_EXP#
#define BL_ERR_HEADER_EXPValue:
0x41U
Numerical definition for a bootloader status code: Failed in header state. Header expected.
74
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_HEADER_WRITE_CRC#
#define BL_ERR_HEADER_WRITE_CRCValue:
0x42U
Numerical definition for a bootloader status code: Failed write/CRC of header.
79
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_CRC#
#define BL_ERR_CRCValue:
0x43U
Numerical definition for a bootloader status code: Failed file CRC.
83
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_UNKNOWN_TAG#
#define BL_ERR_UNKNOWN_TAGValue:
0x44U
Numerical definition for a bootloader status code: Unknown tag.
87
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_SIG#
#define BL_ERR_SIGValue:
0x45U
Numerical definition for a bootloader status code: EBL header error.
91
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_ODD_LEN#
#define BL_ERR_ODD_LENValue:
0x46U
Numerical definition for a bootloader status code: Trying to flash odd length bytes.
96
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_BLOCK_INDEX#
#define BL_ERR_BLOCK_INDEXValue:
0x47U
Numerical definition for a bootloader status code: Indexed past end of block buffer.
101
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_OVWR_BL#
#define BL_ERR_OVWR_BLValue:
0x48U
Numerical definition for a bootloader status code: Attempt to overwrite bootloader flash.
106
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_OVWR_SIMEE#
#define BL_ERR_OVWR_SIMEEValue:
0x49U
Numerical definition for a bootloader status code: Attempt to overwrite Simulated EEPROM flash.
111
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_ERASE_FAIL#
#define BL_ERR_ERASE_FAILValue:
0x4AU
Numerical definition for a bootloader status code: Flash erase failed.
116
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_WRITE_FAIL#
#define BL_ERR_WRITE_FAILValue:
0x4BU
Numerical definition for a bootloader status code: Flash write failed.
121
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_CRC_LEN#
#define BL_ERR_CRC_LENValue:
0x4CU
Numerical definition for a bootloader status code: END tag CRC wrong length.
126
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_NO_QUERY#
#define BL_ERR_NO_QUERYValue:
0X4DU
Numerical definition for a bootloader status code: Received data before query request/response.
131
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_BAD_LEN#
#define BL_ERR_BAD_LENValue:
0x4EU
Numerical definition for a bootloader status code: Invalid length detected.
136
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_TAGBUF#
#define BL_ERR_TAGBUFValue:
0x4FU
Numerical definition for a bootloader status code: Problem with tagBuf detected.
141
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_EBL_CONTINUE#
#define BL_EBL_CONTINUEValue:
0x50U
Numerical definition for a bootloader status code: processEbl deferred, call again to continue.
146
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_UNEXPECTED_TAG#
#define BL_ERR_UNEXPECTED_TAGValue:
0x51U
Numerical definition for a bootloader status code: A known tag was found in an unexpected location (eg. header tag found after data)
151
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_UNK_ENC#
#define BL_ERR_UNK_ENCValue:
0x52U
Numerical definition for a bootloader status code: The specified encryption type is unknown to this bootloader.
156
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_INV_KEY#
#define BL_ERR_INV_KEYValue:
0x53U
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.
162
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_ERR_ENC#
#define BL_ERR_ENCValue:
0x54U
Numerical definition for a bootloader status code: Generic error indicating that there was a problem with the encrypted file when decrypting.
167
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_IBR_ERR_CRC#
#define BL_IBR_ERR_CRCValue:
0x55U
Numerical definition for a bootloader status code: Failed IBR crc.
171
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_IBR_ERR_VERS#
#define BL_IBR_ERR_VERSValue:
0x56U
Numerical definition for a bootloader status code: Incorrect IBR version.
176
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_IBR_ERR_ADDR#
#define BL_IBR_ERR_ADDRValue:
0x57U
Numerical definition for a bootloader status code: Invalid ebl address in IBR.
181
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BL_IBR_ERR_HDR#
#define BL_IBR_ERR_HDRValue:
0x58U
Numerical definition for a bootloader status code: Incorrect IBR header.
186
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
Bootloader State Flags Documentation#
TIMEOUT#
#define TIMEOUTValue:
0x16
Bootloader state flag.
202
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
FILEDONE#
#define FILEDONEValue:
0x17
Bootloader state flag.
203
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
FILEABORT#
#define FILEABORTValue:
0x18
Bootloader state flag.
204
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCKOK#
#define BLOCKOKValue:
0x19
Bootloader state flag.
205
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
QUERYFOUND#
#define QUERYFOUNDValue:
0x1A
Bootloader state flag.
206
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
START_TIMEOUT#
#define START_TIMEOUTValue:
0x1B
Bootloader state flag.
207
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCK_TIMEOUT#
#define BLOCK_TIMEOUTValue:
0x1C
Bootloader state flag.
208
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCKERR_MASK#
#define BLOCKERR_MASKValue:
0x20
Bootloader state flag.
209
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCKERR_SOH#
#define BLOCKERR_SOHValue:
0x21
Bootloader state flag: Start Of Header not received.
213
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCKERR_CHK#
#define BLOCKERR_CHKValue:
0x22
Bootloader state flag: Sequence of bytes don't match.
217
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCKERR_CRCH#
#define BLOCKERR_CRCHValue:
0x23
Bootloader state flag: CRC High byte failure.
221
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCKERR_CRCL#
#define BLOCKERR_CRCLValue:
0x24
Bootloader state flag: CRC Low byte failure.
225
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCKERR_SEQUENCE#
#define BLOCKERR_SEQUENCEValue:
0x25
Bootloader state flag: Block received out of sequence.
229
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCKERR_PARTIAL#
#define BLOCKERR_PARTIALValue:
0x26
Bootloader state flag: Partial block received.
233
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
BLOCKERR_DUPLICATE#
#define BLOCKERR_DUPLICATEValue:
0x27
Bootloader state flag: Duplicate of previous block.
237
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h
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 |
242
of file /Users/vihuszar/Git/EmbeddedSoftware/super/platform/base/hal/micro/cortexm3/common/bootloader-common.h