110 lines
4.8 KiB
C
110 lines
4.8 KiB
C
|
#ifndef _CONFIG_INFO_H_
|
|||
|
#define _CONFIG_INFO_H_
|
|||
|
|
|||
|
#include "comm_types.h"
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
#pragma pack(push,1)
|
|||
|
|
|||
|
#define EXT_FLASH_SECTOR_SIZE (1024*4)
|
|||
|
#define EXT_FLASH_BLOCK_NUM (0)
|
|||
|
#define EXT_FLASH_BLOCK_NUM_1 (1)
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC>flash<73><68><EFBFBD><EFBFBD>ʱʹ<CAB1>õĵ<C3B5>ַ<EFBFBD><D6B7>Ϣ
|
|||
|
#define UPGRADE_FLASH_BUFF_BEGIN_ADDR (1024*1024*1)//1M-2M
|
|||
|
#define UPGRADE_FLASH_BUFF_END_ADDR (1024*1024*2-1)
|
|||
|
#define UPGRADE_FLASH_BUFF_SIZE (1024*1024*1)
|
|||
|
#define UPGRADE_FLASH_BUFF_BEGIN_BLOCK (UPGRADE_FLASH_BUFF_BEGIN_ADDR / Flash_BLOCKBYTE_LENGTH)
|
|||
|
|
|||
|
//bootloader<65><72>ַ<EFBFBD><D6B7>Ϣ
|
|||
|
#define BOOTLOADER_ADDR_BEGIN (0)
|
|||
|
#define BOOTLOADER_ADDR_END (1024*58-1)
|
|||
|
#define BOOTLOADER_SECTOR_BEGIN (BOOTLOADER_ADDR_BEGIN / ON_CHIP_FLASH_SECTOR_SIZE) //Bootloader<65><72>ʼsector
|
|||
|
|
|||
|
//Ӧ<>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>Ϣ
|
|||
|
#define APP_ADDR_BEGIN (1024*64)
|
|||
|
#define APP_ADDR_END (1024*500-1)//500k
|
|||
|
#define APP_SECTOR_BEGIN (APP_ADDR_BEGIN / ON_CHIP_FLASH_SECTOR_SIZE) //Ӧ<>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>ʼsector
|
|||
|
|
|||
|
//<2F><>ȫ֤<C8AB><D6A4><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>Ϣ--<2D><><EFBFBD><EFBFBD>w25q128<32><38>
|
|||
|
#define CERT_ADDR_BEGIN (1024*4*2)//0block 2sector(4k) <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>1sector
|
|||
|
#define CERT_ADDR_END (1024*4*3-1)
|
|||
|
#define CERT_SECTOR_BEGIN (CERT_ADDR_BEGIN / EXT_FLASH_SECTOR_SIZE)//<2F><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>оƬ֤<C6AC><D6A4>
|
|||
|
|
|||
|
//<2F><>Կ<EFBFBD><D4BF>ַ<EFBFBD><D6B7>Ϣ--<2D><><EFBFBD><EFBFBD>w25q128<32><38>
|
|||
|
#define KEY_ADDR_BEGIN (1024*4*4)//0block 4sector(4k) <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>3sector
|
|||
|
#define KEY_ADDR_END (1024*4*5-1)
|
|||
|
#define KEY_SECTOR_BEGIN (KEY_ADDR_BEGIN / EXT_FLASH_SECTOR_SIZE)//<2F><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>оƬ<D0BE><C6AC>Կ
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ַ<EFBFBD><D6B7>Ϣ--<2D><><EFBFBD><EFBFBD>w25q128<32><38>
|
|||
|
#define CFG_FILE_ADDR_BEGIN (1024*4*6)//0block 6sector(4k) <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>5sector
|
|||
|
#define CFG_FILE_ADDR_END (1024*4*7-1)
|
|||
|
#define CFG_FILE_SECTOR_BEGIN (CFG_FILE_ADDR_BEGIN / EXT_FLASH_SECTOR_SIZE)//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
|||
|
//Ӧ<>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>洢<EFBFBD><E6B4A2>ַ<EFBFBD><D6B7>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD>ǰ2<C7B0><32>sector<6F><72><EFBFBD><EFBFBD>
|
|||
|
#define APP_PKG_HEAD_BEGIN (APP_ADDR_BEGIN - ON_CHIP_FLASH_SECTOR_SIZE)
|
|||
|
#define APP_PKG_HEAD_END (APP_ADDR_BEGIN-1)
|
|||
|
#define APP_PKG_HEAD_SECTOR_BEGIN (APP_PKG_HEAD_BEGIN/ON_CHIP_FLASH_SECTOR_SIZE)//ͷ<>洢<EFBFBD><E6B4A2>sector
|
|||
|
#define APP_PGK_HEAD ((hy_release_file_head*)APP_PKG_HEAD_BEGIN)
|
|||
|
|
|||
|
//<2F><>ȫ֤<C8AB><D6A4><EFBFBD><EFBFBD>ͷ<EFBFBD>洢<EFBFBD><E6B4A2>ַ<EFBFBD><D6B7>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>оƬ<D0BE><C6AC>ȫ֤<C8AB><D6A4>ǰ1<C7B0><31>sector<6F><72><EFBFBD><EFBFBD>
|
|||
|
#define CERT_HEAD_BEGIN (CERT_ADDR_BEGIN - EXT_FLASH_SECTOR_SIZE)
|
|||
|
#define CERT_HEAD_END (CERT_ADDR_BEGIN-1)
|
|||
|
#define CERT_HEAD_SECTOR_BEGIN (CERT_HEAD_BEGIN/EXT_FLASH_SECTOR_SIZE)//ͷ<>洢<EFBFBD><E6B4A2>sector
|
|||
|
|
|||
|
//<2F><>Կ<EFBFBD><D4BF>ͷ<EFBFBD>洢<EFBFBD><E6B4A2>ַ<EFBFBD><D6B7>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կǰ2<C7B0><32>sector<6F><72><EFBFBD><EFBFBD>
|
|||
|
#define KEY_HEAD_BEGIN (KEY_ADDR_BEGIN - EXT_FLASH_SECTOR_SIZE)
|
|||
|
#define KEY_HEAD_END (KEY_ADDR_BEGIN-1)
|
|||
|
#define KEY_HEAD_SECTOR_BEGIN (KEY_HEAD_BEGIN/EXT_FLASH_SECTOR_SIZE)//ͷ<>洢<EFBFBD><E6B4A2>sector
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ͷ<EFBFBD>洢<EFBFBD><E6B4A2>ַ<EFBFBD><D6B7>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ǰ2<C7B0><32>sector<6F><72><EFBFBD><EFBFBD>
|
|||
|
#define CFG_FILE_HEAD_BEGIN (CFG_FILE_ADDR_BEGIN - EXT_FLASH_SECTOR_SIZE)
|
|||
|
#define CFG_FILE_HEAD_END (CFG_FILE_ADDR_BEGIN-1)
|
|||
|
#define CFG_FILE_HEAD_SECTOR_BEGIN (CFG_FILE_HEAD_BEGIN/EXT_FLASH_SECTOR_SIZE)//ͷ<>洢<EFBFBD><E6B4A2>sector
|
|||
|
|
|||
|
#define HY_RELEASE_FILE_FLAG (*((u_int32_t *)"HYPK"))
|
|||
|
|
|||
|
#define HY_PKG_TYPE_APP 1 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>application<6F><6E>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD>
|
|||
|
#define HY_PKG_TYPE_BOOT_LOADER 2 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bootloader
|
|||
|
#define HY_PKG_TYPE_CERT 3 //<2F><><EFBFBD><EFBFBD>оƬ֤<C6AC><D6A4>
|
|||
|
#define HY_PKG_TYPE_PUB_KEY 4 //<2F><>Կ
|
|||
|
#define HY_PKG_TYPE_CFG_FILE 5 //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ͷ--------------------------------------------------------------------
|
|||
|
typedef struct _hy_release_file_head{
|
|||
|
u_int32_t flag; // 4byte <20><>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ"HYPK" <09><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ˿<D4B4>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ǷǷ<C7B7><C7B7>ļ<EFBFBD>
|
|||
|
u_int32_t head_len; //4byte ͷ<><CDB7><EFBFBD><EFBFBD> <09>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>"<22><>־"
|
|||
|
u_int8_t file_type; //1byte <09>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ͣ<EFBFBD>1 1<><31>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2:bootloader
|
|||
|
u_int16_t file_format_ver; //2byte <20>ļ<EFBFBD><C4BC><EFBFBD>ʽ<EFBFBD>汾<EFBFBD>ţ<EFBFBD>1 <09><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>ļ<EFBFBD><C4BC>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
u_int8_t hardware_type[2]; //2byte Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
u_int16_t hardware_ver; //2byte Ӳ<><D3B2><EFBFBD>汾 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>汾
|
|||
|
u_int32_t software_ver; //4byte <09><><EFBFBD><EFBFBD><EFBFBD>汾 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾
|
|||
|
u_int32_t data_len; //4byte <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ֽڵ<D6BD>crc
|
|||
|
u_int32_t addr; //4byte <20><>д<EFBFBD><D0B4>ַ
|
|||
|
u_int8_t head_checksum; //1byte ͷУ<CDB7><D0A3> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>checksum<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><>־"<22><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
u_int8_t data[1]; //<2F><><EFBFBD><EFBFBD>
|
|||
|
}hy_release_file_head;
|
|||
|
|
|||
|
#define RELEASE_PKG_HEAD_SIZE(x) ((char *)(&(x)->head_checksum) - (char *)(x) + sizeof(u_int8_t))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define RELEASE_PKG_CRC16(x) (*(u_int16_t *)(&((x)->data[(x)->data_len])))
|
|||
|
#define RELEASE_PKG_TOTAL_LEN(x) ((x)->data_len + RELEASE_PKG_HEAD_SIZE(x)+sizeof(u_int16_t))//<2F>ܳ<EFBFBD><DCB3><EFBFBD>
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BOOL get_cert1_from_file(void);
|
|||
|
BOOL get_key_from_file(void);
|
|||
|
BOOL get_system_config_from_file(void);
|
|||
|
BOOL write_file_to_ext_flash(hy_release_file_head *pkg_head);
|
|||
|
BOOL write_pack_head_to_ext_flash(hy_release_file_head *pkg_head);
|
|||
|
BOOL app_crc_OK(u_int8_t file_type);
|
|||
|
BOOL ext_flash_erase(hy_release_file_head *pkg_head);
|
|||
|
u_int8_t upgrade_pkg_head_checksum_OK(hy_release_file_head *pkg_head);
|
|||
|
BOOL pack_head_verify(u_int8_t file_type);
|
|||
|
void erase_ext_flash(u_int8_t block_begin,u_int32_t total_len);
|
|||
|
#pragma pack(pop)
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
#endif //_CONFIG_INFO_H_
|