feat(can): CAN休眠唤醒移动到BOOT以进行以支持40k硬件看门狗
- 更新深度睡眠实现,在跳转到bootloader前记录睡眠状态到Flash - 添加gd32c10x_fmc.h头文件以支持Flash内存控制功能 - 将prepare_deep_sleep重命名为app_prepare_deep_sleep以提高命名清晰度 - 在CAN通信检测中添加应用层休眠准备功能 - 在接收OTA启动ID时解锁FMC、设置APP为非激活状态并锁定FMC - 移除main.cpp中的看门狗复位休眠逻辑 - 在config.h中添加睡眠配置相关的常量定义 - 改进OTA_SET函数的Flash写入逻辑,优化数据更新流程 - 在OTA初始化和应用移动过程中添加FMC解锁锁定操作
This commit is contained in:
@@ -99,8 +99,10 @@ u16 get_reset_cause(void) {
|
||||
void OTA_initial(void) {
|
||||
|
||||
// 确认当前APP可用
|
||||
fmc_unlock();
|
||||
OTA_SET(n_APP_LATEST_CHECK_ADDR, OTA_AVAL);
|
||||
OTA_SET(n_APP_LATEST_EN_ADDR, OTA_AVAL);
|
||||
fmc_lock();
|
||||
u8 transmit_data[2] = {0x0A, 0xAC};
|
||||
// 确认APP可用
|
||||
CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_ACK_ID, 2, transmit_data);
|
||||
@@ -112,14 +114,17 @@ void OTA_initial(void) {
|
||||
|
||||
// 如果BACK不可用
|
||||
if (back_aval == OTA_NOT_AVAL) {
|
||||
#if OTA_DEBUG
|
||||
std::printf("notaval\r\n");
|
||||
#endif
|
||||
move_app_data();
|
||||
} else if (back_aval == OTA_AVAL &&
|
||||
back_check == OTA_NOT_AVAL) { // BACK已刷写,但未检查
|
||||
#if OTA_DEBUG
|
||||
std::printf("aval\r\n");
|
||||
#endif
|
||||
move_app_data();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
printf("check\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user