WXK
2025-01-03 9e88186e5fd87b0dd99faebcc4d72409efcb7c7c
dualboots_Gai_youhua_anbang_tag/src/customboot/customboot.c
@@ -117,11 +117,15 @@
    }
}
unsigned short int APP_byte = 0;
unsigned short int updata_byte = 0;
uint8_t trx_buf[10] = {0};
int test1;
int aaa;
uint16_t finalbag;
int main(void)
{      uint8_t c;
      uint8_t zhongjian_shuju[128];
     //sys_tick_callback_set(systic_time_callback);
      board_clock_run();
    board_pins_config();
@@ -172,10 +176,46 @@
         //flash_write_nbytes(FLASH_ID0,APP_CONFIG_IAPFLAG_MAP,(uint8_t*)&tmp,2);//测试用
//    SPIFlash_Read(SPI_FLASH_ID_0, (HIDO_UINT8*)&tmp, APP_CONFIG_IAPFLAG_MAP, sizeof(tmp)); MK8000修改
         
         flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2);
        while (flash_check_busy(FLASH_ID0))
        {
        }
        flash_read(FLASH_ID0, APP_1OR2_ADRESS, (uint8_t*)&tmp, 2);
        APP_byte = tmp;
            if(APP_byte==0XDDDD)
            {
                Serial0PutString("进入搬运\r\n");
                flash_erase(FLASH_ID0, APP_1OR2_ADRESS, 0x1000);//擦除APP
                flash_read(FLASH_ID0, APP_1OR2_ADRESS, (uint8_t*)&tmp, 2);
                APP_byte = tmp;
                if(APP_byte==0XDDDD)
                {
            memcpy((void *)SRAM_BASE, (void *)APP_CONFIG_APPLICATION_ADDRESS, APP_CONFIG_APPLICATION_SIZE);//size太大导致覆盖没法跳转
             __set_MSP(*(uint32_t *)SRAM_BASE);
               typedef void (*p_entry_t)(void);
            ((p_entry_t) (*(uint32_t *)(SRAM_BASE + 4) + SRAM_BASE))();
                }
                Serial0PutString("擦除标注位成功\r\n");
                test1=flash_erase(FLASH_ID0,APP1_ADRESS,FLASH_IAP_CTRL_MAP-APP1_ADRESS);
                if(test1==0)
                {
                finalbag=((FLASH_IAP_CTRL_MAP-APP1_ADRESS)/128)+1;
                for(aaa=0;aaa<finalbag;aaa++)
                {
                    time32_reset=0;
                memcpy(&zhongjian_shuju,(void *)(APP2_ADRESS+(aaa*128)),128);
                test1=flash_write_nbytes(FLASH_ID0, (APP1_ADRESS+(aaa*128)), (uint8_t*)&zhongjian_shuju, 128);
                if(test1==0)
                {Serial0PutString("test1=0\r\n");}
                else
                {Serial0PutString("test1=1\r\n");}
                }
                delay_ms(10);
                Serial0PutString("搬运成功,准备重启\r\n");
                delay_ms(500);
                NVIC_SystemReset();
                }
            }
    flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2);
    updata_byte = tmp;//读取指定地址的值
    if(updata_byte == 0xAAAA)//判断此地址的值是否为0xAAAA,如果是则升级 
    {