From 46d4bfe8efde8c214007acfe9d1e3c4e358b475f Mon Sep 17 00:00:00 2001 From: cbb <2625274797@qq.com> Date: Sun, 26 Apr 2026 03:36:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(bootloader):=20=E5=AE=9E=E7=8E=B0APP?= =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E5=90=AF=E5=8A=A8=E6=A8=A1=E5=BC=8F=E6=94=AF?= =?UTF-8?q?=E6=8C=81OTA=E8=AF=B7=E6=B1=82=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当APP可用但未激活时,系统现在会进入延迟启动模式,在指定时间内 监听CAN总线上的OTA请求。如果在此期间收到OTA请求,则进入OTA模式; 否则超时后自动跳转到APP。 新增配置参数APP_DELAY_BOOT_TIME用于设置延迟启动时间,默认为10秒。 在延迟期间,系统持续进行CAN通信检查和OTA心跳消息发送,确保能够 及时响应OTA更新请求。 此功能增强了系统的OTA更新灵活性,允许在启动过程中动态决定 是否进行固件更新而不是强制进入OTA模式。 --- Robot_V2/main.cpp | 39 +- Robot_V2/sys/config.h | 1 + out/Robot_V2/GD32C103CB/Release/Robot_V2.axf | Bin 254144 -> 256372 bytes .../GD32C103CB/Release/Robot_V2.axf.map | 234 +-- out/Robot_V2/GD32C103CB/Release/Robot_V2.hex | 1355 +++++++++-------- tmp/.ninja_log | 68 +- tmp/1/.ninja_deps | Bin 24464 -> 26636 bytes tmp/1/.ninja_log | 123 +- .../G_/Robot_v2/BOOT/Robot_V2/main.o | Bin 14812 -> 17572 bytes .../G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o | Bin 40456 -> 40456 bytes .../G_/Robot_v2/BOOT/Robot_V2/sys/initial.o | Bin 26804 -> 26804 bytes 11 files changed, 908 insertions(+), 912 deletions(-) diff --git a/Robot_V2/main.cpp b/Robot_V2/main.cpp index 6c51606..2613c7b 100644 --- a/Robot_V2/main.cpp +++ b/Robot_V2/main.cpp @@ -34,14 +34,45 @@ void BootloaderSystem::run() { // 正常模式:跳转到APP ota.jumpToApplication(); } else if (app_check == OTA_AVAL and - app_enable == OTA_NOT_AVAL) { // 手动禁用APP,进入OTA模式 + app_enable == OTA_NOT_AVAL) { // APP可用但未激活,延迟进入APP #if DEBUG_OTA - printf("OTA Mode1\r\n"); + printf("Delay Boot Mode: APP available but not enabled, jumping in %d ms...\r\n", APP_DELAY_BOOT_TIME); #endif - // OTA模式 - while (1) { + // 延迟启动模式:倒计时期间监听CAN,收到OTA请求则进入OTA模式 + u32 delay_count = 0; + bool ota_requested = false; + + while (delay_count < APP_DELAY_BOOT_TIME) { + // 检查CAN通信并处理接收到的消息 CAN0_transmiter.communication_check(); + + // 调用ota.process()发送心跳消息(IDAEL状态下会发送CANFD_OTA_WAIT_ID) ota.process(); + + // 检查是否收到OTA请求 + if (ota.isActive()) { + ota_requested = true; + break; + } + + delay_count+=10; + } + + if (ota_requested) { +#if DEBUG_OTA + printf("OTA request received during delay, entering OTA mode...\r\n"); +#endif + // 收到OTA请求,进入OTA模式 + while (1) { + CAN0_transmiter.communication_check(); + ota.process(); + } + } else { +#if DEBUG_OTA + printf("Delay timeout, jumping to APP...\r\n"); +#endif + // 超时未收到OTA请求,跳转APP + ota.jumpToApplication(); } } else { // APP无效,确认backup volatile u32 *flash_ptr = (volatile u32 *)n_APP_BACKUP_AVAL_ADDR; diff --git a/Robot_V2/sys/config.h b/Robot_V2/sys/config.h index 74c1ee8..436a37c 100644 --- a/Robot_V2/sys/config.h +++ b/Robot_V2/sys/config.h @@ -61,6 +61,7 @@ constexpr uint8_t K_master[16] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0x76, 0x54, 0x32, 0x10}; // 预置主密钥 // 其他 constexpr u32 OTA_TIMEOUT = 10000; +constexpr u32 APP_DELAY_BOOT_TIME = 10000; // APP延迟启动时间(毫秒),可配置 constexpr u8 SIZE_U32 = sizeof(uint32_t); constexpr u8 SIZE_FLOAT = sizeof(float); #endif \ No newline at end of file diff --git a/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf b/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf index 1c250ff7b80ea4cb3dbccddae6eb31dd99da4187..c0f80d7de12b6cbd9c9849d1ec1ec3a7efc94f34 100644 GIT binary patch delta 12977 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 delta 11727 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 delta 9 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 b2@`#gKf))l!(aNC?SmgK+Yh~{q%dj=l3|j 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 Lh)47W}D@eN9K&wB&Ce0Y{ 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 K-}n@-5cofIHNGqW diff --git a/tmp/1/CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o b/tmp/1/CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o index b425552ef1df9b5f5196a4571d62865f06ca35de..d6aa73e4f7c28787c885b7fa84ef4b07d5b1403b 100644 GIT binary patch delta 16 XcmeC!!_={dX+xwcqvPf%)pZpBH(mx+ delta 16 XcmeC!!_={dX+xwcqr>JX)pZpBH&_N# diff --git a/tmp/1/CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/initial.o b/tmp/1/CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/initial.o index 780c7497c88ed8560a2230b682ef8df848310539..e3d63817ed910c9430ce69c68489dfbcbfc1522c 100644 GIT binary patch delta 16 YcmdmTk#WmK#tj$v7#%lX