打印
[STM32F0]

无线模块OTA升级导致Flash锁死

[复制链接]
269|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CarterERO|  楼主 | 2025-4-24 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过LoRa远程升级STM32F072固件,偶发升级后无法启动。排查发现Flash解锁序列在中断中执行,是否因时序问题导致OPTION BYTE被意外修改?

使用特权

评论回复
沙发
公羊子丹| | 2025-4-25 07:37 | 只看该作者
中断里操作Flash确实不太安全,特别是解锁和写操作,建议放在主循环或者禁用中断后再处理。

使用特权

评论回复
板凳
周半梅| | 2025-4-25 07:38 | 只看该作者
OPTION BYTE一旦误写,芯片很可能直接进死区,启动不了,我之前就被WRP搞崩过一次。

使用特权

评论回复
地板
帛灿灿| | 2025-4-25 07:38 | 只看该作者
你有没有检查升级失败后,OB里面是不是被改写了 BOOT 或 RDP 级别?

使用特权

评论回复
5
童雨竹| | 2025-4-25 07:39 | 只看该作者
OTA过程中最好把Flash操作流程做成状态机,严格控制解锁、写入和锁定的顺序。

使用特权

评论回复
6
万图| | 2025-4-25 07:40 | 只看该作者
STM32F0的Flash控制器对非法写操作挺敏感的,解锁过程中进中断可能打断关键指令序列。

使用特权

评论回复
7
Wordsworth| | 2025-4-25 07:41 | 只看该作者
你有没有用HAL库自带的HAL_FLASH_Unlock()?如果中断打断这个函数确实容易出问题。

使用特权

评论回复
8
Bblythe| | 2025-4-25 07:42 | 只看该作者
LoRa收数据过程中中断频繁吗?是不是中断嵌套时搞乱了Flash操作的状态?

使用特权

评论回复
9
Pulitzer| | 2025-4-25 07:43 | 只看该作者
如果只是偶发,很可能是某次OTA包丢了或CRC没校验好导致写入了错误区域。

使用特权

评论回复
10
Uriah| | 2025-4-25 07:44 | 只看该作者
我建议加一个安全机制,比如升级前先写一段Magic Code,重启后再确认是否刷成功。

使用特权

评论回复
11
Clyde011| | 2025-4-25 07:45 | 只看该作者
出问题后能接SWD不?我有次是RDP被写成1了,调都调不出来,只能重新烧写了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

249

帖子

0

粉丝