/* * @Description: * @Version: 2.0 * @Author: Seven * @Date: 2022-11-22 10:52:19 * @LastEditors: Seven * @LastEditTime: 2022-12-05 13:54:37 */ #ifndef __OTA_DISPLAY_H__ #define __OTA_DISPLAY_H__ #include "stm32f10x.h" #include "tools.h" extern uint32_t XSP_OTA_VER; #define OTA_XSP_PACK_LEN 64 //显示屏升级时单包最大长度 #define XSP_BOOT_ADDR 0x08000000 //存放 bootloader 的区域起始地址 #define XSP_BOOT_SIZE 0x4000 //存放 bootloader 的区域长度 #define XSP_APPL_ADDR 0x08004000 //用户程序起始地址 #define XSP_APPL_SIZE 0xE000 //用户程序长度 #define XSP_APPH_ADDR 0x08012000 //用户程序起始地址 #define XSP_APPH_SIZE 0xE000 //用户程序长度 #define XSP_CFG_ADDR 0x08020000 //用户配置区域起始地址 #define XSP_CFG_SIZE 0x1000 //用户配置区域长度 #define XSP_USER_DATA_ADDR 0x08021000 //用户数据区域起始地址 #define XSP_USER_DATA_SIZE 0x1F000 //用户数据区域长度 extern uint32_t XSPL_addr,XSPL_len,XSPA_len; extern uint16_t XSP_crc; extern uint32_t XSPL_APP_Addr,XSPL_APP_Len,XSPL_APP_Crc,XSPH_APP_Addr,XSPH_APP_Len,XSPH_APP_Crc; extern uint8_t XSP_update_state[10]; #define XSP_OTA_TOTAL_TIME (5*60*1000)//5MIN //升级包信息 typedef struct _ota_xsp_pack_info { uint8_t protver; //协议版本 uint32_t app3_startaddr; //app3内程序的起始地址 uint32_t startaddr; //显示屏开始地址 uint32_t update_ver; //升级包版本 uint32_t total_bytes; //总字节 uint16_t single_byte; //单包最大字节 uint16_t total_pkgs; //总包数 uint16_t total_crc; //总校验 uint16_t sub_pkg_id; //当前包编号 // timeout_t tt_uart_timeout; //串口超时定时器 timeout_t tt_total; //总定时器 }ota_xsp_pack_info_t; extern ota_xsp_pack_info_t ota_xsp_pack_info; //单个显示屏信息 typedef struct _single_xsp_info { uint32_t xsp_type; //显示屏设备类型 uint32_t xsp_sn; //显示屏sn }__attribute__((packed)) single_xsp_info_t; //单个采集器的信息 typedef struct _single_coll_info { uint32_t coll_type; //采集器设备类型 uint32_t coll_sn; //采集器sn uint32_t xsp_num; //显示屏个数 single_xsp_info_t xsp_info[8]; //显示屏sn }__attribute__((packed)) single_coll_info_t; //显示屏升级信息 typedef struct _xsp_ota_info { uint32_t coll_num; //采集器个数 single_coll_info_t coll_xsp[16]; //采集器信息 }xsp_ota_info_t; void xsp_ota_start(void); void xsp_ota_over(void); void ota_xsp_info_read_test(void); uint8_t check_route_xsp_ota(void); uint16_t xsp_update_crc(uint32_t start, uint32_t len); void ota_xsp_init(void); void ota_xsp_send(void); void get_xsp_ota_info(uint32_t addr, uint32_t len); uint8_t rcv_iap_0x01_handle(void *data); void lora_xsp_ota_updatestate_resp(uint8_t updatestate); void xsp_update_handle(void); #endif