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

【经验分享】FLASH 被异常改写

[复制链接]
STMCU小助手 发布时间:2022-2-17 20:19
问题描述:
0 v2 y* `6 O. S" B) e# t  ^某客户反馈, 当 MCU 频繁的正常通断电的时候。FLASH 被异常改写,出现各种各样的异常(整片别擦除、中断向量表被改写为 0、写保护被清掉、被加上读保护 ……..)
7 e/ F5 ]+ g( ]+ S' I
2 O4 e/ {' z0 G, C/ Z; T: h+ l( h问题调研:0 O( b! L" z. m+ o- a  U& g
首先跟客户沟通:
. j# w7 Q9 t) b2 }6 `• 他们是延续之前的项目,进行的一些软硬件简单修改。之前的项目没有出现过类似的问题。  r/ y& i5 c* r1 p# w" I
• 确认通断电的时间是足够,就是说他们断电后所有的 VDD 都回到 0.上电的时序也是正常。
$ T' O7 L! f9 Z5 W• 原理图确认这是 follow 了我们的参考设计。- i' b6 S# k, X0 C# |
• 测量工作时的电压,只是发觉他们上电时会有一些抖动,其它一切正常。尝试让他们改善上电电路,去掉这一抖
0 s. D4 ?1 C5 s7 c" R动,再次实验,仍然出现类似的问题。
9 N+ o+ Z, o( A$ Q; W% s, u: x到这里似乎跟硬件没有任何的问题了, 接着让客户代码进行删减又做了如下实验:7 ~$ f' A! S( m: b! T
1, 去掉能 APP 部分代码,仅仅留下 IAP 代码。做相同的实验,问题再现。
3 t; T. f  N% M' {* q4 ?2, 进一步删减程序,客户去掉程序中所有跟 flash 以及 OPTION BYTE 相关的部分,做相同的实验,问题再现。' m* E  C7 y" i/ u. P5 e
3, 没招,再删,最后仅仅留下下面程序:
- H1 I2 S5 R9 g  @) h0 ~0 I4 F, O, b' G1 ^1 |' }4 q. O
~99549I651{)%Y7@21Y[9WY.png   |- i6 x* F& g: h) f

+ x6 m2 _: S4 ]5 H) ]: E' Q" G P3B)~EUWJ}$V[Q)OW)4]QGH.png & q( u. v  W. W" z& A

7 r3 V2 W1 b, k6 |+ p4 _客户反应只要掉用了 delay_init 函数就会出问题,不调用就不会出问题(仅仅做了一天的实验)。到这里似乎跟我们的软件有关系了,我们进一步分析发现他们改写了我们的 systick 的 config 函数,那么我就做下一个实验。' V; [0 B" e& }6 k/ u
4, 改为标准库中的 systick 例程,去掉写保护,加一个 GPIO 定时翻转程序。同时在烧录之后,加上写保护,做相
9 g7 |) D: N% p2 p6 ]6 L$ L. G同的实验,问题再现。. ?: u& m" ]9 k2 z$ l! x% G
5, 到这里我们都怀疑是芯片真的有损伤了,我们再做了一个实验用 cubemx 生成了一个 GPIO 翻转和 systick 的延
# H% E1 u, k+ H0 [' @2 x! ]. V时,做相同的实验,问题再现。, a$ Q! T1 T. Y2 n  S
, K' E4 j% a& R, e& u
原因:
' n6 u& V5 x. C/ b4 p2 b( Z' l到这里我们似乎是江郎才尽,只能坐等 FA 的报告,看看芯片是否真的坏了与否。我们抱着怀疑一切的态度,请他们的硬件工程师再次确认他们的硬件和原理图的一致性,我们怀疑他们的硬件是否有装错的元器件。主要集中在 MCU 周边。最后他们的工程反馈,他们的 PDR_ON 脚,板子上装的元器件跟原理图不一致。他们把 R47 和 R48 都装了,那么相当于在 PDR_ON上是一个 0.6v 的电压,也就是关断了 MCU 内部复位。$ l) F( L* I* ~6 F* _1 j5 i
真是山穷水尽疑无路,柳暗花明又一村,问题应该跟内部复位有关。
1 n1 x! Q' o6 S) h# Z' A+ u7 n" O
. J4 @) g5 T: L8 O 38Q3U_{HU8)Q(R@ZA1@DO1I.png , q! @$ T0 I- j* J- q2 h

7 t' i4 S) B9 g. \$ n  u+ i从上面规格书来看,如果我们关断 mcu 内部的复位电路,需要在外部接一个复位信号保证 VDD 达到正常工作电压之前一直使 MCU 处于复位状态。
4 r6 e7 i3 k- n& |* [1 @( |9 E6 j6 v8 O1 M1 |' c1 G1 b
解决办法:
: v% q+ C4 {/ q" [+ r; w8 B: z问题找到后解决办法就很简单,去掉 R48 这个 1k 欧姆的电阻,重做实验,再没有发现问题。  h, l0 f5 l2 q( E/ B
& W' a7 X! X* L2 H2 I
结论:: O1 Z, O, g0 E& S+ m3 g
其实在之前我们的另外一个西安的客户发生过频繁上电不工作的情况。他们也是使用了就得数据手册,没有把 PDR_ON 脚拉到 VDD 所致。$ g$ v( ?) W1 m9 l3 Y( Z1 `
对于 ST MCU 来说,这个 PDR_ON 引脚有的封装是被引出来了,有的封装没有引出,如果没有引出的是默认使能内部复位功能,如果引出的话,大家也要当心有的型号是拉低使能内部复位;有得是拉高使能内部复位。所以在检查电路时一定要当心。
7 Z0 G& N$ m$ ^0 w: J9 A4 {' ?5 _' d1 b+ B

" t! x9 l  J. J! _
赞 收藏 评论0 发布时间:2022-2-17 20:19

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版