目的
STM32H7S7L8H6H片内拥有一个内部64kbytes ROM,和一个620Kbytes SRAM。
STM32H7S78-DK套件中配备了一个外部ROM(MX66UW1G45GXDI00)和一个外部SRAM(APS256XXN-OBR-BG)。
外部ROM(MX66UW1G45GXDI00):NOR闪存 Serial NOR 1.8V 1Gbit x8 I/O BGA-24 RWW。
外部SRAM(APS256XXN-OBR-BG):动态随机存取存储器 IoT RAM 256Mb OPI (x8,x16) DDR 200MHz, 1.8V, Ind. Temp., BGA24
可见外部配置比片内高很多,而且内部仅设计了一个64kbytes ROM的目的就是希望内部ROM只存Boot程序,而外部ROM才是存用户程序Appli的。
但是通过STM32CubeMX默认生成的工程,无论是Boot、Appli,无一例外地默认都是烧录到内部64kbytes ROM。这显然不是我们想要的。
本文描述如何配置将Appi烧录到外部ROM。
一、硬件情况
外部ram和rom通过XSPI1、XSPI2和MCU通信。
Boot程序烧录到内部ROM,Appli程序烧录到外部ROM。
为了访问外部的RAM、ROM,需要在Boot实现对外部的RAM、ROM的初始化。缺省的Boot配置没有这部分,需要自己添加。
二、STM32CubeMX中配置一个烧录到外部ROM的模板
1、STM32CubeMX中选择从STM32H7H78S-DK开发板开始
选择否,不初始化全部外设,做一个基本的模板
2、XSPI1配置
3、XSPI2配置
4、EXTMEM_MANAGER配置
5、SBS配置
6、flash好像也需要配置
7、CORTEX_M7_BOOT好像也需要配置下
然后生成代码。
分别编译并烧录Boot,Appli。如何正常,Appli应该运行在外部FLASH中了。
观察CubeIDE中Appli的LD文件已经是STM32H7S7L8HXH_RAMxspi1_ROMxspi2_app.LD了,不再是烧录到默认内部地址的STM32H7S7L8HXH_flash_default_app.LD。
三、附件
附件是本文IOC文件可以用STM32CubeMX打开,生成KEIL、CubeIDE工程。
STM32H7S78-DK-TEMPLATE.rar
(6.06 KB)
|