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

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

[复制链接]
STMCU小助手 发布时间:2023-2-17 15:50
1. 前言客户使用 STM32G474 系列芯片,在烧录应用程序的同时要对 Option Bytes 中的 DBANK进行修改,采用 STlink Utility 或是 CubeProgrammer 工具进行操作,并希望整个过程只用一次烧录动作就完成,发现烧录的应用程序无法运行。# O" \! ?. t$ D

" M$ F, v' a' ?, Q4 n

/ w1 H3 j; h9 \1 w2 b2. 问题产生及原因分析! [/ P( H; r4 P+ {
STM32G474 系列芯片具有双 Bank 功能,且默认情况下 Option Bytes 中的 DBANK =1,即双 Bank 使能。但是客户实际的应用使用的是单 Bank,所以需要将 DBANK 设置为 0,所以客户在使用 Utility 或是 CubeProgrammer 工具烧录应用程序时,同时设置 Option Bytes 中的DBANK 为 0。但是当烧录结束后,发现应用程序无法正常运行,需要再次烧录才能运行。2 ?7 b  m3 `  R7 K! ^/ x
整个烧录的过程,在 Utility 中操作如下图所示,通过 Target ->Automatic Mode->Option bytes configuration 对 DBANK 进行修改,在 File 中选择应用程序文件,然后直接烧录。
6 x+ h* H) _, O/ `( F0 J( V. ?
) u/ H. m) g" S! T3 g6 \

* i. q" i* p! O; S6 b I5O@SH[A4WDQ8FH}45M2$WY.png " \' p3 _# I# H6 V' ?- k) l
1 K' s! D& b7 U/ W0 M7 s! z' {

. z$ h" L4 F6 v9 Q5 R$ Q在 CubeProgrammer 中操作如下图所示,通过 Erasing & Programming->Automatic Mode->Option bytes commands,写入修改 DBANK 的命令行,在 File 中选择应用程序文件,然后直接烧录。
4 {/ m. c: u5 t. z  Q9 V$ u" w
* ~8 c- F1 x2 m0 i9 N

% X" K0 Z1 L, H* ]  e! L/ L. z8 | $O2LTU}XOHS83]6@_0}PP]T.png
6 O* r8 j. O8 }# R( N- x+ Q4 G3 E% F) v/ n( r5 E! C
/ t3 @, ^5 c% A+ Q8 E- W
整个操作流程是正确的,以 CubeProgrammer 为例,整个操作的日志如下,显示所有操作正常完成。
1 @5 D& W% |. {( h# H# R2 T, X6 G$ t, E+ a+ Y& l4 ]2 u
) K1 S$ L- U; q% b0 `
GV(6]JHLT6HJDUKYLWY745Q.png
% @+ s7 s& [2 C; K- F! q
( _( k0 W" k$ \) k
9 ]* Y/ y+ N8 Q$ @0 b: r
但是仔细阅读日志,可以发现整个操作,首先烧录的是应用程序,然后再进行 Option Bytes 的修改,也就是说,在烧录应用程序的时候,MCU 依旧是工作在双 bank 模式下,待程序烧录完成,将双 Bank 修改为单 Bank,注意 DBANK 的修改将会改变 Flash 的取指方式,如下:
- t- S; n9 p1 ^" z( _' e' a. Q" O• Single bank mode DBANK=0: read access of 128 bits
2 L- H& E; S' f( ^• Dual bank mode DBANK=1: read access of 64 bits% l" \- C! }% m
可以通过单步操作的方式来查看 Flash 中内容的区别。在双 Bank 模式下烧录程序后,读出Flash 内容如下:
. B) `# G; j" h* b$ t7 S8 d# q2 |& |* D& d4 @
, K( l+ w2 o) A# `9 @1 N8 ^& d: U
66FD0MB~M[HE~(H{K~([A$Y.png
+ o% n. p* c+ A! ]$ n2 x) @1 m* Y% {: o2 `" j; f

% u& x6 G+ w2 o1 a& r1 G! a3 f将 DBANK 设置为单 Bank 模式,再次读取 Flash 内容如下:" b" h/ S8 z/ Q; s4 Y& ]6 b% g
. j0 G) J3 v) t9 |3 v% a

! P0 u1 T& X8 H P]PN1D58FQOEWB_H))MORZW.png
3 i( g! ?& z4 O8 l) ^, F6 H% v+ n/ k2 t) J% D- O( D. z/ H
1 p$ C& b7 g& c& p' k0 B
对比以上的内容,可以发现由于取指方式的改变,读取的 Flash 中内容发生了变化,后者出现了大片的空白空间,这也就是此前客户操作方式在完成烧录后程序无法运行的原因。, P6 \1 R& R5 `2 W. L

7 K1 l  J# x0 L' o# W' ?5 m
1 k6 v$ p) Y) [' f4 X

, m6 v- n4 W5 t# n' H6 I完整版请查看:附件 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 手机版