1*4882a593Smuzhiyun #ifndef DEFINE_HEADER 2*4882a593Smuzhiyun #define DEFINE_HEADER 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun typedef unsigned int u_int32; 5*4882a593Smuzhiyun typedef unsigned char u_int8; 6*4882a593Smuzhiyun typedef unsigned char BYTE; 7*4882a593Smuzhiyun typedef signed char CHAR; 8*4882a593Smuzhiyun typedef BYTE *PBYTE; 9*4882a593Smuzhiyun typedef unsigned char UCHAR; 10*4882a593Smuzhiyun typedef unsigned short WCHAR; 11*4882a593Smuzhiyun typedef unsigned short USHORT; 12*4882a593Smuzhiyun typedef unsigned int UINT; 13*4882a593Smuzhiyun typedef unsigned int DWORD; 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun typedef char tchar; 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define LBA_TRANSFER_SIZE 16*1024 18*4882a593Smuzhiyun #define LBA_LOOP_SIZE 1024*1024 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #define MAX_PACKAGE_FILES 16 21*4882a593Smuzhiyun #define RKIMAGE_TAG 0x46414B52 22*4882a593Smuzhiyun #define PARTNAME_BOOTLOADER "bootloader" 23*4882a593Smuzhiyun #define PARTNAME_PARAMETER "parameter" 24*4882a593Smuzhiyun #define PARTNAME_KERNEL "kernel" 25*4882a593Smuzhiyun #define PARTNAME_BOOT "boot" 26*4882a593Smuzhiyun #define PARTNAME_RECOVERY "recovery" 27*4882a593Smuzhiyun #define PARTNAME_SYSTEM "system" 28*4882a593Smuzhiyun #define PARTNAME_MISC "misc" 29*4882a593Smuzhiyun #define PARTNAME_BACKUP "backup" 30*4882a593Smuzhiyun #define PARTNAME_USERDATA "userdata" 31*4882a593Smuzhiyun #define PARTNAME_USER "user" 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #define MAX_MANUFACTURER 60 34*4882a593Smuzhiyun #define MAX_MACHINE_INFO 30 35*4882a593Smuzhiyun #define MAX_MACHINE_MODEL 34 36*4882a593Smuzhiyun #define RELATIVE_PATH 60 37*4882a593Smuzhiyun #define PART_NAME 32 38*4882a593Smuzhiyun #define IMAGE_RESERVED_SIZE 61 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun typedef enum 41*4882a593Smuzhiyun { 42*4882a593Smuzhiyun RKNONE_DEVICE=0, 43*4882a593Smuzhiyun RK27_DEVICE=0x10, 44*4882a593Smuzhiyun RKCAYMAN_DEVICE, 45*4882a593Smuzhiyun RK28_DEVICE=0x20, 46*4882a593Smuzhiyun RK281X_DEVICE, 47*4882a593Smuzhiyun RKPANDA_DEVICE, 48*4882a593Smuzhiyun RKNANO_DEVICE=0x30, 49*4882a593Smuzhiyun RKSMART_DEVICE, 50*4882a593Smuzhiyun RKCROWN_DEVICE=0x40, 51*4882a593Smuzhiyun RK29_DEVICE=0x50, 52*4882a593Smuzhiyun RK292X_DEVICE, 53*4882a593Smuzhiyun RK30_DEVICE=0x60, 54*4882a593Smuzhiyun RK30B_DEVICE, 55*4882a593Smuzhiyun RK31_DEVICE=0x70, 56*4882a593Smuzhiyun RK32_DEVICE=0x80 57*4882a593Smuzhiyun }ENUM_RKDEVICE_TYPE; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun typedef enum 60*4882a593Smuzhiyun { 61*4882a593Smuzhiyun RK_OS=0, 62*4882a593Smuzhiyun ANDROID_OS=0x1 63*4882a593Smuzhiyun }ENUM_OS_TYPE; 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun #pragma pack(1) 66*4882a593Smuzhiyun typedef struct 67*4882a593Smuzhiyun { 68*4882a593Smuzhiyun char name[PART_NAME];// �������� 69*4882a593Smuzhiyun char file[RELATIVE_PATH];// ���·��������ȡ�ļ�ʱ�õ� 70*4882a593Smuzhiyun unsigned int part_size;//����ռ�������� 71*4882a593Smuzhiyun unsigned int offset;// �ļ���Image�е�ƫ�� 72*4882a593Smuzhiyun unsigned int flash_offset;// ��д��Flash�е�λ��(��sectorΪ��λ) 73*4882a593Smuzhiyun unsigned int usespace;// �ļ�ռ�ÿռ䣨��PAGE����) 74*4882a593Smuzhiyun unsigned int size;// �ֽ�����ʵ���ļ���С 75*4882a593Smuzhiyun }STRUCT_RKIMAGE_ITEM,*PSTRUCT_RKIMAGE_ITEM; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun typedef struct 78*4882a593Smuzhiyun { 79*4882a593Smuzhiyun USHORT usYear; 80*4882a593Smuzhiyun BYTE ucMonth; 81*4882a593Smuzhiyun BYTE ucDay; 82*4882a593Smuzhiyun BYTE ucHour; 83*4882a593Smuzhiyun BYTE ucMinute; 84*4882a593Smuzhiyun BYTE ucSecond; 85*4882a593Smuzhiyun }STRUCT_RKTIME,*PSTRUCT_RKTIME; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun typedef struct 88*4882a593Smuzhiyun { 89*4882a593Smuzhiyun char szItemName[20]; 90*4882a593Smuzhiyun UINT uiItemOffset; 91*4882a593Smuzhiyun UINT uiItemSize; 92*4882a593Smuzhiyun }STRUCT_PARAM_ITEM,*PSTRUCT_PARAM_ITEM; 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun typedef struct 95*4882a593Smuzhiyun { 96*4882a593Smuzhiyun char szItemName[20]; 97*4882a593Smuzhiyun char szItemValue[256]; 98*4882a593Smuzhiyun }STRUCT_CONFIG_ITEM,*PSTRUCT_CONFIG_ITEM; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun typedef struct 101*4882a593Smuzhiyun { 102*4882a593Smuzhiyun UINT uiTag; 103*4882a593Smuzhiyun USHORT usSize; 104*4882a593Smuzhiyun DWORD dwVersion; 105*4882a593Smuzhiyun DWORD dwMergeVersion; 106*4882a593Smuzhiyun STRUCT_RKTIME stReleaseTime; 107*4882a593Smuzhiyun ENUM_RKDEVICE_TYPE emSupportChip; 108*4882a593Smuzhiyun DWORD dwBootOffset; 109*4882a593Smuzhiyun DWORD dwBootSize; 110*4882a593Smuzhiyun DWORD dwFWOffset; 111*4882a593Smuzhiyun DWORD dwFWSize; 112*4882a593Smuzhiyun BYTE reserved[IMAGE_RESERVED_SIZE]; 113*4882a593Smuzhiyun }STRUCT_RKIMAGE_HEAD,*PSTRUCT_RKIMAGE_HEAD; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun typedef struct tagRKIMAGE_HDR 116*4882a593Smuzhiyun { 117*4882a593Smuzhiyun unsigned int tag; 118*4882a593Smuzhiyun unsigned int size;// �ļ���С������ĩβ��CRCУ���� 119*4882a593Smuzhiyun char machine_model[MAX_MACHINE_MODEL]; 120*4882a593Smuzhiyun char machine_info[MAX_MACHINE_INFO]; 121*4882a593Smuzhiyun char manufacturer[MAX_MANUFACTURER]; 122*4882a593Smuzhiyun unsigned int dwFWVer; 123*4882a593Smuzhiyun int item_count; 124*4882a593Smuzhiyun STRUCT_RKIMAGE_ITEM item[MAX_PACKAGE_FILES]; 125*4882a593Smuzhiyun }STRUCT_RKIMAGE_HDR,*PSTRUCT_RKIMAGE_HDR; 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun #pragma pack() 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun #endif 130