92 #ifndef OAD_IMAGE_HEADER_H 93 #define OAD_IMAGE_HEADER_H 125 #define BIM_VAR_ADDR 0x20000400 132 extern uint32_t _bim_var;
135 #if defined(BIM_DUAL_ONCHIP_IMAGE) && !defined(SECURITY) 138 #error "Error: DUAL ON CHIP BIM needs the macro SECURITY to be enabled" 141 #if defined(DeviceFamily_CC23X0R2) 142 #define SIGN_FN_PTR 0x37fc 144 #define SIGN_FN_PTR 0x57fa0 159 #define OAD_IMG_TYPE_PERSISTENT_APP 0 166 #define OAD_IMG_TYPE_APP 1 173 #define OAD_IMG_TYPE_STACK 2 181 #define OAD_IMG_TYPE_APP_STACK 3 189 #define OAD_IMG_TYPE_NP 4 197 #define OAD_IMG_TYPE_FACTORY 5 205 #define OAD_IMG_TYPE_BIM 6 215 #define OAD_IMG_TYPE_APPSTACKLIB 7 222 #define OAD_IMG_TYPE_RSVD_BEGIN 64 229 #define OAD_IMG_TYPE_RSVD_END 255 241 #define OAD_WIRELESS_TECH_BLE 0xFFFE 246 #define OAD_WIRELESS_TECH_TIMAC_SUBG 0xFFFD 251 #define OAD_WIRELESS_TECH_TIMAC_2_4G 0xFFFB 256 #define OAD_WIRELESS_TECH_ZIGBEE 0xFFF7 261 #define OAD_WIRELESS_TECH_RF4CE 0xFFEF 266 #define OAD_WIRELESS_TECH_THREAD 0xFFDF 271 #define OAD_WIRELESS_TECH_PROPRF 0xFFBF 276 #define OAD_WIRELESS_TECH_MIOTY 0xFF7F 281 #define OAD_WIRELESS_TECH_WBMS_WD 0xFEFF 286 #define OAD_WIRELESS_TECH_WBMS_WM 0xFDFF 290 #if defined(DeviceFamily_CC26X2) || defined(DeviceFamily_CC26X2_V2) || defined(DeviceFamily_CC26X2X7) || \ 291 defined(DeviceFamily_CC26X1) 292 #define OAD_IMG_ID_VAL \ 294 'C', 'C', '2', '6', 'x', '2', 'R', '1' \ 296 #elif defined(DeviceFamily_CC13X2) || defined(DeviceFamily_CC13X2X7) || defined(DeviceFamily_CC13X1) || \ 297 defined(DeviceFamily_CC13X2_V1) || defined(DeviceFamily_CC13X2_V2) 298 #define OAD_IMG_ID_VAL \ 300 'C', 'C', '1', '3', 'x', '2', 'R', '1' \ 302 #elif defined(DeviceFamily_CC13X4) 303 #define OAD_IMG_ID_VAL \ 305 'C', 'C', '1', '3', 'x', '4', ' ', ' ' \ 307 #elif defined(DeviceFamily_CC26X3) 308 #define OAD_IMG_ID_VAL \ 310 'C', 'C', '2', '6', 'x', '3', ' ', ' ' \ 312 #elif defined(DeviceFamily_CC26X4) 313 #define OAD_IMG_ID_VAL \ 315 'C', 'C', '2', '6', 'x', '4', ' ', ' ' \ 317 #elif defined(DeviceFamily_CC26X0R2) 318 #define OAD_IMG_ID_VAL \ 320 'O', 'A', 'D', ' ', 'I', 'M', 'G', ' ' \ 322 #elif defined(DeviceFamily_CC23X0R2) 323 #define OAD_IMG_ID_VAL \ 325 'C', 'C', '2', '3', 'x', '0', 'R', '2' \ 327 #elif defined(DOXYGEN) 338 #define OAD_IMG_ID_VAL 340 #error "Unknown Device Family" 341 #endif // DeviceFamily_CC26X2 351 #define OAD_EXTFL_ID_VAL \ 353 'O', 'A', 'D', ' ', 'N', 'V', 'M', '1' \ 364 #define CRC_OFFSET offsetof(imgHdr_t, fixedHdr.crc32) 369 #define BIM_VER_OFFSET offsetof(imgHdr_t, fixedHdr.bimVer) 375 #define IMG_DATA_OFFSET BIM_VER_OFFSET 380 #define IMG_INFO_OFFSET offsetof(imgHdr_t, fixedHdr.imgCpStat) 385 #define IMG_COPY_STAT_OFFSET IMG_INFO_OFFSET 390 #define CRC_STAT_OFFSET offsetof(imgHdr_t, fixedHdr.crcStat) 395 #define IMG_TYPE_OFFSET offsetof(imgHdr_t, fixedHdr.imgType) 400 #define IMG_VALIDATION_OFFSET offsetof(imgHdr_t, fixedHdr.imgVld) 405 #define IMG_COMMIT_FLAG_OFFSET offsetof(imgHdr_t, fixedHdr.commitFlag) 410 #define BOUNDARY_SEG_OFFSET offsetof(imgHdr_t, fixedHdr.segTypeBd) 415 #define SEG_LEN_OFFSET 4 422 #define SEG_SIGERINFO_OFFSET offsetof(imgHdr_t, secInfoSeg.secSignerInfo) 427 #define SEG_SIGNR_OFFSET offsetof(imgHdr_t, secInfoSeg.eccSign.sign_r) 432 #define SEG_SIGNS_OFFSET offsetof(imgHdr_t, secInfoSeg.eccSign.sign_s) 437 #define SEC_VERIF_STAT_OFFSET offsetof(imgHdr_t, secInfoSeg.verifStat) 442 #define HDR_LEN_WITH_SECURITY_INFO offsetof(imgHdr_t, secInfoSeg.segTypeSecure) + sizeof(securityInfoSeg_t) 447 #define IMG_START_ADDR_OFFSET offsetof(imgHdr_t, imgPayload.startAddr) 459 #define SEG_HDR_LEN 12 465 #define OAD_IMG_ID_LEN 8 470 #define OAD_SW_VER_LEN 4 475 #define OAD_IMG_HDR_LEN sizeof(imgFixedHdr_t) 487 #define IMG_BOUNDARY_SEG_ID 0x00 492 #define IMG_PAYLOAD_SEG_ID 0x01 497 #define IMG_NONCOUNT_SEG_ID 0x02 502 #define IMG_SECURITY_SEG_ID 0x03 506 #define OAD_IMG_FULL_HDR_LEN sizeof(imgHdr_t) 507 #define OAD_IMG_ID_LEN 8 508 #define OAD_SW_VER_LEN 4 510 #ifndef STACK_LIBRARY 511 #define BOUNDARY_SEG_LEN 0x18 513 #define SECURITY_SEG_LEN 0x55 515 #define IMG_COPY_STAT_OFFSET IMG_INFO_OFFSET 517 #define SEG_LEN_OFFSET 4 518 #define SIG_OFFSET offsetof(securityInfoSeg_t, eccSign.sign_r) 520 #define ECDSA_KEY_LEN 32 522 #define ECDSA_SHA_TEMPWORKZONE_LEN \ 544 #define SECURITY_VER 0x1 549 #define DEFAULT_STATE 0xFF 555 #define CRC_VALID 0xFE 561 #define CRC_INVALID 0xFC 566 #define NEED_COPY 0xFE 571 #define COPY_DONE 0xFC 573 #ifdef BIM_DUAL_ONCHIP_IMAGE 578 #define VERIFY_PASS_CURRENT 0xFE 584 #define VERIFY_PASS_NOT_CURRENT 0xFC 590 #define VERIFY_FAIL 0xF8 597 #define VERIFY_FAIL 0xFC 599 #endif // BIM_DUAL_ONCHIP_IMAGE 604 #define VERIFY_PASS 0xFE 606 #ifdef BIM_RESTRICTED_ROLLBACK_VERIFY_COMMIT_IMAGE 611 #define COMMIT_PENDING 0XFF 617 #define COMMIT_ACCEPTED 0XFE 623 #define COMMIT_REJECTED 0XEF 630 #define EFL_MATADATA_HDR_LEN OAD_IMG_HDR_LEN + 8 635 #define INVALID_ADDR 0xFFFFFFFF 640 #define INVALID_LEN INVALID_ADDR 645 #define DEFAULT_CRC 0xFFFFFFFF 647 #if (defined(SECURITY)) 651 #define SIGNER_INFO_SIZE 8 656 #define SIGNATURE_SIZE 64 664 #if defined(__IAR_SYSTEMS_ICC__) 665 #define TYPEDEF_STRUCT_PACKED __packed typedef struct 666 #elif defined __TI_COMPILER_VERSION || defined __TI_COMPILER_VERSION__ || __clang__ 667 #define TYPEDEF_STRUCT_PACKED typedef struct __attribute__((packed)) 668 #elif defined(__GNUC__) 669 #define TYPEDEF_STRUCT_PACKED typedef struct __attribute__((__packed__)) 673 #if (defined(SECURITY)) 679 uint8_t signerInfo[SIGNER_INFO_SIZE];
680 uint8_t signature[SIGNATURE_SIZE];
682 signPld_ECDSA_P256_t;
703 #ifdef BIM_VERIFY_VERSION_IMAGE 710 #ifdef BIM_RESTRICTED_ROLLBACK_VERIFY_COMMIT_IMAGE 772 uint8_t segTypeSecure;
793 imgFixedHdr_t fixedHdr;
794 #if (defined(SECURITY)) 795 securityInfoSeg_t secInfoSeg;
797 #if (!defined(STACK_LIBRARY) && (defined(SPLIT_APP_STACK_IMAGE))) 798 boundarySeg_t boundarySeg;
806 uint32_t *eccWorkzone;
827 typedef uint8_t (*
bimSignFnPtr_t)(uint8_t, uint32_t, uint32_t, uint8_t *, uint8_t *, ecdsaSigVerifyBuf_t *);
uint32_t _sign_fnPtr
Variable for Pointer to BIM Function.
Definition: oad_image_header.h:758