打印
[应用相关]

工程师笔记 | Keil环境下使用外部烧录脚本(stdlr)烧录QSPI

[复制链接]
281|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Keil环境下
使用外部烧录脚本 (stdlr)

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

工具
开发板:STM32F746-DISCO
软件:Keil 5,STM32CubeProgrammerv.2.5.0


烧录方法

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

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

1.打开环境变量设置步骤

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


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



02
Keil下载设置
Keil中,我们采用第三方的工具下载的方式进行下载,步骤如下:

1.配置下载工具如下图所示。最后第三步所填写的命令及参数如下

命令中的.\F746_LED\F746_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不支持文件路径中有空格。

下载结果


结论

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

使用特权

评论回复
沙发
LinkMe| | 2022-10-18 15:24 | 只看该作者
还从来没该过这个,没有keil的flm算法,还自己写了一个。

使用特权

评论回复
板凳
LinkMe| | 2022-10-18 15:24 | 只看该作者
修改这个下载算**影响调试功能吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

410

主题

2097

帖子

2

粉丝