62 lines
1.7 KiB
C
62 lines
1.7 KiB
C
#ifndef __FW_H__
|
|
#define __FW_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
enum fw_code
|
|
{
|
|
FW_CODE_OK = 0,
|
|
FW_OTA_INIT_ERR, //ota初始化错误
|
|
FW_CODE_LEN_TOO_SHORT, // 数据长度太短
|
|
FW_ID_CHECKSUM_ERR, //客户id校验错误
|
|
FW_HEAD_CHECK_ERR, //头校验错误
|
|
FW_OUT_OFF_ORDER_ERR, //ota长度超过配置的长度
|
|
FW_VERIFY_ERR, //写入校验错误
|
|
FW_END_ERR, //ota结束回写校验码错误
|
|
};
|
|
|
|
#define fw_ota_dbg(fmt, ...) //os_printf(fmt, ##__VA_ARGS__)
|
|
|
|
/* The OTA marker and marker size are only applicable to huge-ic chips. */
|
|
#define OTA_FLASH_MARKER 0x5A69
|
|
#define OTA_FLASH_MARKER_SIZE 2
|
|
#define OTA_VERIFY_READ_BUF_SIZE 256
|
|
|
|
/* OTA info */
|
|
struct ota_fwinfo {
|
|
struct spi_nor_flash *flash0;
|
|
uint32 addr0;
|
|
struct spi_nor_flash *flash1;
|
|
uint32 addr1;
|
|
};
|
|
|
|
/* OTA control */
|
|
struct ota_ctrl {
|
|
struct ota_fwinfo ota_info;
|
|
struct spi_nor_flash *p_flash;
|
|
uint32 base_addr;
|
|
uint32 local_off;
|
|
uint32 marker;
|
|
uint32 earse_locate;
|
|
uint8 verify_read_buf[OTA_VERIFY_READ_BUF_SIZE];
|
|
};
|
|
|
|
extern int32 libota_write_fw_ah(uint32 tot_len, uint32 off, uint8 *data, uint16 len);
|
|
extern int32 libotaV2_write_fw(uint32 tot_len, uint8 is_once_earse, uint8 isSector, uint8 isVerify, uint32 off, uint8 *data, uint16 len);
|
|
extern int32 ota_fwinfo_get(struct ota_fwinfo *pinfo);
|
|
|
|
#ifdef TXW4002ACK803
|
|
#define libota_write_fw(tot_len,off,data,len) libota_write_fw_ah(tot_len,off,data,len)
|
|
#else
|
|
#define libota_write_fw(tot_len,off,data,len) libotaV2_write_fw(tot_len,0,0,0,off,data,len)
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|