你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f103c8t6:没有对flash进行任何操作,flash的内容发生变化了。具体是哪些原因?如何调试排查原因。

[复制链接]
rhinezj 提问时间:2024-9-9 17:24 / 未解决
收藏 评论5 发布时间:2024-9-9 17:24

举报

5个回答
butterflyspring 回答时间:2024-9-9 17:35:21
FLASH 的里面内容的修改,需要很严格的条件才行,需要按照一定的时序操作才能启动内部升压,升压后才可能去修改里面的内容。


如果程序内部部分内容变了,首先可以检查烧录校验和是否一直,其次可以使能写保护,硬件禁止软件去修改它。当然,如果能找到哪些逻辑去更改它就更好了。
xmshao 回答时间:2024-9-9 17:40:55
可能无意中发生针对flash的非法操作,即本意并不想对flash进行编程操作但实际上发生了对flash的写操作。


通常发生在程序跑飞时 无意做了对flash的写操作。


还有就是,对有些数据,往往是数据较多的结构体没有初始化或没有完全初始化就被使用,也比较容易发生编程错误。


因为对一个未明确、正确初始化的地址去写时,若刚好写的地方是flash,则会直接报flash编程错误。


这种原因还比较常见。
rhinezj 回答时间:2024-9-9 17:55:36

xmshao 发表于 2024-9-9 17:40
可能无意中发生针对flash的非法操作,即本意并不想对flash进行编程操作但实际上发生了对flash的写操作。</p>
<p>

实际情况确实是程序跑飞了,而且断电重启程序都不能正常运行。只有重新下载程序后才能正常运行。

rhinezj 回答时间:2024-9-9 17:57:23

rhinezj 发表于 2024-9-9 17:55
实际情况确实是程序跑飞了,而且断电重启程序都不能正常运行。只有重新下载程序后才能正常运行。
[/m ...

[md]而且也不知道是什么原因导致程序跑飞。

xmshao 回答时间:7 天前

rhinezj 发表于 2024-9-9 17:57
而且也不知道是什么原因导致程序跑飞。

程序跑飞原因比较多:

内存访问越界问题:检查数组访问和指针使用,确保在合法范围内。

中断方面问题:合理配置中断优先级,避免中断嵌套过深。合理配置堆栈大小。

内存管理方面问题:检查内存分配和释放,避免内存泄漏等问题。

电源原因 :检查电源质量、boot脚的焊接。注意特定电源脚,比方VCAP,PDR_ON这些;

异常复位: 看门狗复位、外部干扰导致复位脚电平不稳。注意程序逻辑,避免外界干扰;

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版