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

通过STM32CubeMX制作外部Flash的烧写驱动(.stdlr)

[复制链接]
gaosmile 发布时间:2021-1-13 12:05

通过STM32CubeMX制作外部Flash的烧写驱动(.stdlr)

前言

目前,越来越多的应用需要扩展外部的Flash来满足存储需求。那么,在调试及批量生产的过程中,需要对外扩的Flash进行烧录操作。由于STM32ST-LINKUtility以及STM32CubeProgrammer中,对Flash支持的型号有限,只能覆盖一部分MCU和Flash的型号,无法完全满足客户的需求。而且,它提供的externalloader的制作模板存在覆盖的芯片型号较少,且无法前期QSPIFlash调试的问题。本文旨在提供一种通过stm32CubeMX制作externalFlashloader的方法。客户可以根据自己的型号,进行定制化的生成。本文中,以某客户实际使用的MCU(STM32H750)和Flash(S25LP128F)为例进行讲解。

准备工作

安装STM32CubeIDE

安装MCU对应型号的HAL库

Externalloader开发

ExternalLoader的开发分成三个部分,第一部分是使用STM32CubeMX进行工程的配置及生成。第二部分是外部Flash的驱动调试,主要包含初始化,擦除,写入以及读出等操作。第三部分调用驱动函数进行externalloader的生成,包括外部Flash信息的定义,包括Flash容量的大小,page的大小,以及Sector相关的信息;第三步中externalloader所需要的代码及对应器件的驱动,可以在下面的GitHub仓库中获取,同时也欢迎大家将自己调试好的器件驱动提交到该仓库。

地址:

https://github.com/WellinZHANG/External_Loader

使用STM32CubeMX生成工程

此处,我们使用STM32CubeIDE集成的STM32CubeMX进行工程的配置和生成。

新建工程

选择对应的器件,填入工程名称,并选择存放位置:

管脚配置

按照硬件原理图选择好对应的Flash管脚,此处选择为Bank2,配置如下图。注意调整管脚的速度为High,同时使能QSPI的中断。FlashSize值设置为N,Flash的大小配置2N+1。

时钟配置

根据板子上的时钟源,进行对应的时钟配置,此处采用内部作为系统PLL的时钟源。

生成工程

切换到CodeGenerator选项卡,勾选“Generateperioheralinitializationaspairof‘.c/.h’filesperperipheral”选项。

调试QSPI驱动

从开篇提到的GitHub仓库中获取相关的驱动代码。

第一步

将External-LoadersQSPItesting目录mian_test.c中的代码添加到工程中对应的main.c文件中。

注意添加代码时保留USERCODEBEGINx和USERCODEENDx标签,否则添加的代码会在CubeMX重新生成代码时被覆盖掉。

第二步

将External-LoadersQSPIDriversIS25LP128F目录下的QSPI的HAL驱动文件替换工程中对应的文件。

第三步

打开CubeMX,重新生成工程。因为为了适配所有系列的QSPI接口,GitHub所提供QSPI的HAL驱动中,没有提供相应的QSPI外设配置函数,需要通过CubeMX来生成。

第四步

如上图所示由于每个型号的FLASH的控制指令略有差别,所以在此步需要根据自己选用的QPSIFLASH器件进行调整。同时需要进行调试QSPI的读写是否正常。如果QSPIFlash读写不正常,那么在下图中标注的位置添加断点,就可以排查是哪一个环节出错,进一步对驱动进行调整。

修改配置生成QSPILoader

完成QSPI的驱动调试之后,我们需要添加生成externalLoader所需要的代码并修改对应的配置。

第一步

添加对应的代码,存放在External-LoadersLoader_Files目录下,由于H7和其他的系列的linkerfile有所区别,所以此处分为H7和others两个文件夹进行存放。我们此处选用H7目录下的问题件。将所有的文件添加到工程中。

第二步

修改Dev_Inf.c中的name为你想设置的名称,一般设置为MCU+Flash名称。

第三步

修改Linker的配置,通过“project”->“Properties”打开设置页。将红框内的ld文件修改为linker.ld.(已经在第一步中添加到工程)。

第四步

修改配置,编译后生成stdlr文件。通过“project”->“Properties”打开设置页,在“postbuildsteps”处添加如下指令:

最后,编译便可在工程目录下生成对应的stdlr文件。将其复制到STM32CubeProgrammer安装目录下的extralloader文件夹下,便可使用。

总结

通过该方法可以快速的生成一个外部烧写脚本对外部的QSPIFLASH进行烧录。


$ C% G8 y% Z/ W; H* P) L
收藏 1 评论0 发布时间:2021-1-13 12:05

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版