92 #ifndef OAD_IMAGE_HEADER_H 93 #define OAD_IMAGE_HEADER_H 127 #define BIM_VAR_ADDR 0x20000400 134 extern uint32_t _bim_var;
137 #if defined(BIM_DUAL_ONCHIP_IMAGE) && !defined(SECURITY) 140 #error "Error: DUAL ON CHIP BIM needs the macro SECURITY to be enabled" 143 #if defined (DeviceFamily_CC23X0R2) 144 #define SIGN_FN_PTR 0x37fc 146 #define SIGN_FN_PTR 0x57fa0 161 #define OAD_IMG_TYPE_PERSISTENT_APP 0 168 #define OAD_IMG_TYPE_APP 1 175 #define OAD_IMG_TYPE_STACK 2 183 #define OAD_IMG_TYPE_APP_STACK 3 191 #define OAD_IMG_TYPE_NP 4 199 #define OAD_IMG_TYPE_FACTORY 5 207 #define OAD_IMG_TYPE_BIM 6 217 #define OAD_IMG_TYPE_APPSTACKLIB 7 224 #define OAD_IMG_TYPE_RSVD_BEGIN 64 231 #define OAD_IMG_TYPE_RSVD_END 255 243 #define OAD_WIRELESS_TECH_BLE 0xFFFE 248 #define OAD_WIRELESS_TECH_TIMAC_SUBG 0xFFFD 253 #define OAD_WIRELESS_TECH_TIMAC_2_4G 0xFFFB 258 #define OAD_WIRELESS_TECH_ZIGBEE 0xFFF7 263 #define OAD_WIRELESS_TECH_RF4CE 0xFFEF 268 #define OAD_WIRELESS_TECH_THREAD 0xFFDF 273 #define OAD_WIRELESS_TECH_PROPRF 0xFFBF 278 #define OAD_WIRELESS_TECH_MIOTY 0xFF7F 283 #define OAD_WIRELESS_TECH_WBMS_WD 0xFEFF 288 #define OAD_WIRELESS_TECH_WBMS_WM 0xFDFF 293 #if defined(DeviceFamily_CC26X2) || defined (DeviceFamily_CC26X2_V2) || \ 294 defined(DeviceFamily_CC26X2X7) || defined(DeviceFamily_CC26X1) 295 #define OAD_IMG_ID_VAL {'C', 'C', '2', '6', 'x', '2', 'R', '1'} 296 #elif defined (DeviceFamily_CC13X2) || \ 297 defined (DeviceFamily_CC13X2X7) || \ 298 defined (DeviceFamily_CC13X1) || \ 299 defined (DeviceFamily_CC13X2_V1) || \ 300 defined (DeviceFamily_CC13X2_V2) 301 #define OAD_IMG_ID_VAL {'C', 'C', '1', '3', 'x', '2', 'R', '1'} 302 #elif defined (DeviceFamily_CC13X4) 303 #define OAD_IMG_ID_VAL {'C', 'C', '1', '3', 'x', '4', ' ', ' '} 304 #elif defined (DeviceFamily_CC26X3) 305 #define OAD_IMG_ID_VAL {'C', 'C', '2', '6', 'x', '3', ' ', ' '} 306 #elif defined (DeviceFamily_CC26X4) 307 #define OAD_IMG_ID_VAL {'C', 'C', '2', '6', 'x', '4', ' ', ' '} 308 #elif defined (DeviceFamily_CC26X0R2) 309 #define OAD_IMG_ID_VAL {'O', 'A', 'D', ' ', 'I', 'M', 'G', ' '} 310 #elif defined (DeviceFamily_CC23X0R2) 311 #define OAD_IMG_ID_VAL {'C', 'C', '2', '3', 'x', '0', 'R', '2'} 312 #elif defined (DOXYGEN) 323 #define OAD_IMG_ID_VAL 325 #error "Unknown Device Family" 326 #endif //DeviceFamily_CC26X2 336 #define OAD_EXTFL_ID_VAL {'O', 'A', 'D', ' ', 'N', 'V', 'M', '1'} 347 #define CRC_OFFSET offsetof(imgHdr_t, fixedHdr.crc32) 352 #define BIM_VER_OFFSET offsetof(imgHdr_t, fixedHdr.bimVer) 358 #define IMG_DATA_OFFSET BIM_VER_OFFSET 363 #define IMG_INFO_OFFSET offsetof(imgHdr_t, fixedHdr.imgCpStat) 368 #define IMG_COPY_STAT_OFFSET IMG_INFO_OFFSET 373 #define CRC_STAT_OFFSET offsetof(imgHdr_t, fixedHdr.crcStat) 378 #define IMG_TYPE_OFFSET offsetof(imgHdr_t, fixedHdr.imgType) 383 #define IMG_VALIDATION_OFFSET offsetof(imgHdr_t, fixedHdr.imgVld) 388 #define IMG_COMMIT_FLAG_OFFSET offsetof(imgHdr_t, fixedHdr.commitFlag) 393 #define BOUNDARY_SEG_OFFSET offsetof(imgHdr_t, fixedHdr.segTypeBd) 398 #define SEG_LEN_OFFSET 4 405 #define SEG_SIGERINFO_OFFSET offsetof(imgHdr_t, secInfoSeg.secSignerInfo) 410 #define SEG_SIGNR_OFFSET offsetof(imgHdr_t, secInfoSeg.eccSign.sign_r) 415 #define SEG_SIGNS_OFFSET offsetof(imgHdr_t, secInfoSeg.eccSign.sign_s) 420 #define SEC_VERIF_STAT_OFFSET offsetof(imgHdr_t, secInfoSeg.verifStat) 425 #define HDR_LEN_WITH_SECURITY_INFO offsetof(imgHdr_t, secInfoSeg.segTypeSecure) + sizeof(securityInfoSeg_t) 430 #define IMG_START_ADDR_OFFSET offsetof(imgHdr_t, imgPayload.startAddr) 442 #define SEG_HDR_LEN 12 448 #define OAD_IMG_ID_LEN 8 453 #define OAD_SW_VER_LEN 4 458 #define OAD_IMG_HDR_LEN sizeof(imgFixedHdr_t) 471 #define IMG_BOUNDARY_SEG_ID 0x00 476 #define IMG_PAYLOAD_SEG_ID 0x01 482 #define IMG_NONCOUNT_SEG_ID 0x02 487 #define IMG_SECURITY_SEG_ID 0x03 492 #define OAD_IMG_FULL_HDR_LEN sizeof(imgHdr_t) 493 #define OAD_IMG_ID_LEN 8 494 #define OAD_SW_VER_LEN 4 496 #ifndef STACK_LIBRARY 497 #define BOUNDARY_SEG_LEN 0x18 499 #define SECURITY_SEG_LEN 0x55 501 #define IMG_COPY_STAT_OFFSET IMG_INFO_OFFSET 503 #define SEG_LEN_OFFSET 4 504 #define SIG_OFFSET offsetof(securityInfoSeg_t, eccSign.sign_r) 506 #define ECDSA_KEY_LEN 32 508 #define ECDSA_SHA_TEMPWORKZONE_LEN ECDSA_KEY_LEN*6 529 #define SECURITY_VER 0x1 534 #define DEFAULT_STATE 0xFF 540 #define CRC_VALID 0xFE 546 #define CRC_INVALID 0xFC 551 #define NEED_COPY 0xFE 556 #define COPY_DONE 0xFC 558 #ifdef BIM_DUAL_ONCHIP_IMAGE 563 #define VERIFY_PASS_CURRENT 0xFE 569 #define VERIFY_PASS_NOT_CURRENT 0xFC 575 #define VERIFY_FAIL 0xF8 582 #define VERIFY_FAIL 0xFC 584 #endif // BIM_DUAL_ONCHIP_IMAGE 589 #define VERIFY_PASS 0xFE 591 #ifdef BIM_RESTRICTED_ROLLBACK_VERIFY_COMMIT_IMAGE 596 #define COMMIT_PENDING 0XFF 602 #define COMMIT_ACCEPTED 0XFE 608 #define COMMIT_REJECTED 0XEF 615 #define EFL_MATADATA_HDR_LEN OAD_IMG_HDR_LEN + 8 620 #define INVALID_ADDR 0xFFFFFFFF 625 #define INVALID_LEN INVALID_ADDR 630 #define DEFAULT_CRC 0xFFFFFFFF 632 #if (defined(SECURITY)) 636 #define SIGNER_INFO_SIZE 8 641 #define SIGNATURE_SIZE 64 649 #if defined (__IAR_SYSTEMS_ICC__) 650 #define TYPEDEF_STRUCT_PACKED __packed typedef struct 651 #elif defined __TI_COMPILER_VERSION || defined __TI_COMPILER_VERSION__ || __clang__ 652 #define TYPEDEF_STRUCT_PACKED typedef struct __attribute__((packed)) 653 #elif defined (__GNUC__) 654 #define TYPEDEF_STRUCT_PACKED typedef struct __attribute__((__packed__)) 658 #if (defined(SECURITY)) 662 TYPEDEF_STRUCT_PACKED
664 uint8_t signerInfo[SIGNER_INFO_SIZE];
665 uint8_t signature[SIGNATURE_SIZE];
666 }signPld_ECDSA_P256_t;
673 TYPEDEF_STRUCT_PACKED
687 #ifdef BIM_VERIFY_VERSION_IMAGE 694 #ifdef BIM_RESTRICTED_ROLLBACK_VERIFY_COMMIT_IMAGE 708 TYPEDEF_STRUCT_PACKED
726 TYPEDEF_STRUCT_PACKED
751 TYPEDEF_STRUCT_PACKED
759 uint8_t secSignerInfo[8];
771 TYPEDEF_STRUCT_PACKED
774 #if (defined(SECURITY)) 777 #if (!defined(STACK_LIBRARY) && (defined(SPLIT_APP_STACK_IMAGE))) 783 TYPEDEF_STRUCT_PACKED
785 uint32_t *eccWorkzone;
786 uint8_t *SHAWorkzone;
787 uint8_t *tempWorkzone;
789 uint8_t SHADataBufLen;
790 } ecdsaSigVerifyBuf_t;
806 uint8_t *, ecdsaSigVerifyBuf_t *);
uint32_t _sign_fnPtr
Variable for Pointer to BIM Function.
uint16_t hdrLen
Total length of the image header.
Definition: oad_image_header.h:693
uint32_t imgVld
Image validation bytes, used by BIM.
Definition: oad_image_header.h:684
uint16_t techType
Wireless protocol type BLE/TI-MAC/ZIGBEE etc.
Definition: oad_image_header.h:679
uint8_t segTypeSecure
Segment type - for Secuirty info payload.
Definition: oad_image_header.h:753
uint32_t ram0StartAddr
RAM entry start address.
Definition: oad_image_header.h:734
uint32_t startAddr
Start address of image on internal flash.
Definition: oad_image_header.h:714
uint32_t prgEntry
Program entry address.
Definition: oad_image_header.h:686
uint16_t wirelessTech
Wireless technology type.
Definition: oad_image_header.h:711
uint32_t crc32
Image's 32-bit CRC value.
Definition: oad_image_header.h:676
uint32_t ram0EndAddr
RAM entry end address.
Definition: oad_image_header.h:735
uint16_t rfu
Reserved bytes.
Definition: oad_image_header.h:698
uint8_t metaVer
Metadata version.
Definition: oad_image_header.h:678
uint8_t imgNo
Image number of 'image type'.
Definition: oad_image_header.h:683
uint16_t wirelessTech
Wireless technology type.
Definition: oad_image_header.h:729
uint8_t segTypeBd
Segment type - for boundary segment.
Definition: oad_image_header.h:728
uint32_t len
Image length in bytes.
Definition: oad_image_header.h:685
uint32_t boundarySegLen
Boundary segment length.
Definition: oad_image_header.h:731
uint8_t bimVer
BIM version.
Definition: oad_image_header.h:677
uint8_t secVer
Security version */.
Definition: oad_image_header.h:757
uint32_t stackStartAddr
Start address of stack image on internal flash.
Definition: oad_image_header.h:732
uint8_t crcStat
CRC status.
Definition: oad_image_header.h:681
uint8_t segTypeImg
Segment type - for Contiguous image payload.
Definition: oad_image_header.h:710
eccSignature_t eccSign
Security signature */.
Definition: oad_image_header.h:760
uint32_t stackEntryAddr
Stack start address.
Definition: oad_image_header.h:733
uint8_t imgType
Image Type.
Definition: oad_image_header.h:682
Definition: oad_image_header.h:726
imgPayloadSeg_t imgPayload
Required contiguous image segment.
Definition: oad_image_header.h:780
imgFixedHdr_t fixedHdr
Required core image header.
Definition: oad_image_header.h:773
uint32_t imgSegLen
Payload segment length.
Definition: oad_image_header.h:713
uint8_t imgCpStat
Image copy status.
Definition: oad_image_header.h:680
Definition: oad_image_header.h:740
Definition: oad_image_header.h:771
uint32_t secTimestamp
Security timestamp */.
Definition: oad_image_header.h:758
Definition: oad_image_header.h:673
Definition: oad_image_header.h:751
uint32_t secSegLen
Payload segment length.
Definition: oad_image_header.h:756
uint32_t imgEndAddr
Address of the last byte of a contiguous image.
Definition: oad_image_header.h:692
uint16_t wirelessTech
Wireless technology type.
Definition: oad_image_header.h:754
uint8_t verifStat
Verification status.
Definition: oad_image_header.h:755
uint8_t rfu
Reserved byte.
Definition: oad_image_header.h:730
uint8_t rfu
Reserved byte.
Definition: oad_image_header.h:712
Definition: oad_image_header.h:708