main.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "gd32f10x.h"
  2. #include "main.h"
  3. #include "delay.h"
  4. #include "fmc.h"
  5. #include "ota_message.h"
  6. #include "gd_ota_flash.h"
  7. #include "ec800.h"
  8. #include "boot.h"
  9. #include "w25q32.h"
  10. #include <stdlib.h>
  11. void task_fwdgt_reload(void);
  12. OTA_STRUCT UpDataA; //A区更新用到的结构体
  13. int main(void)
  14. {
  15. Delay_Init();
  16. soft_init();
  17. OTA_MESSAGE *ota_data;
  18. BOOT_MESSAGE current_message;
  19. GD32_READ_OTA(&current_message);
  20. Delay_Ms(100);
  21. if(current_message.UP_FLAG==1)
  22. {
  23. //启动EC800,读取内部文件信息进行升级
  24. gd_com_init();
  25. dma_config();
  26. gd_EC800M_pin_init();
  27. EC800MPwoerOn();
  28. EC800MWaitReady();
  29. EC800MSetPDP();
  30. // //EC800启动完成读出文件信息开始更新程序
  31. // if(read_bin_txt()==1)//成功
  32. // {
  33. // //更新完毕程序将升级标志清楚
  34. // current_message.UP_FLAG=0;
  35. // write_soft_version(&current_message);
  36. // LOAD_A(GD32_A_SADDR);
  37. // }
  38. // else
  39. // {
  40. // NVIC_SystemReset();
  41. // }
  42. switch(read_bin_txt())
  43. {
  44. case 1://成功
  45. current_message.UP_FLAG=0;
  46. write_soft_version(&current_message);
  47. LOAD_A(GD32_A_SADDR);
  48. break;
  49. case 2:
  50. LOAD_A(GD32_A_SADDR);
  51. break;//bin文件不存在
  52. default:
  53. NVIC_SystemReset();
  54. break;//其他情况
  55. }
  56. }
  57. else
  58. {
  59. LOAD_A(GD32_A_SADDR);
  60. }
  61. // if(load_ota_message_config_params()==0)
  62. // {
  63. // //ota事件产生了,进入Bootloader分支
  64. // ota_data=get_config_params();
  65. // BootLoader_Brance(ota_data->XmodemByte);
  66. // }
  67. // //没有OTA事件产生跳转A区
  68. // else
  69. // {
  70. // LOAD_A(GD32_A_SADDR);
  71. // }
  72. current_message.UP_FLAG=1;
  73. write_soft_version(&current_message);
  74. NVIC_SystemReset();
  75. while(1)
  76. {
  77. }
  78. }
  79. void task_fwdgt_reload(void)
  80. {
  81. /* uncock fwdgt write protect*/
  82. fwdgt_write_enable();
  83. /* feed fwdgt */
  84. fwdgt_counter_reload();
  85. }