feat(ota): 修复备份APP区域恢复功能和OTA流程优化、启用BRS、减小延时
- 添加sendBackup方法用于在备份APP激活时发送确认消息 - 优化OTA跳转逻辑,在jumpToApplication中清除复位标志 - 修复move_app_data函数中数据源地址错误,从备份区域正确读取数据 - 在OTA流程中正确设置APP状态标志,确保应用验证状态管理 refactor(can): 清理调试代码和函数签名优化 - 移除调试用的printf语句和未使用的cstdio头文件 - 统一函数参数类型为u8和u32,提高代码一致性 - 优化CAN通信检查逻辑,移除冗余的调试输出 perf(ota): 优化OTA处理中的延时函数 - 将delay_1ms(1)改为delay_1us(100),提高延时精度 - 添加微秒级延时函数delay_1us实现 - 增加OTA超时时间从10秒到100秒 fix(ota): 修复OTA状态管理和错误处理 - 在各种错误情况下正确设置ota_state为OTA_STATE_IDLE - 在eraseApplicationArea中正确初始化APP状态标志 - 添加CRC校验失败时的调试输出选项 - 修复数据包大小验证逻辑
This commit is contained in:
+5
-13
@@ -6,7 +6,6 @@
|
||||
#include "gd32c10x_dma.h"
|
||||
#include "gd32c10x_gpio.h"
|
||||
#include "main.h"
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdint.h>
|
||||
@@ -191,30 +190,19 @@ u8 CAN_transmiter::init() {
|
||||
void CAN_transmiter::communication_check() {
|
||||
// CAN0 发送数据标志
|
||||
if (SET == can0_send_flag) {
|
||||
// printf("\r\n can0 %X receive data:", receive_message.rx_efid);
|
||||
// CAN0_transmiter.CAN_all_Send();
|
||||
// CANFD_all_Send();
|
||||
can0_send_flag = RESET;
|
||||
}
|
||||
|
||||
// CAN0 接收数据标志
|
||||
if (SET == can0_receive_flag) {
|
||||
// printf("can0 %X receive data,length%d:", receive_message.rx_efid,
|
||||
// receive_message.rx_dlen);
|
||||
// for (int i = 0; i < receive_message.rx_dlen; i++) {
|
||||
// printf(" 0x%02x", receive_message.rx_data[i]);
|
||||
// }
|
||||
// printf("\n");
|
||||
if (receive_message.rx_efid == CANFD_OTA_DATA_ID or
|
||||
receive_message.rx_efid == CANFD_OTA_REQ_ID) {
|
||||
ota.handleOTAMessage(receive_message.rx_efid,
|
||||
receive_message.rx_data,
|
||||
receive_message.rx_dlen);
|
||||
} else {
|
||||
|
||||
#if CAN_DEBUG
|
||||
printf("Unknown CAN ID: %X\n", receive_message.rx_efid);
|
||||
|
||||
#endif
|
||||
}
|
||||
can0_receive_flag = RESET;
|
||||
@@ -233,6 +221,11 @@ u8 CAN_transmiter::sendDATA_ACK(u32 packet_num, u8 *data) { // 握手的时候
|
||||
return CANFD_AsyncSend(CANFD_OTA_ACK_ID, 6, transmit_data);
|
||||
}
|
||||
|
||||
u8 CAN_transmiter::sendBackup() { // 握手的时候
|
||||
return CANFD_AsyncSend(CANFD_OTA_ACK_ID, 0, transmit_data);
|
||||
}
|
||||
|
||||
|
||||
u8 CAN_transmiter::sendDATA_ACK(u32 packet_num,
|
||||
bool if_success) { // 发送数据的时候
|
||||
memset(transmit_data, 0, 4);
|
||||
@@ -361,7 +354,6 @@ u8 CAN_transmiter::CANFD_AsyncSend(u32 id, u8 length, u8 *data) {
|
||||
} else {
|
||||
#if CAN_DEBUG
|
||||
printf("CANFD data length error\r\n");
|
||||
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user