2025-05-10 21:49:39 +08:00

130 lines
2.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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