G431 only has 1 Flash Bank. Code is written with the assumption all G4 devices has 2 Flash Banks. Fix: Commented out SYSCFG_MEMRMP_FB_MODE since stm32g431KB only has 1 Flash Bank. flash_api.c checks for this #define and if it's set understands it as if the chip has 2 flash banks. STM32G4xx_HAL_Driver/stm32g4xx_hal.c also needs to check for this #define since it has flash bank swapping commands that are called in the startup sequence. Fix: Check for SYSCFG_MEMRMP_FB_MODE in Enable/Disable Flash bank swapping.

pull/13979/head
Tauno Magnusson 2020-11-27 23:28:04 +01:00
parent 98e48828b1
commit d720792191
2 changed files with 8 additions and 3 deletions

View File

@ -9604,9 +9604,10 @@ typedef struct
#define SYSCFG_MEMRMP_MEM_MODE_1 (0x2UL << SYSCFG_MEMRMP_MEM_MODE_Pos) /*!< 0x00000002 */ #define SYSCFG_MEMRMP_MEM_MODE_1 (0x2UL << SYSCFG_MEMRMP_MEM_MODE_Pos) /*!< 0x00000002 */
#define SYSCFG_MEMRMP_MEM_MODE_2 (0x4UL << SYSCFG_MEMRMP_MEM_MODE_Pos) /*!< 0x00000004 */ #define SYSCFG_MEMRMP_MEM_MODE_2 (0x4UL << SYSCFG_MEMRMP_MEM_MODE_Pos) /*!< 0x00000004 */
#define SYSCFG_MEMRMP_FB_MODE_Pos (8U) // Commented out because G431KB only has one Flash Bank
#define SYSCFG_MEMRMP_FB_MODE_Msk (0x1UL << SYSCFG_MEMRMP_FB_MODE_Pos) /*!< 0x00000100 */ // #define SYSCFG_MEMRMP_FB_MODE_Pos (8U)
#define SYSCFG_MEMRMP_FB_MODE SYSCFG_MEMRMP_FB_MODE_Msk /*!< User Flash Bank mode selection */ // #define SYSCFG_MEMRMP_FB_MODE_Msk (0x1UL << SYSCFG_MEMRMP_FB_MODE_Pos) /*!< 0x00000100 */
// #define SYSCFG_MEMRMP_FB_MODE SYSCFG_MEMRMP_FB_MODE_Msk /*!< User Flash Bank mode selection */
/****************** Bit definition for SYSCFG_CFGR1 register ******************/ /****************** Bit definition for SYSCFG_CFGR1 register ******************/
#define SYSCFG_CFGR1_BOOSTEN_Pos (8U) #define SYSCFG_CFGR1_BOOSTEN_Pos (8U)

View File

@ -595,7 +595,9 @@ void HAL_SYSCFG_CCMSRAMErase(void)
*/ */
void HAL_SYSCFG_EnableMemorySwappingBank(void) void HAL_SYSCFG_EnableMemorySwappingBank(void)
{ {
#if defined(SYSCFG_MEMRMP_FB_MODE)
SET_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_FB_MODE); SET_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_FB_MODE);
#endif
} }
/** /**
@ -610,7 +612,9 @@ void HAL_SYSCFG_EnableMemorySwappingBank(void)
*/ */
void HAL_SYSCFG_DisableMemorySwappingBank(void) void HAL_SYSCFG_DisableMemorySwappingBank(void)
{ {
#if defined(SYSCFG_MEMRMP_FB_MODE)
CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_FB_MODE); CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_FB_MODE);
#endif
} }
#if defined(VREFBUF) #if defined(VREFBUF)