130 lines
2.9 KiB
C
130 lines
2.9 KiB
C
#ifndef DEFINE_HEADER
|
||
#define DEFINE_HEADER
|
||
|
||
typedef unsigned int u_int32;
|
||
typedef unsigned char u_int8;
|
||
typedef unsigned char BYTE;
|
||
typedef signed char CHAR;
|
||
typedef BYTE *PBYTE;
|
||
typedef unsigned char UCHAR;
|
||
typedef unsigned short WCHAR;
|
||
typedef unsigned short USHORT;
|
||
typedef unsigned int UINT;
|
||
typedef unsigned int DWORD;
|
||
|
||
typedef char tchar;
|
||
|
||
#define LBA_TRANSFER_SIZE 16*1024
|
||
#define LBA_LOOP_SIZE 1024*1024
|
||
|
||
#define MAX_PACKAGE_FILES 16
|
||
#define RKIMAGE_TAG 0x46414B52
|
||
#define PARTNAME_BOOTLOADER "bootloader"
|
||
#define PARTNAME_PARAMETER "parameter"
|
||
#define PARTNAME_KERNEL "kernel"
|
||
#define PARTNAME_BOOT "boot"
|
||
#define PARTNAME_RECOVERY "recovery"
|
||
#define PARTNAME_SYSTEM "system"
|
||
#define PARTNAME_MISC "misc"
|
||
#define PARTNAME_BACKUP "backup"
|
||
#define PARTNAME_USERDATA "userdata"
|
||
#define PARTNAME_USER "user"
|
||
|
||
#define MAX_MANUFACTURER 60
|
||
#define MAX_MACHINE_INFO 30
|
||
#define MAX_MACHINE_MODEL 34
|
||
#define RELATIVE_PATH 60
|
||
#define PART_NAME 32
|
||
#define IMAGE_RESERVED_SIZE 61
|
||
|
||
typedef enum
|
||
{
|
||
RKNONE_DEVICE=0,
|
||
RK27_DEVICE=0x10,
|
||
RKCAYMAN_DEVICE,
|
||
RK28_DEVICE=0x20,
|
||
RK281X_DEVICE,
|
||
RKPANDA_DEVICE,
|
||
RKNANO_DEVICE=0x30,
|
||
RKSMART_DEVICE,
|
||
RKCROWN_DEVICE=0x40,
|
||
RK29_DEVICE=0x50,
|
||
RK292X_DEVICE,
|
||
RK30_DEVICE=0x60,
|
||
RK30B_DEVICE,
|
||
RK31_DEVICE=0x70,
|
||
RK32_DEVICE=0x80
|
||
}ENUM_RKDEVICE_TYPE;
|
||
|
||
typedef enum
|
||
{
|
||
RK_OS=0,
|
||
ANDROID_OS=0x1
|
||
}ENUM_OS_TYPE;
|
||
|
||
#pragma pack(1)
|
||
typedef struct
|
||
{
|
||
char name[PART_NAME];// 分区名称
|
||
char file[RELATIVE_PATH];// 相对路径名,提取文件时用到
|
||
unsigned int part_size;//分区占用扇区数
|
||
unsigned int offset;// 文件在Image中的偏移
|
||
unsigned int flash_offset;// 烧写到Flash中的位置(以sector为单位)
|
||
unsigned int usespace;// 文件占用空间(按PAGE对齐)
|
||
unsigned int size;// 字节数,实际文件大小
|
||
}STRUCT_RKIMAGE_ITEM,*PSTRUCT_RKIMAGE_ITEM;
|
||
|
||
typedef struct
|
||
{
|
||
USHORT usYear;
|
||
BYTE ucMonth;
|
||
BYTE ucDay;
|
||
BYTE ucHour;
|
||
BYTE ucMinute;
|
||
BYTE ucSecond;
|
||
}STRUCT_RKTIME,*PSTRUCT_RKTIME;
|
||
|
||
typedef struct
|
||
{
|
||
char szItemName[20];
|
||
UINT uiItemOffset;
|
||
UINT uiItemSize;
|
||
}STRUCT_PARAM_ITEM,*PSTRUCT_PARAM_ITEM;
|
||
|
||
typedef struct
|
||
{
|
||
char szItemName[20];
|
||
char szItemValue[256];
|
||
}STRUCT_CONFIG_ITEM,*PSTRUCT_CONFIG_ITEM;
|
||
|
||
typedef struct
|
||
{
|
||
UINT uiTag;
|
||
USHORT usSize;
|
||
DWORD dwVersion;
|
||
DWORD dwMergeVersion;
|
||
STRUCT_RKTIME stReleaseTime;
|
||
ENUM_RKDEVICE_TYPE emSupportChip;
|
||
DWORD dwBootOffset;
|
||
DWORD dwBootSize;
|
||
DWORD dwFWOffset;
|
||
DWORD dwFWSize;
|
||
BYTE reserved[IMAGE_RESERVED_SIZE];
|
||
}STRUCT_RKIMAGE_HEAD,*PSTRUCT_RKIMAGE_HEAD;
|
||
|
||
typedef struct tagRKIMAGE_HDR
|
||
{
|
||
unsigned int tag;
|
||
unsigned int size;// 文件大小,不含末尾的CRC校验码
|
||
char machine_model[MAX_MACHINE_MODEL];
|
||
char machine_info[MAX_MACHINE_INFO];
|
||
char manufacturer[MAX_MANUFACTURER];
|
||
unsigned int dwFWVer;
|
||
int item_count;
|
||
STRUCT_RKIMAGE_ITEM item[MAX_PACKAGE_FILES];
|
||
}STRUCT_RKIMAGE_HDR,*PSTRUCT_RKIMAGE_HDR;
|
||
|
||
#pragma pack()
|
||
|
||
#endif
|