KT25-0812_82A-UART/include_lib/update/update.h
2025-08-12 18:09:23 +08:00

107 lines
2.4 KiB
C
Raw Permalink 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 _UPDATE_H_
#define _UPDATE_H_
#include "typedef.h"
extern u32 UPDATA_BEG;
#define UPDATA_FLAG_ADDR ((void *)((u32)&UPDATA_BEG + 0x08))
#define BOOT_STATUS_ADDR ((void *)((u32)&UPDATA_BEG)) //预留8个bytes
#define UPDATA_MAGIC (0x5A00) //防止CRC == 0 的情况
typedef enum {
UPDATA_NON = UPDATA_MAGIC,
UPDATA_READY,
UPDATA_SUCC,
UPDATA_PARM_ERR,
UPDATA_DEV_ERR,
UPDATA_KEY_ERR,
} UPDATA_RESULT;
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,
NON_DEV = 0xFFFF,
} UPDATA_TYPE;
// sd
enum {
SD_CONTROLLER_0 = 1,
SD_CONTROLLER_1,
};
enum {
SD0_IO_A = 1,
SD0_IO_B,
SD1_IO_A,
SD1_IO_B,
SD0_IO_C,
SD0_IO_D,
SD0_IO_E,
SD0_IO_F,
};
typedef struct _UPDATA_SD {
u8 control_type;
u8 control_io;
u8 online_check_way;
u8 max_data_baud;
u16 wDevTimeOutMax;
u8 per_online_status;
u8 hc_mode;
u8(*io_det_func)(void);
u8 power;
} UPDATA_SD;
// uart
typedef struct _UPDATA_UART {
u32 control_io_tx; //<IO口对接
u32 control_io_rx; //<IO口对接
u32 control_baud; //<波特率
u32 control_timeout; //<超时单位10ms
} UPDATA_UART; /*共12个bytes*/
#define UPDATE_PARAM_MAGIC 0x5441
#if (USE_SDFILE_NEW == 1)
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; //0x5441
u8 file_patch[32]; //updata file patch
u8 parm_priv[32]; //sd updata
u32 ota_addr;
u16 ext_arg_len;
u16 ext_arg_crc;
} UPDATA_PARM;
#else
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
u8 file_patch[32]; //updata file patch
u8 parm_priv[32]; //sd updata
} UPDATA_PARM;
#endif
#define UPDATE_PRIV_PARAM_LEN 32
void update_mode_api(UPDATA_TYPE type, ...);
u16 update_result_get(void);
bool device_is_first_start();
int update_result_deal();
void update_result_set(u16 result);
bool update_success_boot_check(void);
#endif