main.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #ifndef MAIN_H
  2. #define MAIN_H
  3. #include "stdint.h"
  4. #include "cfg.h"
  5. //mod bus base addr
  6. #define MD_BASE_Addr (1500)
  7. //read
  8. #define MD_STATUS_Addr (1)
  9. //read not used
  10. #define MB_Boot_Loader_Version_Addr (1)
  11. #define MB_Boot_APP1_Version (2)
  12. #define MB_Boot_APP2_Version (3)
  13. #define MB_default_Start_Area (4) //defalut start and defalut app1
  14. #define MB_Last_Running_Area (5)
  15. #define MB_Last_Running_Error (6) //running error number
  16. #define MB_Upload_Status (7)
  17. #define MB_APP1_CRC (8)
  18. #define MB_APP2_CRC (9)
  19. //write
  20. #define MD_WRITE_Addr (50)
  21. #define MD_WRITE_Reset (51)
  22. //modbus register addr
  23. #define MD_READ_STATUS (MD_BASE_Addr + MD_STATUS_Addr)
  24. #define MD_WRIE_DATA (MD_BASE_Addr + MD_WRITE_Addr)
  25. //chache lenth
  26. #define MAX_LENTH (128)
  27. #define Mb_Wcmd_Width (8)
  28. //
  29. #define NOERROR (0)
  30. #define MAX_ERROR_COUNT (10)
  31. #define ERROR_VERSION (0XFFFFFFFF)
  32. #define UPGRADE_STATUS_IDE (1)
  33. #define UPGRADE_STATUS_ERASE_PROGRAME (2)
  34. #define UPGRADE_STATUS_WRITE_PROGRAME (3)
  35. #define UPGRADE_STATUS_ERASE_META (4)
  36. #define UPGRADE_STATUS_WTITE_META (5)
  37. #define UPGRADE_STATUS_FINISH (6)
  38. typedef int (*user_code)(void);
  39. enum{
  40. ONE = 0x00000001,
  41. SECOND
  42. };
  43. enum {
  44. FAILD = 0,
  45. SUCEESS,
  46. };
  47. typedef struct {
  48. int16_t index;
  49. uint16_t lenth;
  50. uint8_t recive[MAX_LENTH];
  51. }Flash_Data;
  52. typedef struct
  53. {
  54. uint8_t flag;
  55. uint16_t base_addr;
  56. Flash_Data flash_Data;
  57. }MD_DATA;
  58. typedef struct g_MD_Data{
  59. uint8_t count;
  60. MD_DATA data[Mb_Wcmd_Width];
  61. }g_MD_Data;
  62. typedef struct {
  63. char magic[14];
  64. uint16_t size;
  65. uint32_t patition;
  66. uint32_t version;
  67. }md_msg;
  68. typedef struct {
  69. char magic[14];
  70. uint16_t size;
  71. uint32_t patition;
  72. uint32_t version;
  73. uint32_t md5[8];
  74. }get_md_msg;
  75. typedef struct {
  76. uint16_t md_status; //current upgrade status
  77. uint8_t get_head_sucess_flag;
  78. uint8_t meta_erase_flag;
  79. uint8_t meta_write_sucesse_flag;
  80. uint8_t app_erase_flag;
  81. uint8_t app_write_sucessful_flag;
  82. uint8_t led_flash_flag;
  83. uint32_t start_app_addr;
  84. uint32_t erase_size;
  85. g_MD_Data md_data; //cache
  86. md_msg md_msg_head;
  87. META_DATA_S meta;
  88. }Upgrade;
  89. g_MD_Data* get_md_data();
  90. //md_msg* get_md_msg(Upgrade *upgrade);
  91. Upgrade *get_upgrade();
  92. uint8_t operation_ide(Upgrade *upgrade);
  93. uint8_t operation_erase_programe(Upgrade *upgrade);
  94. uint8_t operation_erase_meta(Upgrade *upgrade);
  95. void operation_pro_or_msg(Upgrade *upgrade,Flash_Data *data);
  96. uint8_t operation_write_meta(Upgrade *upgrade);
  97. void del_modbus_uart(void);
  98. void del_md_timer(void);
  99. #endif /* MAIN_H */