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

STM32 Bootloader 异常复位案例

[复制链接]
木木&点点 发布时间:2019-3-28 21:44
本帖最后由 点点&木木 于 2019-4-12 09:51 编辑
6 |8 Y3 a: z0 f) z+ K6 c6 b+ O$ q, i- j' Y6 u# B
前言
  a3 ~( j  @7 b( ?客户通过 PC 软件 flashloader反馈 不能够跟 STM32 MCU自带 bootloader 连接。并且系统运行一段时间后异常复位。 & v* _# y& [. G0 T

8 y7 j7 u' c6 Q9 z系统分析 ; H+ f) d1 L$ b2 U) J& q( x
4 k+ X$ A1 B6 N1 U
延续之前的项目,进行的一些软硬件简单修改。 上电、放电的时序也是正常。 Boot0 拉高,boot1 拉低,测量工作时的电压正常(2.5v)。         检测所有相关的硬件软件都是没有问题,他们的 boot脚,以及之前的 PDR_ON是通过外围的 FPGA 单元控制,我们 一开始怀疑这些上电时序,以及 PDR逻辑出错。尝试让他们全部断开逻辑,测试整个上电,掉电过程都是没有什么问题。
0 Z' ?2 F7 ]' O! n
/ r- E0 J* S: I5 K( z8 \" V
测量波形:检测他们的串口工具  能正常在 PC 上发现他们的串口工具,数据的发送正常。  但是串口的到 PCB板上没有任何的输出,所以并不能跟板子通讯。 8 W! ]  v7 k  M; f

$ o: _$ R# u4 E- q- ` 1.jpg * D5 n8 w% t. F* T" W( d
/ O& n! z" g: G
    使用一个新的串口工具,当产品连接到 PC 后,重新上电,能够正常升级软件,到这里似乎问题得到解决,但是当他们 恢复到之前的系统,通过控制 reset和 BOOT引脚进入的时候,仍然时灵时不灵,当不能进入 BOOT 的时候,他们测量我们 的复位管脚电压时发现在复位脚上以一个 3.6MHz 的频率不停的复位 MCU.  
% c5 y5 x! v4 S9 |7 L4 s  A# I 2.jpg # z( }8 }" s" z9 b. E" P! P* c3 m- j
4 V7 s; K. B* n2 m4 {
功能测试:   
' g8 r- h! A6 F5 F' ~PC 232 STM32 PC & U5 k' }1 \) f

1 [; ?. ]9 z8 }. q1 M& O) ?0 J" H  9 M/ q7 e; I! Y7 B/ A+ I: }: g, \  E- H
    客户又发现如果给 MCU上电,PC快速打开 flashloader,并且连接串口,工作正常。但是,如果慢速这样操作,就连不上了,真是神奇的事情再次发生,他们再次确认发现,在复位脚上,在上电一段时间后,会有不停的有一个复位信号产 生,百思不得解。
5 {( O. M) T- W( \( z ! v  I# w0 u% f5 M1 W! J
确认手册: 7 A7 s- Q5 H' B! R" f: o7 `

) T' U& \. a1 b1 j) M    我们打开 AN2606,发现在 bootloader 的流程图中有一个系统 reset的过程,难道是这里产生的吗?  
) M- e' W0 d4 t. h" M2 w- t
+ l% ~* P8 q8 z7 `# ]+ d( G 3.jpg
$ C( a# `  Y. S( q/ o5 e # _9 T/ f, E" \& T
我们让客户断开所有的外设再次确认问题,他们发现在断开外围的时候,这个连续的复位信号不再产生。从这个流程来看, 只有在用到 DFU或者 CAN升级的会在检测不到 HSE的时候会系统 reset,但据他们说,他们并不使用这两个功能,那就奇 怪了,然后就让他们试做去恢复外设功能,最后发现在恢复到一个 SPI的时候,重现这个问题。
9 X- W# c  o- p6 ]' m) E . ?* e/ U3 m8 f1 H* q/ Z: X4 E  h
系统确认:
; N" [4 |) b5 Z( A8 H9 a
1 ^0 v! ~4 H' H, r5 _/ O7 y4 ~7 ^  i
   我再次跟他们沟通他们的系统框图如下:
& q+ P$ r: K( I8 M! x2 i4 ~6 r, h" T
; |" }" s7 V6 P5 p! h   4.jpg / c  Q5 K9 C: J- G1 e
1 Y+ N; Q$ o$ l1 `! ]( u
他们进一步调查发现,当 FPGA,在上电初始化后,会不停的发送一些命令给到 MCU,数据线正好跟 CAN 的 RX 引脚共用, 所以只有第一次上电后,也就是在 FPGA 给 MCU发送数据之前,FLASHLOADER能够正常连接 MCU,过了这段时间就不 能连接了。从这些实验和最后的结果我们可以看出,如果我们在芯片上电,且在 FPGA 给 MCU发送数据之前,连接串口,这 个时候 MCU就能顺利地通过 UART 启用 bootloader,而不受 FPGA 发送的数据影响,而过了这段时间之后,FPGA 会不停 的发送数据给 MCU,而 MCU错误的检测到 CAN FRAME(跟 ST欧洲的应用部门确认,我们的 CAN 检测只是简单的确认一 个下降沿,一个上升沿,再检测到一个下降沿),而进入 CAN bootloader 但是又不能正确检测到 HSE或者不能在 3ms 内检 测到正常的 CAN FRAME ,从而导致 MCU复位。在屏蔽掉 SPI的时候,一切正常。
0 H( t! S) A9 ?; d# f( [" U
! O7 K/ h3 n* x/ d! p/ \2 ~结论 :     9 p0 J, J  L: _# g
人们常说“事出反常必有妖”,如果不是芯片本身被损坏,我们始终坚信通过对硬件、系统、软件、以及手册的全面查找,一定能找出问题。 9 k& ~( \/ }9 x/ d( ]5 b

3 u( u* n* L& U. F: W
# G: X8 l: R4 k5 ]+ l( d+ m/ H' J2 c % J5 T. {6 @% h  v# I- ^- O- ^

' z' c. a, T5 Y

; p- u7 `, D- d* ?( E) y
' c. N, u9 `" B$ e; W
赞 收藏 3 评论4 发布时间:2019-3-28 21:44

举报

4个回答
一代睡神的崛起 回答时间:2019-3-29 09:18:57
之前好像在哪里看到过
木木&点点 回答时间:2019-3-29 12:21:36
一代睡神的崛起 发表于 2019-3-29 09:18% e& e8 y0 z4 ^, h, y7 c: `6 u$ F' h, f
之前好像在哪里看到过
+ j) l+ i) B* F; E6 W" v& c1 u
分享文
Kevin_G 回答时间:2019-3-29 12:50:34
这个很厉害
yanlinwei 回答时间:2019-3-29 13:49:52
分析的很详细
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版