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

【实战经验】STM32L011&STM32F091空片检测进行System Bootloader编...

[复制链接]
eefishing 发布时间:2016-9-20 15:46
STM32L011&STM32F091 空片检测进行 System Bootloader 编程注意事项

5 a9 |! t* N/ Y+ [/ F+ [& h/ }4 m0 t& D/ g* H3 D
前言

, K# V2 }6 w5 p, A部分STM32 是具有空片检测功能的,以便直接进入System Memory 中执行Bootloader,方便通过某些个外设来直接进行编1 c- e, ]* T+ I/ }0 v6 i. B
程。比如STM32L011xx、STM32L021xx、STM32F04x 和STM32F09x。有看过《STM32F091 空片使用System Bootloader
$ D% @8 R8 [5 D( E2 O# c下载代码》和《STM32L011x 和STM32L021x 启动模式注意事项》的都知道这个功能。
0 r& ?) ?1 G4 k* ^0 W7 @$ A% {4 I8 U* w/ {, i3 L+ d
问题/ j8 n8 S! ?/ f5 C. S
某客户在其产品的设计中,使用了STM32L011D4P6。客户工程师反映STM32L011 为空片的时候,空片检测功能不存在,
8 ^$ ]/ f! b5 d) \" w$ h无法使用串口升级程序进行升级。8 L0 V0 X8 V7 o3 L1 ^

# i& z% |( Q1 l& X: e! T调研
& n* W2 C) }6 Q4 G. P/ a$ t1.了解问题
! C8 p6 V0 h& g4 o拿到客户的用户板,使用串口工具连接STM32L011D4P6 的USART2(PA9 和PA10),使用Flash Loader Demonstrator" ]  {9 \! ?, g8 I  r* `
对STM32L011D4P6 进行连接。界面如下:
  i# }* s' w; D7 \2 b( z- h* ? 11.png # R) q0 w: r8 z8 l7 ?

- j9 X/ ?5 D7 u  d# |, t& X当点击按钮“Next”进行连接的时候,此时弹出对话框:
! N4 z- i( ~, f1 x 12.png
( }( a  V0 t$ _无法连接。. _- l( g  a+ k! F- E; k
1 d6 g2 [7 V6 v  s$ x
使用STM32 ST-LINK Utility 对芯片进行连接,并点击菜单“Target → Blank Check”进行空片测试,确认芯片是擦除过的。! C" m$ `' d; B- \! t- g, H, o
13.png 1 M6 c  N4 l% r
客户认为,空片情况下应该可以进入System Memory 而使用Bootloader 进行串口烧写的,为什么就连接不上呢?
  o# ]4 G' q- V9 G5 w+ t8 [& s! A2 {: o! n* h* ^7 |
2.问题分析
* W8 L! p3 i* \0 g8 x* t仔细查看客户的板子,发现客户的BOOT0 脚是拉到低电平的,看起来应该是不会有问题啊。于是,继续在STM32 ST-LINK
* I  }7 q7 y+ h) k3 |0 bUtility 中点击菜单“Target → Option Bytes…”来查看一下STM32L011D4P6 的选项字节,得到如下结果:! w* Z9 O1 n' M$ k
14.png : `% d1 |$ X3 T$ X; |
可以看到,客户在选项字节中配置:nBOOT_SEL = 1, nBOOT0 = 1,nBOOT1 = 1,来达到使用选项字节而不使用BOOT0" e  I% R# [4 |: v: t% `
脚来达到从Flash program memory 启动的。也就是说,BOOT0 脚是没有被使用的。客户认为这个选项字节配置和使用
/ {5 n1 r2 _1 z0 [5 O7 wBOOT0 脚拉低电平来从Flash program memory 启动是一样的。% |5 i3 E( T9 ]* N0 a
2 `% k! G. b+ D) m
此时,再来看一下参考手册RM0037 是如何描述空检测的:
% \0 U! i: a% `5 J( a 15.png + }  W5 s+ M8 S' C0 n) J
从这段话中,我们知道“Empty Check”是内部有一个查空标志,可用于使用Bootloader 对未编程过的芯片进行简单编程。& X* A9 ^  I% N$ a
当这个标志位被置“1”的时候,此芯片被认为是空的,系统将从System memory 中启动Bootloader,以允许用户进行代码( N7 X" N! l& x3 s5 [4 K9 R
下载,而不是从Flash program memory 启动。此标志位只在载入Option bytes 时更新:当地址0x8000 0000 读出的内容为
' m! }6 e0 W8 s$ [" x0x0000 0000 时,此标志位置“1”,否则为“0”。这意味着当烧写完一个空片后需要在系统复位后执行代码的话,是必须4 U! ]" `7 I* W" f' Y7 Y1 l
要重新上电或者在FLASH_CR 寄存器中置位OBL_LAUNCH。' h, y/ a. d; v( ]

0 i  {) r; K7 r' o5 w7 L/ \6 z此处,我们需要注意到这一句话:“This flag is used when BOOT0 pin is configured to select Flash program memory as
6 Z: J$ a6 x" ~1 Jtarget boot area.”注意了,这里写的是BOOT0 脚!不是选项字节中的nBOOT0。所以,在选项字节配置为nBOOT_SEL =
2 M, e7 k. q" J5 @8 n# R8 d& v2 S1, nBOOT0 = 1,nBOOT1 = 1 的情况下,虽然也是空片,却是不能进入System memory 中的Bootloader 的,也就导致无
! p( r: y+ s8 p7 @+ K2 E2 C法在这个情况下使用Bootloader 进行下载代码!" N5 W  ~3 a) K8 g& o; O/ ~
0 r' X+ t7 K* m4 n4 T& k
来看一下STM32F091 的,参考手册RM0091 的“Empty Check”也有这么一句话:“This flag is used when BOOT0 pin is  g! B  v& G) A
defining Main Flash memory as target boot space.”这里说的也是BOOT0 脚!对STM32F091 进行测试,也是一样的情况。
: D7 ]8 O! V% w+ S0 D- E" R0 E
! \; M/ s8 j4 J. _. b0 T% B7 t3.问题解决
" b! F4 N6 a! J. [9 `" U使用STM32 ST-LINK Utility 将STM32L011D4P6 选项字节中的nBOOT_SEL 位清掉,更新成功后复位,再使用Flash5 P+ `6 d) `5 a6 ^
Loader Demonstrator 进行连接,证实已经可以正常连接,虽然此时的BOOT0 脚拉的是低电平。
4 Q( q7 h1 O* Y/ @1 l$ X( _  \2 t7 V- R3 k. r
结论
5 D0 f/ S. }5 A( Y* m/ T在使用空片检测进入System Memory 中使用Bootloader 进行代码下载的时候,条件是启动配置使用的是BOOT0 脚为低电平: B7 T7 X3 q& e1 }, \7 ]
选择从Flash program memory 启动的情况下,而不是使用选项字节“nBOOT_SEL = 1, nBOOT0 = 1,nBOOT1 = 1”选择
1 }- R, I* ]3 H' {. N6 F+ v! @* a; H从Flash program memory 启动的情况下。
  S5 ^2 v2 V% Y/ Q3 R+ j( [0 i- s/ m6 M7 ^/ k* \7 ]1 w0 o
处理9 v# u' @4 ?; E: o+ L" i/ k
在使用空片检测进入System Memory 中使用Bootloader 进行代码下载的时候,应该避免此选项字节情况的发生。特别是不
+ r4 l  e2 {% K& L5 l& s使用JTAG/SWD 接口的情况下,更要小心。; t! [  r0 n. e* q
$ ?+ g6 i$ I' [# L
1 V- p: g8 I! {) c4 W! A% B* F
点击下载文档
" l$ F) w& b  D( d9 {+ S5 m5 G查看更多实战经验( G. F% h! b7 T* P" H

9 o- J! h: d* f' Q" m* Y
收藏 评论1 发布时间:2016-9-20 15:46

举报

1个回答
feixiang20 回答时间:2017-7-1 21:42:40
讲解的很详细
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版