使用STM32CubeIDE生成External Loader

工具就要用全套

玩STM32那就干脆使用ST官方的CubeIDE、CubeProgrammer来干STM32的活。
外部flash烧录算法那也用ST家工具的尝试着做一个吧。

代码已经发布到gitee

ExternalLoader

创建STM32CubeIDE工程

  • 在.ioc文件中配置好外设后,在Project Manager选项卡下勾选Do not generate the main(),如下图。勾选完毕。选择LL库生成代码,因为HAL库生成的代码涉及systick中断,本工程的代码不使用中断。然后生成代码即可。
    在这里插入图片描述

  • 添加[External Loader]例程文件中[Sources/Loader Files文件夹]到工程中。如果装了STM32CubeProgrammer,例程可以在安装目录的xxx\STM32CubeProgrammer\bin\ExternalLoader中找到。此处我将例程一起放入工程中。修改文件,完善SPI FLASH相关接口。

  • 复制TrueSTDUIO工程中的[linker]文件到工程中。在工程属性中添加该linker文件。
    在这里插入图片描述

对ExternalLoader例程的修改之处

  • 修改linker文件 .Dev_Info
  • 修改Dev_Inf.c文件,指定结构体分配到 .Dev_Info段中

编译相关选项设置

  • Debug level 设置。
    在这里插入图片描述

  • 去掉红框里2个勾。使得函数所在的段,数据所在的段按照linker分配的段编译。
    在这里插入图片描述

  • 在Build Steps中添加命令cmd.exe /C copy/Y "${ProjName}.elf" ".\${ProjName}.stldr"
    在这里插入图片描述

编写SPI FLASH 相关函数,替换示例文件的接口为开发板对应的SPI FLASH程序

  • 编译完成后,将stldr文件到复制到CubeProgrammer中对应的烧录算法文件夹中。

Test

建立TEST工程。使用2个相同数组,1个数组分配在片内作为比较使用,另一个数组分配在SPI FLASH上。记得在linker文件中分配好片外存储段。注意地址与ExternalLoader描述地址对应。

验证方式

  • 烧录程序验证,在CubeProgrammer中选择算法,烧录后,读取SPI FLASH相应的地址。看数据是否一致。

  • 开发板运行程序取出SPI FLASH中数组比较验证。
    在这里插入图片描述

  • 也可以使用读写外部flash功能测试ExternalLoader算法是否有效。
    在这里插入图片描述

后记

SPI 时钟似乎要设置到比较高的时钟频率写入才会正常。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值