hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#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