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

【ST MCU实战经验】RAM上电后初始值问题

[复制链接]
沐紫 发布时间:2015-12-25 15:53
前言/ n. N# }& [+ v- a' B# x& y
本篇LAT的内容简介了一个由RAM上电后初始值引起的问题。8 @; y. v$ J6 I9 I4 U
; E/ b$ k2 h5 I6 Q% ~7 _7 U
问题
$ Q. S2 v) |5 Q客户反映,某产品试生产时出现问题,故障率在10%左右。该故障可以复现,并且将芯片(MCU)更换到新的电路板也无法解决。因此,客户怀疑是芯片出现质量问题。
: u" L6 m* T) R# r* C- D7 v  {: B, ?
分析; h2 A: v5 e. a" |: F: `; e( r
粗看下来,故障确实比较象是由于芯片本身质量引起的。但是仔细查看代码,发现程序中有一段值得怀疑。该部分代码利用RAM中某个字节的值来判断芯片是否发生过掉电,并据此执行不同的分支。
* r2 f% M* H4 r; l一般而言,在芯片上电以后但是没有进行初始化之前,那么RAM(这里不包括寄存器)中的值是随机的。客户开发时曾询问过这一点,所以开发时加以利用。" r! j& x# A: X; P
那么,究竟该怎么理解这个“随机”呢?
" y+ _# q, v& a/ m$ Q这里“随机”的意思是,任何值都是可能的。因此,当芯片发生若干次掉电上电时,对同一个RAM字节来说,里面的值可以每次都不一样,也可以每次都一样,也可以有时一样有时不一样。因此,应理解这个“随机”为“不保证为任何值”。5 [* N* Z( `: @0 [4 Q6 V
而客户恰恰认为,既然是随机的,那么每次值都应该是不同的。
9 o5 F' w7 w6 Z% q9 y3 j. d' g  Q5 Z( C. {
处理
6 N9 C$ u7 W& R4 Y/ `综上分析过程,尽管思路是完全可行的,但是由于对“随机”的含义理解错误,所以程序中只判定RAM中一个字节的值存在一定的风险。
/ _5 e5 W: ?! _/ ?4 o解决方法是在判定条件中,将判断1个字节的值更改一下,例如判断3个字节(或者更多)的值是否相同(可以使用多数判决)。同时,选取这3个字节的时候,尽量使得它们的地址分散一些。这样,误判的概率就大大降低。
. \6 z. [+ j2 g7 w8 g# }( i- V对于某些芯片来说,还有其他的判断方法。例如,对于STM32系列来说,在寄存器RCC_CSR寄存器中的最高位一般都是上电标志;此外,对于部分产品,还可以在BKP_DR(或者是RTC_BKP之类,根据产品不同)寄存器中写入特定序列来判断。$ s4 O# Z6 p3 O+ w
- A4 }' Y$ x! S) |. }
结论0 f- R2 m8 U6 M- {6 q" j
此例实际上是由于对“随机”一词的理解不同造成的问题,而非芯片质量问题。经过重新修改程序后,该问题不再出现。7 r0 E0 t) d% J# S" C" n
- q& Y* I$ H: o8 j) s
4 @; Y4 m' a* I' Y5 d. F
详细解答请下载文档:https://www.stmcu.org.cn/document/detail/index/id-2167383 J  m6 s3 o7 m3 W4 I* N
更多实战经验文档请见:https://www.stmcu.org.cn/document/list/index/category-657
  U* ~0 \8 [# u5 W6 w* {
: F7 }5 q3 |1 S
赞 收藏 评论1 发布时间:2015-12-25 15:53

举报

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