#ifndef _IMG_HDR_H_ #define _IMG_HDR_H_ #include #define IMAGE_MAGIC 0x96f3b83d #define IMAGE_TLV_INFO_MAGIC 0x6907 #define IMAGE_TLV_PROT_INFO_MAGIC 0x6908 #define IMAGE_HEADER_SIZE 512 /** Image trailer TLV types. */ #define IMAGE_TLV_SHA256 0x10 /* SHA256 of image hdr and body */ /** Image TLV-specific definitions. */ #define IMAGE_HASH_LEN 32 #define SYMBOL_SECTION(_name) __attribute__ ((__section__(_name))) __attribute__ ((used)) #define IMG_HDR_SECTION SYMBOL_SECTION(".img.header") struct image_version { uint8_t iv_major; uint8_t iv_minor; uint16_t iv_revision; uint32_t iv_build_num; }; /** Image header. All fields are in little endian byte order. */ struct img_hdr { uint32_t ih_magic; uint32_t ih_load_addr; uint16_t ih_hdr_size; /* Size of image header (bytes). */ uint16_t _pad2; uint32_t ih_img_size; /* Does not include header. */ uint32_t ih_flags; /* IMAGE_F_[...]. */ struct image_version ih_ver; uint32_t _pad3; uint32_t checksum; uint8_t padding[508-IMAGE_HASH_LEN]; }; #endif // _IMG_HDR_H_