11. 闪存下载
动机
在该步骤中,我们将讨论如何把数据加载到外部闪存。 编译器将编译项目中的文字、字库和图像,并将这些数据生成二进制或十六进制文件。 此数据通常被放入外部闪存。 内部闪存被保留用于程序代码。
在开发过程中,我们需要一种方法将数据写入外部闪存,当然,从闪存读取数据执行程序时就没必要做写入操作。
在开发过程中,我们需要一种方法将数据写入外部闪存,当然,从闪存读取数据执行程序时就没必要做写入操作。
- 为STM32CubeProgrammer编写闪存装载软件
- 使用基于应用程序的专有解决方案
Note
目标
两种将数据写入外部闪存的常见方法:
验证
本节旨在选择并开发一种将数据加载到外部闪存的机制。
验证点 | 基本原理 |
---|---|
数据可以刷入 | 外部闪存可用于图像存储 |
先决条件
以下是本节的验证点:
- 有关闪存的信息,查阅数据手册
- 有关MCU和外部闪存之间的连接的信息
执行
STM32CubeProgrammer的闪存装载软件
STM32CubeProgrammer带有用于各种STM32评估套件的闪存装载程序。 闪存装载软件是可装载到MCU的RAM中的小程序,以便对闪存进行编程。
闪存装载软件包括两部分:
- 配置与闪存通信所需的GPIO和闪存接口
- 适配闪存编程所需的指令序列的闪存算法
这些通常基于现有的闪存装载程序。 如果您可以为正在使用的闪存找到闪存装载软件,最好将该软件作为蓝本并修改GPIO部分。 如果您通过复制评估套件中的闪存电路来设计硬件,则可以直接使用该套件的闪存装载软件。 就是这样。
STM32CubeProgrammer随附的闪存装载软件项目位于安装文件夹中,其路径通常为: C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader
在github上也可以找到Flash加载器项目:
GitHub上的STM32 External Flashloaders基于应用程序的专有解决方案
另一种解决方案是将闪存加载代码包含到应用程序本身。 该理念是,您的应用程序中已存在闪存配置(以便可以从其加载) ,也许您通过之前的测试已经知道如何写一块代码到闪存中。 然后,您只需一种将新的闪存数据传输到您的应用程序的方法。 一种方法是通过UART。 应用程序接收数据流,并将数据逐块写入闪存。
在该操作执行期间,闪存无法处于存储器映射模式,因此通常必须将应用程序置于特殊模式。
可在互联网上找到用于字节传输的开源解决方案。 例如,Y-modem协议在数据上提供16位CRC。
测试
可在互联网上找到用于字节传输的开源解决方案。 例如,Y-modem协议在数据上提供16位CRC。
建议立即彻底测试整个闪存,以尽早发现可能存在的问题。