diff options
Diffstat (limited to 'src/occ/incl/common_types.h')
-rwxr-xr-x | src/occ/incl/common_types.h | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/src/occ/incl/common_types.h b/src/occ/incl/common_types.h new file mode 100755 index 0000000..6e1b791 --- /dev/null +++ b/src/occ/incl/common_types.h @@ -0,0 +1,225 @@ +/****************************************************************************** +// @file common_types.h +// @brief File containing OCC common defines +*/ +/****************************************************************************** + * + * @page ChangeLogs Change Logs + * @section _common_types_h common_types.h + * @verbatim + * + * Flag Def/Fea Userid Date Description + * ------- ---------- -------- ---------- ---------------------------------- + * TEAM 06/16/2010 Port + * @pb000 pbavari 07/07/2011 Added image_header structure and + * image macro + * @pb004 pbavari 09/14/2011 Added ssx_app_cfg.h for init sec + * defines + * @03 tapiar 10/03/2011 removed typedef from BOOLEAN type + * @04 dwoodham 12/12/2011 added aplt_id field to image_header + * @rc003 rickylie 02/03/2012 Verify & Clean Up OCC Headers & Comments + * @ai007 ailutsar 12/10/2012 Change OCC Image Header to reserve 64 bytes + * for SRAM Repair instead of 16 + * @th027 865085 thallet 12/21/2012 SRAM 'hack' to allow previous "16" HW scripts to work. + * @ai009 865968 ailutsar 01/09/2013 OCC Error log and trace parser web tool enhancement + * + * @endverbatim + * + *///*************************************************************************/ + +#ifndef _COMMON_TYPES_H +#define _COMMON_TYPES_H + +//************************************************************************* +// Includes +//************************************************************************* +#include <stdint.h> + +#ifdef USE_SSX_APP_CFG_H +#include <ssx_app_cfg.h> +#endif + +//************************************************************************* +// Externs +//************************************************************************* + +//************************************************************************* +// Macros +//************************************************************************* + +//************************************************************************* +// Defines/Enums +//************************************************************************* +typedef uint32_t UINT32; +typedef int32_t INT32; +typedef uint8_t UCHAR; +typedef uint8_t UINT8; +typedef int8_t INT8; +typedef uint16_t UINT16; +typedef int16_t INT16; +typedef char CHAR; +typedef unsigned int UINT; +typedef unsigned long ULONG; +typedef int INT; +typedef void VOID; +// @ai009c +// Skip this typedef in x86 environment +#ifndef OCC_X86_PARSER +typedef uint8_t bool; +#endif +//@pb000d - moved typedef uint32_t size_t to common.h due to type conflict + + + +/* Definition of FALSE and TRUE */ +#if !defined(FALSE) && !defined(TRUE) +typedef enum +{ + FALSE = 0, + TRUE +} BOOLEAN; +#endif + +#ifndef NULL +#define NULL (VOID *) 0 +#endif + +//@pb000a - start +#define MAIN_APP_ID "Main App Image\0" + +#define SRAM_REPAIR_RESERVE_SZ 64 // @ai007c +#define IMAGE_ID_STR_SZ 16 +#define RESERVED_SZ 14 // @04c +#define TRAP_INST 0x7FE00004 +#define ID_NUM_INVALID 0xFFFF // @04a sim. to OCC_APLT_INVALID + +// @04a Magic number set for applet headers // @ai007c Change data length +#define APLT_MAGIC_NUMBER {0x1A,0x2B,0x3C,0x4D, 0x5E,0x6F,0x7A,0x8B, 0x9C,0xAD,0xAE,0x9F, 0x8A,0x7B,0x6C,0x5D, 0x4E,0x3F,0x2A,0x1B,\ + 0x1A,0x2B,0x3C,0x4D, 0x5E,0x6F,0x7A,0x8B, 0x9C,0xAD,0xAE,0x9F, 0x8A,0x7B,0x6C,0x5D, 0x4E,0x3F,0x2A,0x1B,\ + 0x1A,0x2B,0x3C,0x4D, 0x5E,0x6F,0x7A,0x8B, 0x9C,0xAD,0xAE,0x9F, 0x8A,0x7B,0x6C,0x5D, 0x4E,0x3F,0x2A,0x1B, 0x12,0x34,0xAB,0xCD} +#define SRAM_HEADER_HACK 0x48000042 // @th027 +#ifndef __ASSEMBLER__ + +// Structure for the common image header +struct image_header +{ + // >@04c Overload sram_repair_reserved for magic applet number (thanks, Tim H.!) + // Note: unit64_t's don't compile when used w/IMAGE_HEADER macro. + union + { + struct + { + // @ai007c + uint32_t magic_1; // 0x1A2B3C4D + uint32_t magic_2; // 0x5E6F7A8B + uint32_t magic_3; // 0x9CADAE9F + uint32_t magic_4; // 0x8A7B6C5D + uint32_t magic_5; // 0x4E3F2A1B + uint32_t magic_6; // 0x1A2B3C4D + uint32_t magic_7; // 0x5E6F7A8B + uint32_t magic_8; // 0x9CADAE9F + uint32_t magic_9; // 0x8A7B6C5D + uint32_t magic_a; // 0x4E3F2A1B + uint32_t magic_b; // 0x1A2B3C4D + uint32_t magic_c; // 0x5E6F7A8B + uint32_t magic_d; // 0x9CADAE9F + uint32_t magic_e; // 0x8A7B6C5D + uint32_t magic_f; // 0x4E3F2A1B + uint32_t magic_10; // 0x1234ABCD + }; + uint8_t sram_repair_reserved[SRAM_REPAIR_RESERVE_SZ]; //reserved for HW use + }; + // <@04c + uint32_t ep_branch_inst; // entry point branch instruction for bootloader + uint32_t halt_inst; // halt instruction + uint32_t image_size; // image size including header + uint32_t start_addr; // image start address including header + uint32_t readonly_size; // readonly image size + uint32_t boot_writeable_addr; // boot writeable address + uint32_t boot_writeable_size; // boot writeable size + uint32_t zero_data_addr; // zero data address + uint32_t zero_data_size; // zero data size + uint32_t ep_addr; // entry point to the image + uint32_t checksum; // checksum of the image including header + uint32_t version; // image version + char image_id_str[IMAGE_ID_STR_SZ]; // image id string + uint16_t aplt_id; // @04a type: enum OCC_APLT + uint8_t reserved[RESERVED_SZ]; // reserved for future use +} __attribute__ ((__packed__)); + +typedef struct image_header imageHdr_t; + +extern uint32_t __READ_ONLY_DATA_LEN__; +extern uint32_t __WRITEABLE_DATA_ADDR__; +extern uint32_t __WRITEABLE_DATA_LEN__; +extern uint32_t __START_ADDR__; + + +// Macro for creating common image header +// NOTE: ep_branch_inst is defaulted to trap instruction. Script to fix +// header will change it to branch to address in ep_addr field. +// >@04c Init field sram_repair_reserved. Add field IdNum == aplt_id. +// >@ai007 Update magic number +#define IMAGE_HEADER(nameStr, epAddr, IdStr, IdNum) \ +const volatile imageHdr_t nameStr __attribute__((section("imageHeader")))= \ +{ \ + /* sram_repair_reserved values should match APLT_MAGIC_NUMBER for an applet; 0 otherwise */ \ + { \ + { \ + .magic_1 = (IdNum == ID_NUM_INVALID)?0:0x1A2B3C4D, \ + .magic_2 = (IdNum == ID_NUM_INVALID)?0:0x5E6F7A8B, \ + .magic_3 = (IdNum == ID_NUM_INVALID)?0:0x9CADAE9F, \ + .magic_4 = (IdNum == ID_NUM_INVALID)?0:0x8A7B6C5D, \ + .magic_5 = (IdNum == ID_NUM_INVALID)? SRAM_HEADER_HACK:0x4E3F2A1B, \ + .magic_6 = (IdNum == ID_NUM_INVALID)?0:0x1A2B3C4D, \ + .magic_7 = (IdNum == ID_NUM_INVALID)?0:0x5E6F7A8B, \ + .magic_8 = (IdNum == ID_NUM_INVALID)?0:0x9CADAE9F, \ + .magic_9 = (IdNum == ID_NUM_INVALID)?0:0x8A7B6C5D, \ + .magic_a = (IdNum == ID_NUM_INVALID)?0:0x4E3F2A1B, \ + .magic_b = (IdNum == ID_NUM_INVALID)?0:0x1A2B3C4D, \ + .magic_c = (IdNum == ID_NUM_INVALID)?0:0x5E6F7A8B, \ + .magic_d = (IdNum == ID_NUM_INVALID)?0:0x9CADAE9F, \ + .magic_e = (IdNum == ID_NUM_INVALID)?0:0x8A7B6C5D, \ + .magic_f = (IdNum == ID_NUM_INVALID)?0:0x4E3F2A1B, \ + .magic_10 = (IdNum == ID_NUM_INVALID)?0:0x1234ABCD, \ + } \ + }, \ + TRAP_INST, /* ep_branch_Inst */ \ + TRAP_INST, /* halt_inst */ \ + 0, /* image_size (filled in later by imageHdrScript) */ \ + (uint32_t)&__START_ADDR__, /* start_addr */ \ + (uint32_t)&__READ_ONLY_DATA_LEN__, /* readonly_size */ \ + (uint32_t)&__WRITEABLE_DATA_ADDR__, /* boot_writeable_addr */ \ + (uint32_t)&__WRITEABLE_DATA_LEN__, /* boot_writeable_size */ \ + 0, /* zero_data_addr (currently unused) */ \ + 0, /* zero data_size (currently unused) */ \ + (uint32_t)&epAddr, /* ep_addr */ \ + 0, /* checksum (calculated later by imsageHdrScript) */ \ + 0, /* version (filled in later by imageHdrScript) */ \ + IdStr, /* image_id_str */ \ + (uint16_t)IdNum, /* @04a aplt_id */ \ + {0} /* reserved */ \ +}; +// <@ai007 +// <@04c + +#endif /* __ASSEMBLER__ */ +//@pb000a - end + +//************************************************************************* +// Structures +//************************************************************************* + +//************************************************************************* +// Globals +//************************************************************************* + +//************************************************************************* +// Function Prototypes +//************************************************************************* + +//************************************************************************* +// Functions +//************************************************************************* + +#endif //_COMMON_TYPES_H |