This commit is contained in:
huxi
2025-12-03 11:12:34 +08:00
parent c23ae4f24c
commit bc195654bf
8163 changed files with 3799544 additions and 92 deletions
@@ -0,0 +1,216 @@
#ifndef __UPDATE_MAIN_H__
#define __UPDATE_MAIN_H__
#include "typedef.h"
#include "tff.h"
extern u32 UPDATE_BEG;
extern u32 UPDATA_SIZE;
#define UART_UPDATE_FLAG_ADDR (u32)(&UPDATE_BEG)
#define UPDATE_FLAG_ADDR ((u32)(&UPDATE_BEG) + 0x8)
#define UPDATE_PRIV_PARAM_LEN 32
#define UPDATA_MAGIC (0x5A00) //防止CRC == 0 的情况
// #define SEEK_SET 0 #<{(| Seek from beginning of file. |)}>#
// #define SEEK_CUR 1 #<{(| Seek from current position. |)}>#
// #define SEEK_END 2 #<{(| Seek from end of file. |)}>#
//给SDK的升级结果
typedef enum {
UPDATA_NON = UPDATA_MAGIC,
UPDATA_READY,
UPDATA_SUCCESSFULLY,
UPDATA_PARM_ERR,
UPDATA_DEV_ERR,
UPDATA_KEY_ERR,
} UPDATA_RESULT_TO_SDK;
//区分是否跳转还是断电重新上电进入loader
typedef enum {
UPDATE_JUMP = 0,
UPDATE_POWERON,
} UPDATE_MODE;
typedef enum {
UPDATE_PARM,
UPDATE_START,
UPDATE_END,
} UPDATE_STEP;
typedef enum {
UPDATE_READ_TOUT_PARM = UPDATE_END + 1, // 根据远端ini文件的配合更新读超时时间
UPDATE_SDK_BEGIN_PARM, // 开始升级
} UPDATE_INI;
typedef enum {
USB_UPDATA = UPDATA_MAGIC, //0x5A00
SD0_UPDATA, //0x5A01
SD1_UPDATA,
PC_UPDATA,
UART_UPDATA,
BT_UPDATA,
BLE_APP_UPDATA,
SPP_APP_UPDATA,
DUAL_BANK_UPDATA,
BLE_TEST_UPDATA,
NORFLASH_UPDATA,
// BLE_UPDATA,
USER_NORFLASH_UFW_UPDATA,
USER_LC_FLASH_UFW_UPDATA,
USB_HID_UPDATA,
DEV_NORFLASH_UFW_UPDATA,
NET_UFW_UPDATA,
USER_NANDFLASH_UFW_UPDATA,
TESTBOX_UART_UPDATA,
UPDIFF_FLASH_UPDATA,
COMBAK_FLASH_UPDATA,
DEV_UPDATA_MAX,
DEV_UPDATE = 0xFFFE,
NON_DEV_UPDATA = 0xFFFF,
} UPDATA_TYPE;
enum EXT_ARG_TYPE {
EXT_LDO_TRIM_RES = 0,
EXT_JUMP_FLAG,
EXT_BT_MAC_ADDR,
EXT_RF_PA_INFO,
EXT_RESERVED_UPDATE, // 用于sdk传入参数控制是否升级预留区域
EXT_RESET_TIME_WITHOUT_CONN, // 用于sdk传入未连接状态保持多久就重启的超时时间
EXT_SD_IO_INFO,
EXT_BT_WLA_INFO,
EXT_MUTIL_UPDATE_NAME = 0x8,
EXT_USER_API_BIN_INFO,
EXT_NEW_SDK_UPD_AGAIN,
EXT_NEW_FILENAME,
EXT_KEEP_ROMIO_INFO = 0x10,
EXT_NAND_PARAM = 0x11,
EXT_SYS_CLK_PARAM = 0x12,
EXT_TYPE_MAX = 0xff,
};
typedef enum _UPDATA_RESULT {
UPDATA_RESULT_SUCC = 1,
UPDATA_RESULT_FAIL,
UPDATA_RESULT_KEY_ERR,
} UPDATA_RESULT;
//回报给测试盒的?
enum {
BT_UPDATE_OVER = 0,
BT_UPDATE_KEY_ERR,
BT_UPDATE_CONNECT_ERR,
};
enum {
UPDATE_ERR_NONE = 0,
UPDATE_ERR_UFW_HEAD_CRC_ERR,
UPDATE_ERR_NOT_FIND_LOADER_FILE,
UPDATE_ERR_NOT_FIND_TARGET_LOADER,
UPDATE_ERR_LOADER_HEAD_CRC_ERR = 4,
UPDATE_ERR_MALLOC_ERR,
UPDATE_ERR_LOADER_WRITE_ERR,
UPDATE_ERR_FILE_HANDLE_ERR,
UPDATE_ERR_LOADER_VERIFY_ERR = 8,
UPDATE_ERR_NOT_FIND_FLASH_BIN,
UPDATE_ERR_FLASH_HEAD_CRC_ERR,
UPDATE_ERR_NOT_FIND_TARGET_FILE,
UPDATE_ERR_KEY_ERR = 12,
UPDATE_ERR_UBOOT_NOT_MATCH,
UPDATE_ERR_READ_REMOTE_FILE_ERR,
UPDATE_ERR_REMOTE_RES_FILE_CRC_ERR,
UPDATE_ERR_CODE_VERIFY_ERR = 16,
UPDATE_ERR_RES0_VERIFY_ERR,
UPDATE_ERR_NOT_FIND_RESERVE_DIR_FILE,
UPDATE_ERR_LOCAL_FILE_HEAD_CRC_ERR,
UPDATE_ERR_LOCAL_FILE_DATA_CRC_ERR = 20,
UPDATE_ERR_PARAM_ERR,
UPDATE_ERR_BT_CFG_UPDATE_ERR,
UPDATE_ERR_TONE_UPDATE_ERR,
UPDATE_ERR_RESERVED_CONFIG_UPDATE_ERR = 24,
UPDATE_ERR_PRODUCT_ID_NOT_MATCH,
UPDATE_ERR_EX_DSP_UPDATE_ERR,
UPDATE_ERR_CONN_ERR,
UPDATE_ERR_ERASE_FAIL = 28,
UPDATE_ERR_UPDATE_FILE_SIZE_ERR,
UPDATE_ERR_ANC_CFG_UPDATE_ERR,
UPDATE_ERR_ANC_COEF_UPDATE_ERR,
UPDATE_ERR_RESERVED_ZONE_UPDATE_ERR = 32,
// 可以把错误更加具体化
UPDATE_ERR_FLASH_ID_ERR,
UPDATE_ERR_CHIP_ID_ERR,
UPDATE_ERR_EFUSE_OVERWRITE_ERR,
UPDATE_ERR_EFUSE_BT_NAME_ERR,
UPDATE_ERR_EFUSE_CHANNEL_ERR,
UPDATE_ERR_ISD_CONFIG_ERR,
UPDATE_ERR_LOCAL_EFUSE_CRC_ERR,
UPDATE_ERR_LOCAL_EFUSE_WRITE_ERR,
UPDATE_ERR_WRITE_P11_CODE_ERR,
UPDATE_ERR_EFUSE_MASKROM_USE2_WRITE_ERR,
};
//for rcsp update
enum {
DEV_CONN_STATE_DISCONNECTED = 0,
DEV_CONN_STATE_CONNECTED,
DEV_CONN_STATE_READY_UPDATE,
DEV_CONN_STATE_START_UPDATE,
};
typedef struct _UPDATA_PARM {
u16 parm_crc;
u16 parm_type; //UPDATA_TYPE:sdk pass parm to uboot
u16 parm_result; //UPDATA_TYPE:uboot return result to sdk
u16 magic;
u8 file_patch[32];
u8 parm_priv[32];
u32 ota_addr;
u16 ext_arg_len;
u16 ext_arg_crc;
} UPDATA_PARM;
typedef struct _update_op_api_t {
int (*ch_init)(void (*resume_hdl)(void *priv), int (*sleep_hdl)(void *priv));
u16(*f_open)(void);
u16(*f_read)(void *fp, u8 *buff, u32 len);
int (*f_seek)(void *fp, u8 type, u32 offset);
u16(*f_stop)(u8 err);
int (*notify_update_content_size)(u32 size);
void (*ch_exit)(void *priv);
void *priv;
} update_op_api_t;
typedef struct _update_mode_info_t {
s32 type;
void (*state_cbk)(u32 status, void *priv);
const update_op_api_t *file_op;
u8 task_en;
} update_mode_info_t;
void update_main();
void set_updata_result(u16 type, u16 result);
u8 fs_update_result_transition(u8 err);
extern u32 fs_dev_mount(u16 dev_type);
void update_reset(void);
u8 *update_param_ext_get(UPDATA_PARM *p, u8 ext_type);
void *dev_update_handle_get(void);
void mutil_cpu_set_offset(u32 offset);
#endif