From ec8d487264ac58ebaa00cf99675528e85c6113d0 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期三, 13 八月 2025 09:56:46 +0800 Subject: [PATCH] boot开发完成 --- dualboots_Gai_youhua/src/customboot/customboot.c | 165 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 92 insertions(+), 73 deletions(-) diff --git a/dualboots_Gai_youhua/src/customboot/customboot.c b/dualboots_Gai_youhua/src/customboot/customboot.c index 98f8fbf..e8309c3 100644 --- a/dualboots_Gai_youhua/src/customboot/customboot.c +++ b/dualboots_Gai_youhua/src/customboot/customboot.c @@ -158,15 +158,15 @@ board_clock_run(); calib_chip(); gpio_open(); - board_pins_config(); +// board_pins_config(); //board_debug_console_open(TRACE_PORT_UART0); // Chip calibration // calib_chip(); - sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback); - sleep_timer_start(__MS_TO_32K_CNT(100));//测试 +// sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback); +// sleep_timer_start(__MS_TO_32K_CNT(100));//测试 // Disable watchdog timer - wdt_close(WDT_ID0); - wdt_open(WDT_ID0,&app_wdt_cfg);//30s检测喂狗 +// wdt_close(WDT_ID0); +// wdt_open(WDT_ID0,&app_wdt_cfg);//30s检测喂狗 //LOG_INFO(TRACE_MODULE_APP, "进入Bootloader串口升级\r\n"); // gpio_open(); board_configure(); @@ -191,15 +191,15 @@ //uart_receive(UART_ID1, trx_buf, 1, uart_receive_callback); // SerialPutString("MK8000-BootLoader-V1.1启动\r\n"); //Serial0PutString("MK8000-BootLoader-V1.0启动\r\n"); - delay_ms(200); - start_timer=time_100ms; - while(time_100ms<start_timer+5) - { - if (Receive_Byte(&c, 0x100000) == 0)//返回0成功收取数据,-1为没收到数据 - { - usartdata_process(c); - } - } +// delay_ms(200); +// start_timer=time_100ms; +// while(time_100ms<start_timer+5) +// { +// if (Receive_Byte(&c, 0x100000) == 0)//返回0成功收取数据,-1为没收到数据 +// { +// usartdata_process(c); +// } +// } // uart_close(UART_ID1); // uart1_change_shouhuan(); // uart_open(UART_ID1, &test_uart_cfg); @@ -247,10 +247,10 @@ // uart_open(UART_ID1, &test_uart_cfg); // } - SerialPutString("MK8000-BootLoader-V1.2启动\r\n"); +// SerialPutString("MK8000-BootLoader-V1.2启动\r\n"); while(1) { - wdt_ping(WDT_ID0);//喂狗 +// wdt_ping(WDT_ID0);//喂狗 uint16_t tmp = 0; // tmp=0xAAAA;//测试用 //flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE); @@ -264,9 +264,9 @@ updata_byte = tmp;//读取指定地址的值 if(updata_byte == 0xAAAA)//判断此地址的值是否为0xAAAA,如果是则 升级 { - SerialPutString("串口升级启动\r\n"); - - Main_Menu(); +// SerialPutString("串口升级启动\r\n"); +// +// Main_Menu(); } else if(updata_byte == 0xBBBB)//判断此地址的值是否为0xBBBB,如果是则网络升级 { @@ -279,77 +279,96 @@ SerialPutString("OTA完成,解密文件启动\r\n"); SerialPutString("OTA固件解压\r\n"); - aesDecInit(); - - flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);//擦除APP - flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2); - APP_byte = tmp; - if(APP_byte==0XBBBB) - { - uart_close(UART_ID1); - delay_ms(200); - 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))(); - } - SerialPutString("擦除标注位成功\r\n"); - test1=flash_erase(FLASH_ID0,APP1_ADRESS,APP_CONFIG_APPLICATION_SIZE); - if(test1==0) - { - finalbag=(APP_CONFIG_APPLICATION_SIZE/128)+1; -// wdt_close(WDT_ID0); - for(aaa=0;aaa<finalbag;aaa++) - { -// time32_reset=0; - memcpy(&zhongjian_shuju,(void *)(APP2_ADRESS+(aaa*128)),128); - - for(ii = 0; ii < sizeof(zhongjian_shuju); ii += 16) - {aesDecrypt(&zhongjian_shuju[ii],key);} - - test1=flash_write_nbytes(FLASH_ID0, (APP1_ADRESS+(aaa*128)), zhongjian_shuju, sizeof(zhongjian_shuju)); -// if(test1==0) -// {SerialPutString("解密成功\r\n");} -// else -// {SerialPutString("解密失败\r\n");} - wdt_ping(WDT_ID0);//喂狗 - shengji_time_100ms=0; - } - delay_ms(10); - SerialPutString("OTA解密成功,准备重启\r\n"); - delay_ms(500); - NVIC_SystemReset(); - } +// aesDecInit(); +// +// flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);//擦除APP +// flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2); +// APP_byte = tmp; +// if(APP_byte==0XBBBB) +// { +// uart_close(UART_ID1); +// delay_ms(200); +// 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))(); +// } +// SerialPutString("擦除标注位成功\r\n"); +// test1=flash_erase(FLASH_ID0,APP1_ADRESS,APP_CONFIG_APPLICATION_SIZE); +// if(test1==0) +// { +// finalbag=(APP_CONFIG_APPLICATION_SIZE/128)+1; +//// wdt_close(WDT_ID0); +// for(aaa=0;aaa<finalbag;aaa++) +// { +//// time32_reset=0; +// memcpy(&zhongjian_shuju,(void *)(APP2_ADRESS+(aaa*128)),128); +// +// for(ii = 0; ii < sizeof(zhongjian_shuju); ii += 16) +// {aesDecrypt(&zhongjian_shuju[ii],key);} +// +// test1=flash_write_nbytes(FLASH_ID0, (APP1_ADRESS+(aaa*128)), zhongjian_shuju, sizeof(zhongjian_shuju)); +//// if(test1==0) +//// {SerialPutString("解密成功\r\n");} +//// else +//// {SerialPutString("解密失败\r\n");} +// wdt_ping(WDT_ID0);//喂狗 +// shengji_time_100ms=0; +// } +// delay_ms(10); +// SerialPutString("OTA解密成功,准备重启\r\n"); +// delay_ms(500); +// NVIC_SystemReset(); +// } } else if(updata_byte == 0xCCCC)//OTA { SerialPutString("进入OTA,升级启动\r\n"); - delay_ms(100); +// delay_ms(100); +// uart_close(UART_ID1); +// gpio_close(); +// sleep_timer_close(); +// __disable_irq(); +// delay_ms(500); +// memcpy((void *)SRAM_BASE, (void *)OTA_ADRESS, 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))(); +// delay_ms(100); +// flash_close(FLASH_ID0); +// __enable_irq(); +// Serial0PutString("进入OTA\r\n"); + } + else if(updata_byte == 0xDDDD)//跳转LORA升级 + { + +// SerialPutString("进入OTA,升级启动\r\n"); +// delay_ms(100); uart_close(UART_ID1); gpio_close(); - sleep_timer_close(); - __disable_irq(); - delay_ms(500); +// sleep_timer_close(); +// __disable_irq(); +// delay_ms(500); memcpy((void *)SRAM_BASE, (void *)OTA_ADRESS, 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))(); - delay_ms(100); - flash_close(FLASH_ID0); - __enable_irq(); +// delay_ms(100); +// flash_close(FLASH_ID0); +// __enable_irq(); // Serial0PutString("进入OTA\r\n"); } else // { - SerialPutString("准备跳转app\r\n"); - delay_ms(100); +// SerialPutString("准备跳转app\r\n"); +// delay_ms(100); uart_close(UART_ID1); gpio_close(); - sleep_timer_close(); - __disable_irq(); - delay_ms(500); +// sleep_timer_close(); +// __disable_irq(); +// delay_ms(500); //Delay_ms(1000); /* Test if user code is programmed starting from address "APP_CONFIG_APPLICATION_ADDRESS" */ //Serial0PutString("跳转APPhehe\r\n"); @@ -360,7 +379,7 @@ typedef void (*p_entry_t)(void); ((p_entry_t) (*(uint32_t *)(SRAM_BASE + 4) + SRAM_BASE))(); - delay_ms(100); +// delay_ms(100); // flash_close(FLASH_ID0); // __enable_irq(); //IAP_JumpTo(SRAM_BASE); -- Gitblit v1.9.3