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

STM32G4 应用程序与 Option Bytes 同时烧录问题

[复制链接]
STMCU小助手 发布时间:2023-2-17 15:50
1. 前言客户使用 STM32G474 系列芯片,在烧录应用程序的同时要对 Option Bytes 中的 DBANK进行修改,采用 STlink Utility 或是 CubeProgrammer 工具进行操作,并希望整个过程只用一次烧录动作就完成,发现烧录的应用程序无法运行。& h' ]) V! F! M
  k) j: P( K: M8 h
/ Q+ r$ I, ~' |# D
2. 问题产生及原因分析
' `9 Q# O3 p4 |2 PSTM32G474 系列芯片具有双 Bank 功能,且默认情况下 Option Bytes 中的 DBANK =1,即双 Bank 使能。但是客户实际的应用使用的是单 Bank,所以需要将 DBANK 设置为 0,所以客户在使用 Utility 或是 CubeProgrammer 工具烧录应用程序时,同时设置 Option Bytes 中的DBANK 为 0。但是当烧录结束后,发现应用程序无法正常运行,需要再次烧录才能运行。
# m& ]* t( s" ^整个烧录的过程,在 Utility 中操作如下图所示,通过 Target ->Automatic Mode->Option bytes configuration 对 DBANK 进行修改,在 File 中选择应用程序文件,然后直接烧录。
2 Y" E( W" F4 L2 t! R
4 u' u$ {: v% I6 L* J
, ^4 q: y) j( t  N
I5O@SH[A4WDQ8FH}45M2$WY.png
( b0 Z0 q, U& g- }
/ o# v# d! W6 O+ D8 G- ?+ B8 v+ H
3 N1 I1 E; K1 {* w, O
在 CubeProgrammer 中操作如下图所示,通过 Erasing & Programming->Automatic Mode->Option bytes commands,写入修改 DBANK 的命令行,在 File 中选择应用程序文件,然后直接烧录。0 N4 b* L1 u2 c0 d

/ `( O% M' q8 I# s
) S+ c% E9 e# @0 u4 L6 H+ s, }) R+ w
$O2LTU}XOHS83]6@_0}PP]T.png & E  G* i, _8 n; j

! x- m. k' M4 _1 z5 J: b

1 u! [) \& Y9 f8 m& G+ ?$ Z+ Q* w整个操作流程是正确的,以 CubeProgrammer 为例,整个操作的日志如下,显示所有操作正常完成。
% Y' {2 j' Z7 {6 o) }- X- I
) z, N1 P7 z/ h5 c# r
0 L- X1 l7 W& U2 k: \8 [
GV(6]JHLT6HJDUKYLWY745Q.png 0 C7 l" [! U+ n6 A

' X; I0 N* T$ z! V$ a+ m  f1 |

# O# }4 L4 @1 ~( M# ]但是仔细阅读日志,可以发现整个操作,首先烧录的是应用程序,然后再进行 Option Bytes 的修改,也就是说,在烧录应用程序的时候,MCU 依旧是工作在双 bank 模式下,待程序烧录完成,将双 Bank 修改为单 Bank,注意 DBANK 的修改将会改变 Flash 的取指方式,如下:
3 h9 h; ^' T( q7 U" P( B- q• Single bank mode DBANK=0: read access of 128 bits* X, j, l- n% n+ V8 r  W. G
• Dual bank mode DBANK=1: read access of 64 bits
. U- D9 D5 l5 A& E+ j& w; d4 l  e可以通过单步操作的方式来查看 Flash 中内容的区别。在双 Bank 模式下烧录程序后,读出Flash 内容如下:
  ?( _" ^8 N+ L7 ?( m3 \
- Z& @  C- @3 u. U2 }) [5 E% O" L+ A

, w- e6 ^- S6 P4 f$ M, `  \# ]/ o$ o 66FD0MB~M[HE~(H{K~([A$Y.png
9 d; o- x  G+ q/ G7 S" E" \' w6 q: ~+ ~! d5 W" c/ {3 r8 p" }5 w

" ]" W$ _7 t2 |  w! P将 DBANK 设置为单 Bank 模式,再次读取 Flash 内容如下:
0 |4 X- }' j; ]6 O8 {% I* R+ |$ H0 G
' V- n5 A% u2 g3 K4 M
7 K' Z9 O" n# b* u- ~) Z
P]PN1D58FQOEWB_H))MORZW.png 2 a6 U" k$ v" ^0 ]6 ~$ b
; q0 T- u  Z/ S* T! x2 A

- s' J8 j6 W1 _8 D4 h对比以上的内容,可以发现由于取指方式的改变,读取的 Flash 中内容发生了变化,后者出现了大片的空白空间,这也就是此前客户操作方式在完成烧录后程序无法运行的原因。+ L- V5 H' m* t! g. z* `. I
/ j* }1 a7 n$ w) q3 y$ c" V  |, G) g
0 M0 W  W9 V2 x% S$ Q8 U* O8 w

$ T. O- R7 Y/ B  K, ?完整版请查看:附件 STM32G4 应用程序与 Option Bytes 同时烧录问题.pdf (478.24 KB, 下载次数: 2)
赞 收藏 评论0 发布时间:2023-2-17 15:50

举报

0个回答

所属标签

相似技术帖

官网相关资源

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