• 资料介绍
    • 简介
    • 问题描述
    • 问题分析与解决
    • 小结
  • 资料预览
  • 相关推荐
申请入驻 产业图谱

LAT1374 RT-Thread环境下Flash错误标志问题解析

03/19 10:09
228
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LAT1374 RT-Thread环境下Flash错误标志问题解析

526.85 KB

简介

客户在使用 STM32G474RE 进行产品开发的时候,操作系统软件使用了 RT-Thread5.0,同时由于要做 ClassB 认证,所以在 RT-Thread 系统上,移植了 ClassB 2-3-0 版本安全库。用户程序另外一个功能是固件升级,在调试固件升级程序的过程中,发现一旦执行了ClassB 的启动自检,就会出现固件升级失败。调试发现,固件升级失败的原因是写 Flash 的时候发现 Flash 状态寄存器的错误标志被置位,导致 Flash 写操作失败。客户根据现此象反馈 ClassB 的自检代码有隐患,导致 Flash 出错。本文分析了出现该错误的原因以及解决办法。

问题描述

根据客户的问题反馈,我在 NUCLEO-G474RE 开发板上单独移植 ClassB,通过调试,没有发现类似问题。为了复现该问题,从 RT-Thread 官方网站上下载了 5.0 版本的 RTThread 代码。RT-Thread 对 STM32 的支持是相当友好的,代码中包含了对多数 STM32开发板的支持,所以对于 NUCLEO-G474RE 开发板,只需要找到对应的目录,打开工程即可。

问题分析与解决

结合参考手册对 PGAERR 以及 PGSERR 的描述,只能从写 Flash 的角度去分析问题产生的原因,最终通过单步调试,发现其中一句代码导致了该错误标志位的置起。

小结

在 STM32 软件开发中,不当的指针操作,尤其使用未经初始化的指针可能会引起莫名奇妙的问题,所以在使用指针变量的时候,需要注意指针地址的正确性。

资料预览

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

方案定制

去合作
方案开发定制化,2000+方案商即时响应!