From f16b8fc32a1ef0efe9e36cab2dde49d0c7a4205f Mon Sep 17 00:00:00 2001 From: Karel Gardas Date: Fri, 10 Jun 2022 14:00:12 +0200 Subject: bsps/stm32h7: allow config and usage of QSPI memory on stm32h757i-eval BSP The QSPI memory is initialized and used only when the BSP configure file sets QSPI memory size to non-zero value. Currently QSPI is run in memory mapped mode which allows future RTEMS binary linkage and upload into QSPI memory. Sponsored-By: Precidata --- .../boards/stm/stm32h757i-eval/stm32h7-bspstarthooks.c | 17 +++++++++++++++++ bsps/arm/stm32h7/include/bsp.h | 1 + 2 files changed, 18 insertions(+) (limited to 'bsps/arm') diff --git a/bsps/arm/stm32h7/boards/stm/stm32h757i-eval/stm32h7-bspstarthooks.c b/bsps/arm/stm32h7/boards/stm/stm32h757i-eval/stm32h7-bspstarthooks.c index 8d34e357ee..1bb81e3b60 100644 --- a/bsps/arm/stm32h7/boards/stm/stm32h757i-eval/stm32h7-bspstarthooks.c +++ b/bsps/arm/stm32h7/boards/stm/stm32h757i-eval/stm32h7-bspstarthooks.c @@ -36,6 +36,22 @@ #include +#include +static BSP_QSPI_Init_t QSPinit; + +void stm32h7_init_qspi(void) +{ +#if defined(STM32H7_MEMORY_QUADSPI_SIZE) && STM32H7_MEMORY_QUADSPI_SIZE > 0 + /* let's initialize Quad SPI memory here for memory mapped mode */ + /* due to usage of static QSPinit variable please call this function + after bsp_start_clear_bss call since otherwise you would hit uninitialized + variable memory while accessing it and in addition the call to bsp_start_clear_bss + would wipe the variable content later after its initialization here. */ + BSP_QSPI_Init(0, &QSPinit); + BSP_QSPI_EnableMemoryMappedMode(0); +#endif +} + void bsp_start_hook_0(void) { if ((RCC->AHB3ENR & RCC_AHB3ENR_FMCEN) == 0) { @@ -75,4 +91,5 @@ void bsp_start_hook_1(void) SCB_InvalidateICache(); #endif bsp_start_clear_bss(); + stm32h7_init_qspi(); } diff --git a/bsps/arm/stm32h7/include/bsp.h b/bsps/arm/stm32h7/include/bsp.h index 08311bf51e..cd4d25c069 100644 --- a/bsps/arm/stm32h7/include/bsp.h +++ b/bsps/arm/stm32h7/include/bsp.h @@ -62,6 +62,7 @@ void stm32h7_init_power(void); void stm32h7_init_oscillator(void); void stm32h7_init_clocks(void); void stm32h7_init_peripheral_clocks(void); +void stm32h7_init_qspi(void); /** @} */ -- cgit v1.2.3