|
Packit |
857059 |
/* BEGIN_ICS_COPYRIGHT7 ****************************************
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Copyright (c) 2015-2017, Intel Corporation
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Redistribution and use in source and binary forms, with or without
|
|
Packit |
857059 |
modification, are permitted provided that the following conditions are met:
|
|
Packit |
857059 |
|
|
Packit |
857059 |
* Redistributions of source code must retain the above copyright notice,
|
|
Packit |
857059 |
this list of conditions and the following disclaimer.
|
|
Packit |
857059 |
* Redistributions in binary form must reproduce the above copyright
|
|
Packit |
857059 |
notice, this list of conditions and the following disclaimer in the
|
|
Packit |
857059 |
documentation and/or other materials provided with the distribution.
|
|
Packit |
857059 |
* Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
857059 |
may be used to endorse or promote products derived from this software
|
|
Packit |
857059 |
without specific prior written permission.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
857059 |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
857059 |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
Packit |
857059 |
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
Packit |
857059 |
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit |
857059 |
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
Packit |
857059 |
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
Packit |
857059 |
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
Packit |
857059 |
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
Packit |
857059 |
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
** END_ICS_COPYRIGHT7 ****************************************/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* [ICS VERSION STRING: unknown] */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#ifndef ICS_IMAGE_HEADER_H_INCLUDED
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_H_INCLUDED
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/*
|
|
Packit |
857059 |
icsImageHeader.h
|
|
Packit |
857059 |
|
|
Packit |
857059 |
This include file defines the Ics Image Header file format, which is
|
|
Packit |
857059 |
designed to be prepended to a loadable image, e.g. an ELF file.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
The header is composed of records, each of which has a type field, a
|
|
Packit |
857059 |
size field, and a payload. The size field indicates the size of the
|
|
Packit |
857059 |
payload in bytes. Many record types may be defined, and may occur
|
|
Packit |
857059 |
in the actual header in any order, except that the first record in
|
|
Packit |
857059 |
the header must be the Info record, and the last record in the
|
|
Packit |
857059 |
header must be the Terminator record.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
The endianness of the image header is the endianness of the target
|
|
Packit |
857059 |
system - i.e. the endianness of the system that the attached image
|
|
Packit |
857059 |
is to be loaded on.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
*/
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#include <stdio.h>
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#if defined(VXWORKS)
|
|
Packit |
857059 |
#include "vxWorks.h"
|
|
Packit |
857059 |
#else
|
|
Packit |
857059 |
#include <stdint.h>
|
|
Packit |
857059 |
#define UINT8 uint8_t
|
|
Packit |
857059 |
#define UINT32 uint32_t
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_INFO 0x49435301 /* file magic number - 'I' 'C' 'S' 0x01 */
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_INFO_WRONG_ENDIAN 0x01534349 /* what you would see in the wrong endian */
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_MD5 1
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_TERMINATOR 2
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_VXWORKSIMAGETYPE 3
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_CBC_FILE_INFO 4
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_MBC_FILE_INFO 5
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_ACM_FILE_INFO 6
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_XIO_FPGA_CFG 7
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_RECORD_TYPE_Q7IMAGETYPE 8
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_VERSION_SIZE 20
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_FILE_VERSION_SIZE 40
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_FILE_INFO_FLAG_NONE 0
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_FILE_INFO_FLAG_GZIPPED 1
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_FILE_INFO_FLAG_VXDEFLATED 2
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE(record_name) (sizeof(IcsImageHeader_##record_name##Payload_t))
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE_INFO ICS_IMAGE_HEADER_PAYLOAD_SIZE(Info)
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE_MD5 ICS_IMAGE_HEADER_PAYLOAD_SIZE(Md5)
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE_TERMINATOR ICS_IMAGE_HEADER_PAYLOAD_SIZE(Terminator)
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE_VXWORKSIMAGETYPE ICS_IMAGE_HEADER_PAYLOAD_SIZE(VxWorksImageType)
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE_CBC_FILE_INFO ICS_IMAGE_HEADER_PAYLOAD_SIZE(FileInfo)
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE_MBC_FILE_INFO ICS_IMAGE_HEADER_PAYLOAD_SIZE(FileInfo)
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE_ACM_FILE_INFO ICS_IMAGE_HEADER_PAYLOAD_SIZE(FileInfo)
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE_XIO_FPGA_CFG ICS_IMAGE_HEADER_PAYLOAD_SIZE(XioFpgaCfgType)
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_PAYLOAD_SIZE_Q7IMAGETYPE ICS_IMAGE_HEADER_PAYLOAD_SIZE(q7ImageType)
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_ENUM_VXWORKSIMAGETYPE_BOOTROM 1
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_ENUM_VXWORKSIMAGETYPE_LOADABLE 2
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_ENUM_Q7IMAGETYPE_BIOS 3
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_ENUM_Q7IMAGETYPE_BOARD_CONTROLLER 4
|
|
Packit |
857059 |
#define ICS_IMAGE_HEADER_ENUM_XIO_FPGA_CFG_SUBTYPE 1
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct IcsImageHeaderInfoPayloadStruct {
|
|
Packit |
857059 |
UINT32 productCode;
|
|
Packit |
857059 |
UINT32 bspCode;
|
|
Packit |
857059 |
char version[ICS_IMAGE_HEADER_VERSION_SIZE];
|
|
Packit |
857059 |
UINT32 headerSize;
|
|
Packit |
857059 |
UINT32 recordCount;
|
|
Packit |
857059 |
UINT32 imageSize;
|
|
Packit |
857059 |
} __attribute__ ((packed)) IcsImageHeader_InfoPayload_t ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef UINT8 IcsImageHeader_Md5Payload_t[16];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct IcsImageHeaderTerminatorPayloadStruct {
|
|
Packit |
857059 |
UINT32 recordCount;
|
|
Packit |
857059 |
} __attribute__ ((packed)) IcsImageHeader_TerminatorPayload_t ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef UINT32 IcsImageHeader_VxWorksImageTypePayload_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef UINT32 IcsImageHeader_XioFpgaCfgTypePayload_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef UINT32 IcsImageHeader_q7ImageTypePayload_t;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct FileInfoPayloadStruct {
|
|
Packit |
857059 |
UINT32 offset;
|
|
Packit |
857059 |
UINT32 size;
|
|
Packit |
857059 |
UINT32 flags;
|
|
Packit |
857059 |
char version[ICS_IMAGE_HEADER_FILE_VERSION_SIZE];
|
|
Packit |
857059 |
} __attribute__ ((packed)) IcsImageHeader_FileInfoPayload_t ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
typedef struct IcsImageHeaderRecordStruct {
|
|
Packit |
857059 |
UINT32 type;
|
|
Packit |
857059 |
UINT32 size;
|
|
Packit |
857059 |
union IcsImageHeaderRecordPayloadUnion {
|
|
Packit |
857059 |
IcsImageHeader_InfoPayload_t info;
|
|
Packit |
857059 |
IcsImageHeader_Md5Payload_t md5;
|
|
Packit |
857059 |
IcsImageHeader_TerminatorPayload_t terminator;
|
|
Packit |
857059 |
IcsImageHeader_VxWorksImageTypePayload_t vxWorksImageType;
|
|
Packit |
857059 |
IcsImageHeader_FileInfoPayload_t fileInfo;
|
|
Packit |
857059 |
IcsImageHeader_XioFpgaCfgTypePayload_t xioFpgaCfgType;
|
|
Packit |
857059 |
IcsImageHeader_q7ImageTypePayload_t q7ImageType;
|
|
Packit |
857059 |
} payload;
|
|
Packit |
857059 |
} __attribute__ ((packed)) IcsImageHeader_Record_t ;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#endif /* ICS_IMAGE_HEADER_H_INCLUDED */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|