b_mod_iap
详细介绍:
https://gitee.com/notrynohigh/BabyOS/wikis/BabyOS固件升级功能
数据结构
/**
* IAP状态,IAP介绍文档中有状态的切换路径
*/
#define B_IAP_STA_NULL (0)
#define B_IAP_STA_START (1)
#define B_IAP_STA_READY (2)
#define B_IAP_STA_FINISHED (3)
#define IS_IAP_STA(s) \
(((s) == B_IAP_STA_NULL) || ((s) == B_IAP_STA_START) || ((s) == B_IAP_STA_READY) || \
((s) == B_IAP_STA_FINISHED))
#define B_IAP_FILENAME_LEN (64) // 固件名的长度限制
#define B_IAP_FAIL_COUNT (3) // 固件失败的次数限制
#define B_IAP_BACKUP_EN (0x55) // 备份固件功能启用的标志
#define B_IAP_BACKUP_VALID (0xAA) // 存在有效备份固件的标志
typedef struct
{
char name[B_IAP_FILENAME_LEN]; // 固件名,限制在64个字符
uint32_t version; // 固件版本号
uint32_t len; // 固件长度
uint32_t crc; // 固件数据的校验值
uint32_t crc_type; // CRC类型,参考algorithm/inc/algo_crc.h
} bIapFwInfo_t;
typedef struct
{
uint8_t flag; // 备份标志,0xAA表示存在有效备份
uint32_t fcrc; // 备份区固件的crc32校验值
uint32_t second; // 运行多少秒后进行备份
} bIapBackupInof_t;
typedef struct
{
int stat;
int fail_count;
uint32_t cache_dev;
uint32_t backup_dev;
bIapFwInfo_t info;
bIapBackupInof_t backup;
uint32_t percentage;
uint32_t fcrc; //crc
} bIapFlag_t;