EDA365电子工程师网

标题: MCU hang 机, 原因为何? [打印本页]

作者: Quantum_    时间: 2017-10-12 21:20
标题: MCU hang 机, 原因为何?
本帖最后由 紫菁 于 2017-10-13 13:09 编辑
5 {/ L8 i6 f, x* g7 \  P+ F! y8 D4 l; R
1. 我司的产品, 用到stm32某款MCU。5 A, A9 A* j& i
2. 近日, 对该产品做Sleep cycle 测试时, 不时出现MCU hang 机的情况。+ C, r+ g9 g% w* }: {+ C8 k
3. Datasheet 及原理图如附件。
5 p) d$ _, z  ]0 _# J7 S* r4. 理论上, MCU 很简单。 可是问题出现时, 却无从下手解Bug。8 o6 M2 _, s0 a* W! c
5. 有遇过类似经历的, 请帮忙提供个‘思路’。 不一定针对附件的设计。
+ T+ T% U' r* Z    a. 电源问题?) W, V9 H* f1 q% A
    b. 时序问题?5 v5 @8 E$ E& X( {
    c. Firmware 问题?4 i! H" ^" L# D  e" e0 V

7 \% z7 B+ D3 i6 j" a0 x*注: MCU hang  机( 即MCU 停在某一状态。 所有输出, 不再对输入信号有反应。 )
2 N% K8 u( g, ~6 R: f! _. t& Y1 i  _
谢谢!
( m: T$ y7 L% f7 c4 s

stm32_mcu.png (303.07 KB, 下载次数: 1)

schematic

schematic

作者: 超級狗    时间: 2017-10-12 22:44
本帖最后由 紫菁 于 2017-10-13 13:10 编辑 : g3 u/ n9 q: s1 C4 ?
' Q$ u, ]. @) S8 b  R# O% W; z
Prequalification trials
* U0 Q4 k' V, I0 aMost of the common failures (unexpected reset and program counter corruption) can be reproduced by manually forcing a low state on the NRST pin or the Oscillator pins for 1 second.
$ d& N6 g$ V; \. p
# N1 Y2 T# C5 {; {+ N9 @- G9 ^, |Datasheet 建議你重置試試,看 MCU 能不能重新跑起來,然後觀察會不會再度發生。
: F0 G1 n* b8 ]: Z7 P  W
  z! G. {+ d8 J1 F0 uTo complete these trials, ESD stress can be applied directly on the device, over the range of specification values. When unexpected behavior is detected, the software can be hardened to prevent unrecoverable errors occurring (see application note AN1015).5 M. p) F$ h  M9 V+ k1 r% W& o6 F

2 S; K8 c; d- ^6 {AN1015 教導你利用一些 TimerWatchDog 等技巧,降低意外掛機的情況發生。
2 _) a9 {. d7 p) v' L  f: A6 x/ Y, ]9 r
3.11.4 Independent watchdog (IWDG), B+ s: O4 t+ ?9 L
The independent watchdog is based on an 8-bit prescaler and 12-bit downcounter with user-defined refresh window. It is clocked from an independent 40 kHz internal RC and as it operates independently from the main clock, it can operate in Stop and Standby modes. It can be used either as a watchdog to reset the device when a problem occurs, or as a free running timer for application timeout management. It is hardware or software configurable through the option bytes. The counter can be frozen in debug mode.8 c  i5 x( l/ G0 s: C0 ~1 ~

9 Z$ N! z4 V( i6 L7 b. w- p- V看門狗IWDG)使用 40KHz 獨立的時鐘源,較不容易受到其它因素的影響,可利用它來防止掛機,或是用來找出掛機的原因。
% j0 i$ h5 F1 G9 H" f% H1 J
0 I) d3 u- G! B/ \0 e2 t6 K  B' {! e) G6 b  k* C( q
& n3 {9 C8 K2 y6 K* k, H" C; @3 ^/ R
$ G  O- w  b+ W4 J+ ]

0 y% Z$ ]  W$ [
作者: 超級狗    时间: 2017-10-12 22:48
本帖最后由 超級狗 于 2017-10-12 22:51 编辑 2 b8 G5 B& [& E- |2 M8 ?

9 o+ r3 j" h- V& B2 `6 |$ JAN1015 中提到各種掛機的可能性:
* R, o; q- ?4 M' o
) A6 C+ f- A; s1 KExamples of problems induced by EMC disturbances:
& O- j9 H& J0 P9 h$ ~# v: b9 v3 L0 p1 E
Examples of consequences of failing software:
2 g2 t! s! x) v, _) v, i/ y! y, Y4 s4 B' k# h0 ]
/ m8 k7 K# I, B1 N# }6 V

作者: ksvhxd    时间: 2017-10-13 08:27
没什么好办法,如果不能实时仿真的话,只能试着来,用外部有源晶振,排除因干扰而程序跳飞的情况。仔细检查程序中有关循环是否存在某个变量得不期望值陷入死循环的情况。
作者: hglhgl021    时间: 2017-10-13 08:40
一般这种情况都是发生了HardFault_Handler 然后一直停留在HardFault_Handler中断里面
作者: wx_DZGgnSMs    时间: 2017-10-13 10:11
1、监控下程序运行的情况,看看是在哪里出的问题,是否进入了死循环;
. X9 f' u3 ~5 P* N: d/ H- l2、看看干扰问题,尤其是电源的不稳定造成的,还有就是其他干扰造成的误差发
作者: wx_DZGgnSMs    时间: 2017-10-13 10:11
1、监控下程序运行的情况,看看是在哪里出的问题,是否进入了死循环;5 O6 x- I  W% G( ^
2、看看干扰问题,尤其是电源的不稳定造成的,还有就是其他干扰造成的误差发
作者: simba_Na7s6    时间: 2017-10-13 13:16
这种情况,个人认为多半是软件导致,可以认真查找软件原因
作者: qiantan    时间: 2017-10-16 09:43
看看是不是软件堆、栈相关问题
作者: cjdsn    时间: 2017-10-18 13:01
看一看/ S9 g7 x( |( Q2 s3 N6 ^  ]

作者: ddhr2001    时间: 2017-10-24 14:03
thank you very  much; |' M- [2 _2 a

作者: Aston    时间: 2017-10-31 13:57
不见得是硬件问题
作者: 理工YZ    时间: 2017-11-7 14:55
研究了。
3 k) V2 u/ F  }6 f) T; A; t& G
作者: jinshan010    时间: 2017-11-8 10:41
看一看
作者: jinshan010    时间: 2017-11-8 10:42
看一看; l6 o, E* u# b  f# I





欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2