stm32cube: update stm32g0 to version V1.4.1
Update Cube version for STM32G0xx series
on https://github.com/STMicroelectronics
from version v1.4.0
to version v1.4.1
Signed-off-by: Francois Ramu <[email protected]>
diff --git a/stm32cube/stm32g0xx/README b/stm32cube/stm32g0xx/README
index 574252d..c2d1612 100644
--- a/stm32cube/stm32g0xx/README
+++ b/stm32cube/stm32g0xx/README
@@ -6,7 +6,7 @@
http://www.st.com/en/embedded-software/stm32cubeg0.html
Status:
- version v1.4.0
+ version v1.4.1
Purpose:
ST Microelectronics official MCU package for STM32G0 series.
@@ -23,7 +23,7 @@
https://github.com/STMicroelectronics/STM32CubeG0
Commit:
- c6cb8664ae0542c33f81046d735ee9492d5df0f3
+ 5cb06333a6a43cefbe145f10a5aa98d3cc4cffee
Maintained-by:
External
diff --git a/stm32cube/stm32g0xx/drivers/include/stm32g0xx_hal_flash.h b/stm32cube/stm32g0xx/drivers/include/stm32g0xx_hal_flash.h
index ec071d3..456bb4e 100644
--- a/stm32cube/stm32g0xx/drivers/include/stm32g0xx_hal_flash.h
+++ b/stm32cube/stm32g0xx/drivers/include/stm32g0xx_hal_flash.h
@@ -876,24 +876,22 @@
#define FLASH_SIZE_DATA_REGISTER FLASHSIZE_BASE
#if defined(FLASH_DBANK_SUPPORT)
-#define FLASH_BANK_SIZE (FLASH_SIZE >> 1) /*!< FLASH Bank Size is Flash size divided by 2 */
-#else
-#define FLASH_BANK_SIZE (FLASH_SIZE) /*!< FLASH Bank Size */
-#endif
+#define OB_DUAL_BANK_BASE (FLASH_R_BASE + 0x20U) /*!< Not use cmsis FLASH alias to avoid iar warning about volatile reading sequence */
+#define FLASH_SALES_TYPE_Pos (24U)
+#define FLASH_SALES_TYPE (0x3UL << FLASH_SALES_TYPE_Pos) /*!< 0x000001E0 */
+#define FLASH_SALES_TYPE_0 (0x1UL << FLASH_SALES_TYPE_Pos) /*!< 0x01000000 */
+#define FLASH_SALES_TYPE_1 (0x2UL << FLASH_SALES_TYPE_Pos) /*!< 0x02000000 */
+#define FLASH_SALES_VALUE ((*((uint32_t *)PACKAGE_BASE)) & (FLASH_SALES_TYPE))
+#define OB_DUAL_BANK_VALUE ((*((uint32_t *)OB_DUAL_BANK_BASE)) & (FLASH_OPTR_DUAL_BANK))
+#define FLASH_BANK_NB (((FLASH_SALES_VALUE == 0U) || ((FLASH_SALES_VALUE == FLASH_SALES_TYPE_0) && (OB_DUAL_BANK_VALUE == 0U)))?1U:2U)
+#define FLASH_BANK_SIZE ((FLASH_BANK_NB==1U)?(FLASH_SIZE):(FLASH_SIZE >> 1U)) /*!< FLASH Bank Size. Divided by 2 if 2 Banks */
+#else /* FLASH_DBANK_SUPPORT */
+#define FLASH_BANK_SIZE (FLASH_SIZE) /*!< FLASH Bank Size */
+#endif /* FLASH_DBANK_SUPPORT */
#define FLASH_PAGE_SIZE 0x00000800U /*!< FLASH Page Size, 2 KBytes */
-
-#if defined(STM32G081xx)||defined(STM32G071xx)||defined(STM32G070xx)
-#define FLASH_PAGE_NB 64U
-#elif defined(STM32G0C1xx)||defined(STM32G0B1xx)||defined(STM32G0B0xx)
-/* warning : on those product, constant represents number of page per bank */
-#define FLASH_PAGE_NB 128U
-#else
-#define FLASH_PAGE_NB 32U
-#endif
-
+#define FLASH_PAGE_NB (FLASH_BANK_SIZE/FLASH_PAGE_SIZE) /* Number of pages per bank */
#define FLASH_TIMEOUT_VALUE 1000U /*!< FLASH Execution Timeout, 1 s */
-
#define FLASH_TYPENONE 0x00000000U /*!< No programming Procedure On Going */
#if defined(FLASH_PCROP_SUPPORT)
@@ -947,9 +945,12 @@
#define IS_FLASH_PAGE(__PAGE__) ((__PAGE__) < FLASH_PAGE_NB)
#if defined(FLASH_DBANK_SUPPORT)
-#define IS_FLASH_BANK(__BANK__) (((__BANK__) == FLASH_BANK_1) || \
- ((__BANK__) == FLASH_BANK_2) || \
- ((__BANK__) == (FLASH_BANK_2 | FLASH_BANK_1)))
+#define IS_FLASH_BANK(__BANK__) \
+ ((FLASH_BANK_NB == 2U) ? \
+ (((__BANK__) == FLASH_BANK_1) || \
+ ((__BANK__) == FLASH_BANK_2) || \
+ ((__BANK__) == (FLASH_BANK_2 | FLASH_BANK_1))): \
+ ((__BANK__) == FLASH_BANK_1))
#else
#define IS_FLASH_BANK(__BANK__) ((__BANK__) == FLASH_BANK_1)
#endif
@@ -964,8 +965,11 @@
(((__VALUE__) & ~OPTIONBYTE_ALL) == 0x00U))
#if defined(FLASH_DBANK_SUPPORT)
-#define IS_OB_WRPAREA(__VALUE__) (((__VALUE__) == OB_WRPAREA_ZONE_A) || ((__VALUE__) == OB_WRPAREA_ZONE_B) || \
- ((__VALUE__) == OB_WRPAREA_ZONE2_A) || ((__VALUE__) == OB_WRPAREA_ZONE2_B))
+#define IS_OB_WRPAREA(__VALUE__) \
+ ((FLASH_BANK_NB == 2U) ? \
+ (((__VALUE__) == OB_WRPAREA_ZONE_A) || ((__VALUE__) == OB_WRPAREA_ZONE_B) || \
+ ((__VALUE__) == OB_WRPAREA_ZONE2_A) || ((__VALUE__) == OB_WRPAREA_ZONE2_B)) : \
+ (((__VALUE__) == OB_WRPAREA_ZONE_A) || ((__VALUE__) == OB_WRPAREA_ZONE_B)))
#else
#define IS_OB_WRPAREA(__VALUE__) (((__VALUE__) == OB_WRPAREA_ZONE_A) || ((__VALUE__) == OB_WRPAREA_ZONE_B))
#endif
@@ -981,8 +985,11 @@
#if defined(FLASH_PCROP_SUPPORT)
#if defined(FLASH_DBANK_SUPPORT)
-#define IS_OB_PCROP_CONFIG(__CONFIG__) (((__CONFIG__) & ~(OB_PCROP_ZONE_A | OB_PCROP_ZONE_B | \
- OB_PCROP_ZONE2_A | OB_PCROP_ZONE2_B | OB_PCROP_RDP_ERASE)) == 0x00U)
+#define IS_OB_PCROP_CONFIG(__CONFIG__) \
+ ((FLASH_BANK_NB == 2U) ? \
+ (((__CONFIG__) & ~(OB_PCROP_ZONE_A | OB_PCROP_ZONE_B | \
+ OB_PCROP_ZONE2_A | OB_PCROP_ZONE2_B | OB_PCROP_RDP_ERASE)) == 0x00U): \
+ (((__CONFIG__) & ~(OB_PCROP_ZONE_A | OB_PCROP_ZONE_B | OB_PCROP_RDP_ERASE)) == 0x00U))
#else
#define IS_OB_PCROP_CONFIG(__CONFIG__) (((__CONFIG__) & ~(OB_PCROP_ZONE_A | OB_PCROP_ZONE_B | OB_PCROP_RDP_ERASE)) == 0x00U)
#endif
diff --git a/stm32cube/stm32g0xx/drivers/src/stm32g0xx_hal.c b/stm32cube/stm32g0xx/drivers/src/stm32g0xx_hal.c
index 7849068..08e5090 100644
--- a/stm32cube/stm32g0xx/drivers/src/stm32g0xx_hal.c
+++ b/stm32cube/stm32g0xx/drivers/src/stm32g0xx_hal.c
@@ -57,7 +57,7 @@
*/
#define __STM32G0xx_HAL_VERSION_MAIN (0x01U) /*!< [31:24] main version */
#define __STM32G0xx_HAL_VERSION_SUB1 (0x04U) /*!< [23:16] sub1 version */
-#define __STM32G0xx_HAL_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */
+#define __STM32G0xx_HAL_VERSION_SUB2 (0x01U) /*!< [15:8] sub2 version */
#define __STM32G0xx_HAL_VERSION_RC (0x00U) /*!< [7:0] release candidate */
#define __STM32G0xx_HAL_VERSION ((__STM32G0xx_HAL_VERSION_MAIN << 24U)\
|(__STM32G0xx_HAL_VERSION_SUB1 << 16U)\
diff --git a/stm32cube/stm32g0xx/drivers/src/stm32g0xx_hal_flash_ex.c b/stm32cube/stm32g0xx/drivers/src/stm32g0xx_hal_flash_ex.c
index 5fafac0..e7c31dc 100644
--- a/stm32cube/stm32g0xx/drivers/src/stm32g0xx_hal_flash_ex.c
+++ b/stm32cube/stm32g0xx/drivers/src/stm32g0xx_hal_flash_ex.c
@@ -851,8 +851,8 @@
assert_param(IS_OB_PCROP_CONFIG(PCROPConfig));
#if defined(FLASH_DBANK_SUPPORT)
- /* Check if banks are swapped */
- if ((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK)
+ /* Check if banks are swapped (valid if only one bank) */
+ if (((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK) && (FLASH_BANK_NB == 2U))
{
/* Check the parameters */
assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP1AStartAddr));
@@ -920,8 +920,8 @@
uint32_t ropbase;
#if defined(FLASH_DBANK_SUPPORT)
- /* Check if banks are swapped */
- if ((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK)
+ /* Check if banks are swapped (valid if only one bank) */
+ if (((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK) && (FLASH_BANK_NB == 2U))
{
/* Check the parameters */
assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP1BStartAddr));
@@ -966,8 +966,8 @@
uint32_t ropbase;
#if defined(FLASH_DBANK_SUPPORT)
- /* Check if banks are swapped */
- if ((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK)
+ /* Check if banks are swapped (valid if only one bank) */
+ if (((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK) && (FLASH_BANK_NB == 2U))
{
/* Bank swap, bank 1 read only protection is on second half of Flash */
ropbase = (FLASH_BASE + FLASH_BANK_SIZE);
@@ -1005,8 +1005,8 @@
uint32_t ropbase;
#if defined(FLASH_DBANK_SUPPORT)
- /* Check if banks are swapped */
- if ((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK)
+ /* Check if banks are swapped (valid if only one bank) */
+ if (((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK) && (FLASH_BANK_NB == 2U))
{
/* Bank swap, bank 1 read only protection is on second half of Flash */
ropbase = (FLASH_BASE + FLASH_BANK_SIZE);
@@ -1217,7 +1217,11 @@
/* Check the parameters */
assert_param(IS_OB_SEC_BOOT_LOCK(BootEntry));
assert_param(IS_OB_SEC_SIZE(SecSize));
- assert_param(IS_OB_SEC_SIZE(SecSize2));
+
+ if ((FLASH_BANK_NB == 2U))
+ {
+ assert_param(IS_OB_SEC_SIZE(SecSize2));
+ }
/* Set securable memory area configuration */
secmem = (FLASH->SECR & ~(FLASH_SECR_BOOT_LOCK | FLASH_SECR_SEC_SIZE | FLASH_SECR_SEC_SIZE2));