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算法文件所带来的麻烦。
|