AI开发助手

STM32 Sidekick,官方 AI 开发随身助手

加持快速解决开发问题、获取技术支持

访问STM32 全球技术社区

注册/登录 MyST 账号(已有账号直接登录)

点击社区右下角 Sidekick 图标立即使用

立即前往 更多说明

点击产品型号, 查看更多详情

Keil环境下使用外部烧录脚本(stdlr)烧录QSPI


前言

随着用户的应用越来越复杂,以及GUI等需要大存储空间应用的流行,很多时候我们需要将代码和数据放在外扩的QSPI存储空间。但是这样存在一个在线QSPI烧写的问题,尤其是在应用调试时,需要频繁的修改外部存储空间里的内容。如果调试工具不能够一键烧录,势必会给调试带来诸多的麻烦。


工具

开发板:STM32F746-DISCO
软件:Keil 5,STM32CubeProgrammer v.2.5.0


烧录方法

Keil调试环境下,有两种方式进行外部QSPI存储空间的烧录。一种方式是基于FLM算法,制作相应的.flm算法脚本进行烧录。这种方法需要用户熟悉flm算法,并做好相应的函数编写及调试,相对比较麻烦。本文不针对此方法进行讨论。第二种方式就是通过调用第三方的烧录脚本进行烧写,这里指使用ST公司的STM32CubeProgrammer所提供的相应的.stdlr脚本。STM32CubeProgrammer同时提供了许多模板工程,客户可以很方便的制作自定义的的.stdlr脚本,来匹配自己的硬件设计。下面就教大家如何使用已有的.stdlr脚本来烧录外部QSPI.


1. 设置环境变量

因为该方式用到了STM32CubeProgrammer的命令行模式,建议先把STM32_Programmer_CLI.exe的目录添加到环境变量,便于操作,否则你在DOS环境下很可能要敲老半天路径才进到该文件所在目录。这里以Win10为例:

1) 打开环境变量设置步骤:


2) 添加环境变量为STM32_Programmer_CLI.exe所在的安装目录。默认的目录如下:


C:Program FilesSTMicroelectronicsSTM32CubeSTM32CubeProgrammerin



3) 验证环境变量是否添加成功。打开CMD命令提示符,输入“STM32_Programmer_CLI -version”,显示如下即为设置成功。



2. Keil下载设置
Keil中,我们采用第三方的工具下载的方式进行下载,步骤如下:
1) 配置下载工具如下图所示。最后第三步所填写的命令及参数如下:

STM32_Programmer_CLI -c port=swd -d .F746_LEDF746_LED.hex

-el "C:Program FilesSTMicroelectronicsSTM32CubeSTM32CubeProgrammerinExternalLoaderN25Q128A_STM32F746G-DISCO.stldr"

命令中的.F746_LEDF746_LED.hex是工程生成的Hex文件,需要按照所在的工程进行修改。烧录脚本stldr的目录也需要对应的按照实际进行修改。当然,此处可以修改对应的命令来使用不同的接口烧录,或者做一些其他的事情。具体的可以参考STM32CubeProgrammer的使用手册(UM2237)。


STM32_Programmer_CLI会根据F746_LED.hex中的地址信息决定将代码烧录到哪个地址,所以编译F746_LED.hex之前,必须在分散加载文件(*.sct)中说明将代码放到外部QSPI Flash的地址范围。关于如何修改分散加载文件此处就不展开说明了。对于bin文件,可以通过在STM32_Programmer_CLI命令中指明烧录地址来将其烧写到外部QSPI Flash中。命令格式,请参考UM2237。
另外,STM32CubeProgrammer v2.6.0不支持文件路径中有空格。


2) 下载结果


结论

本文介绍了一种简单的方法,使keil能够利用现有ST提供的.stdlr烧录脚本进行外部存储器的烧写,从而回避自行制作基于keil的flm算法文件所带来的麻烦。




微信扫一扫

在线选型工具

PKA: public Key accelerator

OTFDEC: On-the-fly decryption engine

FMAC: Math accelerator filter unit

Cordic: hardware acceleration of certain mathematical functions

RF: Radio module, including LoRa,(G)FSK,(G)MSK,BPSK