0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_pJlTbmA9 来源:STM32单片机 作者:STM32单片机 2023-09-28 18:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、引言

客户使用 STM32G474 系列芯片,在烧录应用程序的同时要对 Option Bytes 中的 DBANK 进行修改,采用 STlink Utility 或是 CubeProgrammer 工具进行操作,并希望整个过程只用一次烧 录动作就完成,发现烧录的应用程序无法运行。

2、问题产生及原因分析

STM32G474 系列芯片具有双 Bank 功能,且默认情况下 Option Bytes 中的 DBANK =1,即双 Bank 使能。但客户实际的应用是单 Bank,所以需要将 DBANK 设置为 0,这样客户在使用 Utility 或是 CubeProgrammer 工具烧录应用程序时,同时设置 Option Bytes 中的DBANK 为 0。但是当烧录结束后,发现应用程序无法正常运行,需要再次烧录才能运行。

整个烧录的过程,在 Utility 中操作如下图所示,通过 Target ->Automatic Mode->Option bytes configuration 对 DBANK 进行修改,在 File 中选择应用程序文件,然后直接烧录。

1668391056695991.png

在 CubeProgrammer 中操作如下图所示,通过 Erasing Programming->Automatic Mode->Option bytes commands,写入修改 DBANK 的命令行,在 File 中选择应用程序文件,然后直接烧录。

1668391067381707.png

整个操作流程是正确的,以 CubeProgrammer 为例,整个操作的日志如下,显示所有操作正常完成。

1668391075150345.png

但是仔细阅读日志,可以发现整个操作,首先烧录的是应用程序,然后再进行 Option Bytes 的修改,也就是说,在烧录应用程序的时候,MCU 依旧是工作在双 bank 模式下,待程序烧录完成,将双 Bank 修改为单 Bank,注意 DBANK 的修改将会改变 Flash 的取指方式,如下:

• Single bank mode DBANK=0: read access of 128 bits

• Dual bank mode DBANK=1: read access of 64 bits

可以通过单步操作的方式来查看 Flash 中内容的区别。在双 Bank 模式下烧录程序后,读出Flash 内容如下:

1668391083283163.png

对比以上的内容,可以发现由于取指方式的改变,读取的 Flash 中内容发生了变化,后者出现了大片的空白空间,这也就是此前客户操作方式在完成烧录后程序无法运行的原因。

3、解决方案

通过以上的分析,要实现客户的要求,必须首先对 Option Bytes 进行修改,将 Flash 配置为单 Bank 模式后,才能进行应用程序的烧录,但是在 Utility 或是 CubeProgrammer 中无法修改其本身的操作时序,无法通过一次操作的方式完成,必须分成两步来完成,即:

• 修改 Option Bytes 中的 DBANK

• 烧录应用程序

那么客户最希望的只用一个步骤完成所有的操作是不是没法实现了?别急,ST 还提供了另一个工具,ST_LINK CLI, 它的操作完全通过命令行的方式来完成。其路径位于 ST_LINK Utility在安装目录下,如下:

1668391111641657.png

1668391119778665.png

可以通过 cmd 窗口中直接调用该工具,举个例程如下:

D:ST-LINK Utility>st-link_cli.exe -c SWD -OB DBANK=0 -Rst -ME -P d:test.hex -V while_programming

1668391137416239.png

以上可以看到 Option Bytes 首先完成修改,然后让芯片进行 reset,保证新的 Option Bytes重新加载并生效,最后完成应用程序的烧录。

4、小结

这里分析了客户使用烧录工具 ST Link Utility 和 STM32CubeProgrammer 同时烧录 Option Bytes 中的 DBANK 设置和应用程序后程序无法正常运行的问题,给出了采用 ST-LINK_CLI.exe 工具一次性操作完成 Option Bytes 与应用程序烧录的解决方案。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2305

    文章

    11121

    浏览量

    371164
  • 烧录
    +关注

    关注

    8

    文章

    305

    浏览量

    36945
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录

    请问MPLAB X IDE 中怎么设置bootloader和应用程序的起始地址和大小,不然默认从0开始烧录
    发表于 10-24 16:42

    ‌基于STM32G474的数字电源控制板设计解析与应用指南

    STMicroelectronics STEVAL-DPSG474Q数字电源控制盘基于STM32G4系列的STM32G474QE微控制器。STEVAL-DPSG474Q可控制需要高引脚数的转换器的功率级(PFC、DCDC、DCAC),也可实现双级转换控制 (PFC+DCD
    的头像 发表于 10-15 13:59 764次阅读
    ‌基于<b class='flag-5'>STM32G</b>474的数字电源控制板设计解析与应用指南

    昂科烧录器支持ST意法半导体的32位微控制器STM32G474QET

    昂科技术作为芯片烧录领域的领导者,在推出新版烧录软件的同时,也宣布扩充了其兼容芯片型号列表。意法半导体的32位微控制器STM32G474QET位列新增型号之中,现已获得昂科通用
    的头像 发表于 09-18 17:20 697次阅读
    昂科<b class='flag-5'>烧录</b>器支持ST意法半导体的32位微控制器<b class='flag-5'>STM32G</b>474QET

    STM32程序烧录方式

    电子发烧友网站提供《STM32程序烧录方式.pdf》资料免费下载
    发表于 08-28 16:03 6次下载

    STM32H750B-DK 板载STLINK 烧录自己程序导致无法使用了,怎么解决?

    STM32H750B-DK 板载STLINK 烧录自己程序导致无法使用了,说有此开发板的板子STLINK 程序,谢谢! 补充:STM32H7
    发表于 06-20 06:15

    程序烧录原理

    什么是烧录-义嘉泰带你深度了解IC烧录服务:https://bbs.elecfans.com/jishu_2491063_1_1.html 程序烧录是将编写好的
    发表于 06-17 11:29

    昂科烧录器支持ST意法半导体的32位微控制器STM32G031G6U

    芯片烧录领导者昂科技术传来重要消息,其烧录软件迎来了一次重大的版本升级。在发布新版本烧录软件的同时,昂科技术同步宣布新增了多款兼容的芯片型号,意法半导体的32位微控制器
    的头像 发表于 06-14 10:26 578次阅读
    昂科<b class='flag-5'>烧录</b>器支持ST意法半导体的32位微控制器<b class='flag-5'>STM32G031G</b>6U

    昂科烧录器支持ST意法半导体的主流微控制器STM32G431KBT

    通过技术适配,正式成为昂科烧录工具AP8000的兼容型号,进一步拓展了AP8000的应用场景与适配能力。 STM32G431KBT基于高性能Arm®Cortex®-M4 32位RISC内核,工作频率高达
    的头像 发表于 05-14 11:33 627次阅读
    昂科<b class='flag-5'>烧录</b>器支持ST意法半导体的主流微控制器<b class='flag-5'>STM32G</b>431KBT

    模拟STM32进行ISP烧录_录屏

    模拟STM32进行ISP烧录_录屏
    发表于 04-16 17:31 0次下载

    STM32G4串口无法发送正确的信息是怎么回事?

    STM32G4串口无法发送正确的信息
    发表于 03-14 07:14

    STM32G4 option配置和SWD配置导致无法连接STLINK怎么解决?

    from option bit),使得默认从Flash启动; * CubeMX配置了SWD为GPIO功能,生成的Keil工程,直接进行编译后烧录; * ## 结果 * MCU直接从Flash启动,并立即将SWD引脚配置为GPIO。并且无法通过BOOT0引脚改变启动方
    发表于 03-14 06:48

    STM32F030F4P6不能烧录程序的原因?怎么解决?

    STM32F030F4P6不能烧录程序
    发表于 03-11 06:17

    STM32CubeProgrammer软件烧录程序失败的原因?

    STM32CubeProgrammer软件烧录程序失败
    发表于 03-11 06:04

    STM32和MCP2515通信,STM32这端还需要接CAN PHY吗?

    最近在做CAN通信的相关项目,STM32G4负责接收,对端是一个MCP2510+TJA1040的组合, 想问下应该如何接?STM32这端还需要接CAN PHY吗?
    发表于 03-10 06:18

    STM32Cubeprogrammer烧录TrustZone的示范程序不成功怎么解决?

    Cube_FW_U5_V1.7.0ProjectsNUCLEO-U575ZI-QExamplesGPIOGPIO_IOToggle_TrustZoneMDK-ARMGPIO_IOToggle_TrustZone_S(GPIO_IOToggle_TrustZone_S.hex), 烧录之前已经把
    发表于 03-07 08:28