由于对能够支持新功能和复杂功能的应用的需求不断上升,对配备更大闪存区的设备的需求也在增加。而使用外部闪存可以提供具有近似性能水平的更高存储能力,同时为增加闪存区的需求提供一种经济划算的解决方案。这样一来,STM32F7x0超值系列和STM32H750超值系列设备能够以更小的内部闪存区来应对市场需求。 本应用笔记描述了在这些超值系列设备上从外部存储器执行代码构建应用程序所需的步骤。详细讲解了如何从内部闪存启动,然后跳转到片外存储器的用户程序去执行。 外部存储器代码执行原则: STM32CubeF7 v1.12.0和STM32CubeH7 v1.3.0固件包提供多个应用程序,用于演示如何从内部闪存启动以及如何配置外部存储器并跳转到用户应用程序(位于外部存储器上)。有两个可能的用例可用:XiP和BootROM。 • XiP用例旨在从外部闪存(QSPI或FMC-NOR闪存)“芯片内执行”。用户应用程序代码应链接到目标执行存储器地址(外部QSPI或FMC-NOR闪存)。 • BootROM用例旨在演示如何从内部闪存启动,配置外部RAM存储器(SDRAM或SRAM),将用户应用程序二进制文件从代码存储区域(SDCARD或 SPI-Flash存储器)复制到外部SDRAM或外部SRAM,然后跳转到用户应用程序。用户应用程序代码应链接到目标执行存储器地址(外部SDRAM或SRAM)。 下表1中所述的应用程序可在固件包中\Applications\ExtMem_CodeExecution 路径下获得,供下列板使用: • STM32F723E-Discovery 板针对 STM32F730 器件 • STM32F756G_EVAL 板针对 STM32F750 器件 • STM32H743I_EVAL 板针对 STM32H750 器件。 外部存储器启动应用程序负责初始化所需资源,以使外部存储器随时可用。该应用程序根据用户配置初始化所需资源(参见文档第3.3 节配置)。 外部存储器启动应用程序必须设置主堆栈指针,并将应用程序配置为在外部存储器上执行。该类型启动方案支持大小可调的用户应用程序。 外部存储器启动应用程序确保在跳到用户应用程序之前重置或释放安装阶段之后不再需要任何的资源。下图展示了外部存储器代码启动方案:
|