ota_display.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * @Description:
  3. * @Version: 2.0
  4. * @Author: Seven
  5. * @Date: 2022-11-22 10:52:19
  6. * @LastEditors: Seven
  7. * @LastEditTime: 2022-12-05 13:54:37
  8. */
  9. #ifndef __OTA_DISPLAY_H__
  10. #define __OTA_DISPLAY_H__
  11. #include "stm32f10x.h"
  12. #include "tools.h"
  13. extern uint32_t XSP_OTA_VER;
  14. #define OTA_XSP_PACK_LEN 64 //显示屏升级时单包最大长度
  15. #define XSP_BOOT_ADDR 0x08000000 //存放 bootloader 的区域起始地址
  16. #define XSP_BOOT_SIZE 0x4000 //存放 bootloader 的区域长度
  17. #define XSP_APPL_ADDR 0x08004000 //用户程序起始地址
  18. #define XSP_APPL_SIZE 0xE000 //用户程序长度
  19. #define XSP_APPH_ADDR 0x08012000 //用户程序起始地址
  20. #define XSP_APPH_SIZE 0xE000 //用户程序长度
  21. #define XSP_CFG_ADDR 0x08020000 //用户配置区域起始地址
  22. #define XSP_CFG_SIZE 0x1000 //用户配置区域长度
  23. #define XSP_USER_DATA_ADDR 0x08021000 //用户数据区域起始地址
  24. #define XSP_USER_DATA_SIZE 0x1F000 //用户数据区域长度
  25. extern uint32_t XSPL_addr,XSPL_len,XSPA_len;
  26. extern uint16_t XSP_crc;
  27. extern uint32_t XSPL_APP_Addr,XSPL_APP_Len,XSPL_APP_Crc,XSPH_APP_Addr,XSPH_APP_Len,XSPH_APP_Crc;
  28. extern uint8_t XSP_update_state[10];
  29. #define XSP_OTA_TOTAL_TIME (5*60*1000)//5MIN
  30. //升级包信息
  31. typedef struct _ota_xsp_pack_info
  32. {
  33. uint8_t protver; //协议版本
  34. uint32_t app3_startaddr; //app3内程序的起始地址
  35. uint32_t startaddr; //显示屏开始地址
  36. uint32_t update_ver; //升级包版本
  37. uint32_t total_bytes; //总字节
  38. uint16_t single_byte; //单包最大字节
  39. uint16_t total_pkgs; //总包数
  40. uint16_t total_crc; //总校验
  41. uint16_t sub_pkg_id; //当前包编号
  42. // timeout_t tt_uart_timeout; //串口超时定时器
  43. timeout_t tt_total; //总定时器
  44. }ota_xsp_pack_info_t;
  45. extern ota_xsp_pack_info_t ota_xsp_pack_info;
  46. //单个显示屏信息
  47. typedef struct _single_xsp_info
  48. {
  49. uint32_t xsp_type; //显示屏设备类型
  50. uint32_t xsp_sn; //显示屏sn
  51. }__attribute__((packed)) single_xsp_info_t;
  52. //单个采集器的信息
  53. typedef struct _single_coll_info
  54. {
  55. uint32_t coll_type; //采集器设备类型
  56. uint32_t coll_sn; //采集器sn
  57. uint32_t xsp_num; //显示屏个数
  58. single_xsp_info_t xsp_info[8]; //显示屏sn
  59. }__attribute__((packed)) single_coll_info_t;
  60. //显示屏升级信息
  61. typedef struct _xsp_ota_info
  62. {
  63. uint32_t coll_num; //采集器个数
  64. single_coll_info_t coll_xsp[16]; //采集器信息
  65. }xsp_ota_info_t;
  66. void xsp_ota_start(void);
  67. void xsp_ota_over(void);
  68. void ota_xsp_info_read_test(void);
  69. uint8_t check_route_xsp_ota(void);
  70. uint16_t xsp_update_crc(uint32_t start, uint32_t len);
  71. void ota_xsp_init(void);
  72. void ota_xsp_send(void);
  73. void get_xsp_ota_info(uint32_t addr, uint32_t len);
  74. uint8_t rcv_iap_0x01_handle(void *data);
  75. void lora_xsp_ota_updatestate_resp(uint8_t updatestate);
  76. void xsp_update_handle(void);
  77. #endif