[技术问答] 如何区分:应用开发的MCU “重新启动“情况

[复制链接]
1532|2
 楼主| deliahouse887 发表于 2024-12-29 23:16 | 显示全部楼层 |阅读模式
MCU开发过程,有时候需要区分重新启动类型的情况:

1、MCU进入深度睡眠(deepsleep),被按键唤醒的情况。此时 部分MCU的RAM数据会丢失,无法区分 上电启动 还是深度睡眠 的启动。
2、MCU的OTA升级成功,重启。此时应用层无法区分 上电启动 还是OTA的启动。

区分方法:可以预知的重启:
1、深度休眠 唤醒后重启
2、OTA 成功后的重启
可以在Flash 存储对应的标志位Flag,等到唤醒后,读取Flag 来判断是应用的重启 还是 上电启动。
无法预知的重启:
上电复位/欠压复位/RST引脚复位,可以在上电时打印重启错误码进行区分。


jasontu 发表于 2024-12-30 09:12 | 显示全部楼层
1, 应该有ram区坏可以,可以不下电。
2, 只要把某些区坏的ram不要重新作re-init,即可以用状态判断。
花开了相爱吧 发表于 2025-9-15 16:37 | 显示全部楼层
区分 MCU “重新启动” 情况可检查复位源寄存器(如 RSTCTL),判断是上电复位、外部复位(按键)、 watchdog 复位、软件复位还是低电压复位。也可在不同复位入口设标记(如写入 RAM 特定地址),重启后读取标记区分,结合硬件电路排查具体原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

1450

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部