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 #define SIGN_FN_PTR 0x57fa0 138 extern uint32_t _sign_fnPtr; 151 #define OAD_IMG_TYPE_PERSISTENT_APP 0 158 #define OAD_IMG_TYPE_APP 1 165 #define OAD_IMG_TYPE_STACK 2 173 #define OAD_IMG_TYPE_APP_STACK 3 181 #define OAD_IMG_TYPE_NP 4 189 #define OAD_IMG_TYPE_FACTORY 5 197 #define OAD_IMG_TYPE_BIM 6 207 #define OAD_IMG_TYPE_APPSTACKLIB 7 214 #define OAD_IMG_TYPE_RSVD_BEGIN 64 221 #define OAD_IMG_TYPE_RSVD_END 255 233 #define OAD_WIRELESS_TECH_BLE 0xFFFE 238 #define OAD_WIRELESS_TECH_TIMAC_SUBG 0xFFFD 243 #define OAD_WIRELESS_TECH_TIMAC_2_4G 0xFFFB 248 #define OAD_WIRELESS_TECH_ZIGBEE 0xFFF7 253 #define OAD_WIRELESS_TECH_RF4CE 0xFFEF 258 #define OAD_WIRELESS_TECH_THREAD 0xFFDF 263 #define OAD_WIRELESS_TECH_PROPRF 0xFFBF 268 #define OAD_WIRELESS_TECH_MIOTY 0xFF7F 273 #define OAD_WIRELESS_TECH_WBMS 0xFEFF 277 #if defined(DeviceFamily_CC26X2) || defined (DeviceFamily_CC26X2_V2) || \ 278 defined(DeviceFamily_CC26X2X7) || defined(DeviceFamily_CC26X1) 279 #define OAD_IMG_ID_VAL {'C', 'C', '2', '6', 'x', '2', 'R', '1'} 280 #elif defined (DeviceFamily_CC13X2) || \ 281 defined (DeviceFamily_CC13X2X7) || \ 282 defined (DeviceFamily_CC13X1) || \ 283 defined (DeviceFamily_CC13X2_V1) || \ 284 defined (DeviceFamily_CC13X2_V2) 285 #define OAD_IMG_ID_VAL {'C', 'C', '1', '3', 'x', '2', 'R', '1'} 286 #elif defined (DeviceFamily_CC13X4) 287 #define OAD_IMG_ID_VAL {'C', 'C', '1', '3', 'x', '4', ' ', ' '} 288 #elif defined (DeviceFamily_CC26X3) 289 #define OAD_IMG_ID_VAL {'C', 'C', '2', '6', 'x', '3', ' ', ' '} 290 #elif defined (DeviceFamily_CC26X4) 291 #define OAD_IMG_ID_VAL {'C', 'C', '2', '6', 'x', '4', ' ', ' '} 292 #elif defined (DeviceFamily_CC26X0R2) 293 #define OAD_IMG_ID_VAL {'O', 'A', 'D', ' ', 'I', 'M', 'G', ' '} 294 #elif defined (DOXYGEN) 305 #define OAD_IMG_ID_VAL 307 #error "Unknown Device Family" 308 #endif //DeviceFamily_CC26X2 318 #define OAD_EXTFL_ID_VAL {'O', 'A', 'D', ' ', 'N', 'V', 'M', '1'} 329 #define CRC_OFFSET offsetof(imgHdr_t, fixedHdr.crc32) 334 #define BIM_VER_OFFSET offsetof(imgHdr_t, fixedHdr.bimVer) 340 #define IMG_DATA_OFFSET BIM_VER_OFFSET 345 #define IMG_INFO_OFFSET offsetof(imgHdr_t, fixedHdr.imgCpStat) 350 #define IMG_COPY_STAT_OFFSET IMG_INFO_OFFSET 355 #define CRC_STAT_OFFSET offsetof(imgHdr_t, fixedHdr.crcStat) 360 #define IMG_TYPE_OFFSET offsetof(imgHdr_t, fixedHdr.imgType) 365 #define IMG_VALIDATION_OFFSET offsetof(imgHdr_t, fixedHdr.imgVld) 370 #define BOUNDARY_SEG_OFFSET offsetof(imgHdr_t, fixedHdr.segTypeBd) 375 #define SEG_LEN_OFFSET 4 382 #define SEG_SIGERINFO_OFFSET offsetof(imgHdr_t, secInfoSeg.secSignerInfo) 387 #define SEG_SIGNR_OFFSET offsetof(imgHdr_t, secInfoSeg.eccSign.sign_r) 392 #define SEG_SIGNS_OFFSET offsetof(imgHdr_t, secInfoSeg.eccSign.sign_s) 397 #define SEC_VERIF_STAT_OFFSET offsetof(imgHdr_t, secInfoSeg.verifStat) 402 #define HDR_LEN_WITH_SECURITY_INFO offsetof(imgHdr_t, secInfoSeg.segTypeSecure) + sizeof(securityInfoSeg_t) 407 #define IMG_START_ADDR_OFFSET offsetof(imgHdr_t, imgPayload.startAddr) 419 #define SEG_HDR_LEN 12 425 #define OAD_IMG_ID_LEN 8 430 #define OAD_SW_VER_LEN 4 435 #define OAD_IMG_HDR_LEN sizeof(imgFixedHdr_t) 448 #define IMG_BOUNDARY_SEG_ID 0x00 453 #define IMG_PAYLOAD_SEG_ID 0x01 459 #define IMG_NONCOUNT_SEG_ID 0x02 464 #define IMG_SECURITY_SEG_ID 0x03 469 #define OAD_IMG_FULL_HDR_LEN sizeof(imgHdr_t) 470 #define OAD_IMG_ID_LEN 8 471 #define OAD_SW_VER_LEN 4 473 #ifndef STACK_LIBRARY 474 #define BOUNDARY_SEG_LEN 0x18 476 #define SECURITY_SEG_LEN 0x55 478 #define IMG_COPY_STAT_OFFSET IMG_INFO_OFFSET 480 #define SEG_LEN_OFFSET 4 481 #define SIG_OFFSET offsetof(securityInfoSeg_t, eccSign.sign_r) 483 #define ECDSA_KEY_LEN 32 485 #define ECDSA_SHA_TEMPWORKZONE_LEN ECDSA_KEY_LEN*6 506 #define SECURITY_VER 0x1 511 #define DEFAULT_STATE 0xFF 517 #define CRC_VALID 0xFE 523 #define CRC_INVALID 0xFC 528 #define NEED_COPY 0xFE 533 #define COPY_DONE 0xFC 535 #ifdef BIM_DUAL_ONCHIP_IMAGE 540 #define VERIFY_PASS_CURRENT 0xFE 546 #define VERIFY_PASS_NOT_CURRENT 0xFC 552 #define VERIFY_FAIL 0xF8 559 #define VERIFY_FAIL 0xFC 561 #endif // BIM_DUAL_ONCHIP_IMAGE 566 #define VERIFY_PASS 0xFE 571 #define EFL_MATADATA_HDR_LEN OAD_IMG_HDR_LEN + 8 576 #define INVALID_ADDR 0xFFFFFFFF 581 #define INVALID_LEN INVALID_ADDR 586 #define DEFAULT_CRC 0xFFFFFFFF 588 #if defined(SECURITY) 592 #define SIGNER_INFO_SIZE 8 597 #define SIGNATURE_SIZE 64 605 #if defined (__IAR_SYSTEMS_ICC__) 606 #define TYPEDEF_STRUCT_PACKED __packed typedef struct 607 #elif defined __TI_COMPILER_VERSION || defined __TI_COMPILER_VERSION__ || __clang__ 608 #define TYPEDEF_STRUCT_PACKED typedef struct __attribute__((packed)) 609 #elif defined (__GNUC__) 610 #define TYPEDEF_STRUCT_PACKED typedef struct __attribute__((__packed__)) 614 #if defined(SECURITY) 618 TYPEDEF_STRUCT_PACKED
620 uint8_t signerInfo[SIGNER_INFO_SIZE];
621 uint8_t signature[SIGNATURE_SIZE];
622 }signPld_ECDSA_P256_t;
629 TYPEDEF_STRUCT_PACKED
655 TYPEDEF_STRUCT_PACKED
673 TYPEDEF_STRUCT_PACKED
698 TYPEDEF_STRUCT_PACKED
706 uint8_t secSignerInfo[8];
718 TYPEDEF_STRUCT_PACKED
721 #if (defined(SECURITY)) 724 #if (!defined(STACK_LIBRARY) && (defined(SPLIT_APP_STACK_IMAGE))) 730 TYPEDEF_STRUCT_PACKED
732 uint32_t *eccWorkzone;
733 uint8_t *SHAWorkzone;
734 uint8_t *tempWorkzone;
736 uint8_t SHADataBufLen;
737 } ecdsaSigVerifyBuf_t;
753 uint8_t *, ecdsaSigVerifyBuf_t *);
uint16_t hdrLen
Total length of the image header.
Definition: oad_image_header.h:645
uint32_t imgVld
Image validation bytes, used by BIM.
Definition: oad_image_header.h:640
uint16_t techType
Wireless protocol type BLE/TI-MAC/ZIGBEE etc.
Definition: oad_image_header.h:635
uint8_t segTypeSecure
Segment type - for Secuirty info payload.
Definition: oad_image_header.h:700
uint32_t ram0StartAddr
RAM entry start address.
Definition: oad_image_header.h:681
uint32_t startAddr
Start address of image on internal flash.
Definition: oad_image_header.h:661
uint32_t prgEntry
Program entry address.
Definition: oad_image_header.h:642
uint16_t wirelessTech
Wireless technology type.
Definition: oad_image_header.h:658
uint32_t crc32
Image's 32-bit CRC value.
Definition: oad_image_header.h:632
uint32_t ram0EndAddr
RAM entry end address.
Definition: oad_image_header.h:682
uint16_t rfu
Reserved bytes.
Definition: oad_image_header.h:646
uint8_t metaVer
Metadata version.
Definition: oad_image_header.h:634
uint8_t imgNo
Image number of 'image type'.
Definition: oad_image_header.h:639
uint16_t wirelessTech
Wireless technology type.
Definition: oad_image_header.h:676
uint8_t segTypeBd
Segment type - for boundary segment.
Definition: oad_image_header.h:675
uint32_t len
Image length in bytes.
Definition: oad_image_header.h:641
uint32_t boundarySegLen
Boundary segment length.
Definition: oad_image_header.h:678
uint8_t bimVer
BIM version.
Definition: oad_image_header.h:633
uint8_t secVer
Security version */.
Definition: oad_image_header.h:704
uint32_t stackStartAddr
Start address of stack image on internal flash.
Definition: oad_image_header.h:679
uint8_t crcStat
CRC status.
Definition: oad_image_header.h:637
uint8_t segTypeImg
Segment type - for Contiguous image payload.
Definition: oad_image_header.h:657
eccSignature_t eccSign
Security signature */.
Definition: oad_image_header.h:707
uint32_t stackEntryAddr
Stack start address.
Definition: oad_image_header.h:680
uint8_t imgType
Image Type.
Definition: oad_image_header.h:638
Definition: oad_image_header.h:673
imgPayloadSeg_t imgPayload
Required contiguous image segment.
Definition: oad_image_header.h:727
imgFixedHdr_t fixedHdr
Required core image header.
Definition: oad_image_header.h:720
uint32_t imgSegLen
Payload segment length.
Definition: oad_image_header.h:660
uint8_t imgCpStat
Image copy status.
Definition: oad_image_header.h:636
Definition: oad_image_header.h:687
Definition: oad_image_header.h:718
uint32_t secTimestamp
Security timestamp */.
Definition: oad_image_header.h:705
Definition: oad_image_header.h:629
Definition: oad_image_header.h:698
uint32_t secSegLen
Payload segment length.
Definition: oad_image_header.h:703
uint32_t imgEndAddr
Address of the last byte of a contiguous image.
Definition: oad_image_header.h:644
uint16_t wirelessTech
Wireless technology type.
Definition: oad_image_header.h:701
uint8_t verifStat
Verification status.
Definition: oad_image_header.h:702
uint8_t rfu
Reserved byte.
Definition: oad_image_header.h:677
uint8_t rfu
Reserved byte.
Definition: oad_image_header.h:659
Definition: oad_image_header.h:655