#include "gd32f10x.h" #include "main.h" #include "delay.h" #include "fmc.h" #include "ota_message.h" #include "gd_ota_flash.h" #include "ec800.h" #include "boot.h" #include "w25q32.h" #include void task_fwdgt_reload(void); OTA_STRUCT UpDataA; //A区更新用到的结构体 int main(void) { Delay_Init(); soft_init(); OTA_MESSAGE *ota_data; BOOT_MESSAGE current_message; GD32_READ_OTA(¤t_message); Delay_Ms(100); if(current_message.UP_FLAG==1) { //启动EC800,读取内部文件信息进行升级 gd_com_init(); dma_config(); gd_EC800M_pin_init(); EC800MPwoerOn(); EC800MWaitReady(); EC800MSetPDP(); // //EC800启动完成读出文件信息开始更新程序 // if(read_bin_txt()==1)//成功 // { // //更新完毕程序将升级标志清楚 // current_message.UP_FLAG=0; // write_soft_version(¤t_message); // LOAD_A(GD32_A_SADDR); // } // else // { // NVIC_SystemReset(); // } switch(read_bin_txt()) { case 1://成功 current_message.UP_FLAG=0; write_soft_version(¤t_message); LOAD_A(GD32_A_SADDR); break; case 2: LOAD_A(GD32_A_SADDR); break;//bin文件不存在 default: NVIC_SystemReset(); break;//其他情况 } } else { LOAD_A(GD32_A_SADDR); } // if(load_ota_message_config_params()==0) // { // //ota事件产生了,进入Bootloader分支 // ota_data=get_config_params(); // BootLoader_Brance(ota_data->XmodemByte); // } // //没有OTA事件产生跳转A区 // else // { // LOAD_A(GD32_A_SADDR); // } current_message.UP_FLAG=1; write_soft_version(¤t_message); NVIC_SystemReset(); while(1) { } } void task_fwdgt_reload(void) { /* uncock fwdgt write protect*/ fwdgt_write_enable(); /* feed fwdgt */ fwdgt_counter_reload(); }