Заголовочный файл констант spare_head.h
// work mode
#define WORK_MODE_PRODUCT (1<<4)
#define WORK_MODE_UPDATE (1<<5)
#define WORK_MODE_BOOT 0x00 //normal boot mode
#define WORK_MODE_USB_PRODUCT 0x10 //usb product mode
#define WORK_MODE_CARD_PRODUCT 0x11 //card burn mode
#define WORK_MODE_USB_DEBUG 0x12 //some test mode by usb
// efex protocol
#define WORK_MODE_SPRITE_RECOVERY 0x13 //update firmware from internal
// backup part
#define WORK_MODE_CARD_UPDATE 0x14 //update firmware from sdcard
#define WORK_MODE_USB_UPDATE 0x20 //usb update mode
#define WORK_MODE_UDISK_UPDATE 0x15
#define WORK_MODE_OUTER_UPDATE 0x21
#define WORK_MODE_USB_TOOL_PRODUCT 0x04
#define WORK_MODE_USB_TOOL_UPDATE 0x08
#define WORK_MODE_ERASE_KEY 0x20
#define UBOOT_MAGIC "uboot"
#define STAMP_VALUE 0x5F0A6C39
#define ALIGN_SIZE 16 * 1024
#define MAGIC_SIZE 8
#define STORAGE_BUFFER_SIZE (256)
#define PARAMETER_MAGIC "para"
#define BOOT_PARAMETER_SIZE (4094*2)
#define SUNXI_UPDATE_NEXT_ACTION_NORMAL (1)
#define SUNXI_UPDATE_NEXT_ACTION_REBOOT (2)
#define SUNXI_UPDATE_NEXT_ACTION_SHUTDOWN (3)
#define SUNXI_UPDATE_NEXT_ACTION_REUPDATE (4)
#define SUNXI_UPDATE_NEXT_ACTION_BOOT (5)
#define SUNXI_UPDATA_NEXT_ACTION_SPRITE_TEST (6)
#define SUNXI_DEBUG_MODE_FLAG (0x59)
#define SUNXI_EFEX_CMD_FLAG (0x5A)
#define SUNXI_BOOT_RESIGNATURE_FLAG (0x5B)
#define SUNXI_BOOT_RECOVERY_FLAG (0x5C)
#define SUNXI_SYS_RECOVERY_FLAG (0x5D)
#define SUNXI_USB_RECOVERY_FLAG (0x5E)
#define SUNXI_FASTBOOT_FLAG (0x5F)
#define SUNXI_UBOOT_FLAG (0x60)
#define SUNXI_VBUS_UNKNOWN (0)
#define SUNXI_VBUS_EXIST (1)
#define SUNXI_VBUS_NOT_EXIST (2)
#define BOOT0_SDMMC_START_ADDR (16)
#define BOOT0_SDMMC_BACKUP_START_ADDR (256)
#define BOOT0_EMMC3_START_ADDR (384)
#define BOOT0_EMMC3_BACKUP_START_ADDR (512)
#define UBOOT_START_SECTOR_IN_SDMMC (32800)
#define UBOOT_BACKUP_START_SECTOR_IN_SDMMC (24576)
#define SUNXI_NORMAL_MODE 0
#define SUNXI_SECURE_MODE_WITH_SECUREOS 1
#define SUNXI_SECURE_MODE_NO_SECUREOS 2
#define SUNXI_RUN_CRASHDUMP_RESET_FLAG (0x5AA55AA5)
#define SUNXI_RUN_CRASHDUMP_RESET_READY (0x5AA55AA6)
#define SUNXI_RUN_CRASHDUMP_REFRESH_READY (0x5AA55AA7)
#define SUNXI_DTB_OFFSET (2<<20)
#define SUNXI_DTBO_OFFSET (1<<20)
typedef enum _SUNXI_BOOT_FILE_MODE
{
SUNXI_BOOT_FILE_NORMAL =0,
SUNXI_BOOT_FILE_TOC = 1,
SUNXI_BOOT_FILE_RES0 = 2,
SUNXI_BOOT_FILE_RES1 = 3,
SUNXI_BOOT_FILE_PKG = 4
}SUNXI_BOOT_FILE_MODE;
#define BOOT_FROM_SD0 0
#define BOOT_FROM_NFC 1
#define BOOT_FROM_SD2 2
#define BOOT_FROM_SPI_NOR 3
#define BOOT_FROM_SPI_NAND 4
#define SUNXI_SECURE_MODE_USE_SEC_MONITOR 1
#define TOC_ITEM_ENTRY_STATUS_ENCRYP_NOT_USED 0x00
#define TOC_ITEM_ENTRY_STATUS_ENCRYP_USED 0x01
#define TOC_ITEM_ENTRY_TYPE_NULL 0x00
#define TOC_ITEM_ENTRY_TYPE_KEY_CERTIF 0x01
#define TOC_ITEM_ENTRY_TYPE_BIN_CERTIF 0x02
#define TOC_ITEM_ENTRY_TYPE_BIN 0x03
#define TOC_ITEM_ENTRY_TYPE_LOGO 0x04
typedef struct _normal_gpio_cfg
{
char port; // port : PA/PB/PC ...
char port_num; // internal port num: PA00/PA01 ...
char mul_sel; // function num: input/output/io-disalbe ...
char pull; // pull-up/pull-down/no-pull
char drv_level; // driver level: level0-3
char data; // pin state when the port is configured
// as input or output
char reserved[2];
}
normal_gpio_cfg;
typedef struct _special_gpio_cfg
{
unsigned char port; // port : PA/PB/PC ...
unsigned char port_num; // intern port num: PA00/PA01 ..
char mul_sel; // function num: input/output/io-disalbe ...
char data; // pin state when the port is configured
// as input or output
}special_gpio_cfg;
typedef struct sdcard_spare_info_t
{
int card_no[4]; //controller num
int speed_mode[4]; //speed mode: 0--low speed, other--high speed
int line_sel[4]; //line mode: 1/4/8
int line_count[4]; //line count
}
sdcard_spare_info;
typedef enum
{
STORAGE_NAND =0,
STORAGE_SD,
STORAGE_EMMC,
STORAGE_NOR,
STORAGE_EMMC3,
STORAGE_SPI_NAND,
STORAGE_SD1,
}SUNXI_BOOT_STORAGE;