First official release with Accelerometer, Audio, Camera, Gyroscope, IO, LCD and Touch Screen drivers function prototypes
License
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions
-in binary form must reproduce the above copyright notice, this list of
-conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of STMicroelectronics nor the names of its contributors may be used to endorse or promote products derived
-
-
- from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-
-
-
-
-
For
-complete documentation on STM32 Microcontrollers
-visit www.st.com/STM32
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Drivers/BSP/Components/Common/accelero.h b/Drivers/BSP/Components/Common/accelero.h
deleted file mode 100644
index 0de8232949..0000000000
--- a/Drivers/BSP/Components/Common/accelero.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- ******************************************************************************
- * @file accelero.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This header file contains the functions prototypes for the Accelerometer driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __ACCELERO_H
-#define __ACCELERO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup ACCELERO
- * @{
- */
-
-/** @defgroup ACCELERO_Exported_Types
- * @{
- */
-
-/** @defgroup ACCELERO_Driver_structure Accelerometer Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(uint16_t);
- void (*DeInit)(void);
- uint8_t (*ReadID)(void);
- void (*Reset)(void);
- void (*LowPower)(void);
- void (*ConfigIT)(void);
- void (*EnableIT)(uint8_t);
- void (*DisableIT)(uint8_t);
- uint8_t (*ITStatus)(uint16_t);
- void (*ClearIT)(void);
- void (*FilterConfig)(uint8_t);
- void (*FilterCmd)(uint8_t);
- void (*GetXYZ)(int16_t *);
-}ACCELERO_DrvTypeDef;
-/**
- * @}
- */
-
-/** @defgroup ACCELERO_Configuration_structure Accelerometer Configuration structure
- * @{
- */
-
-/* ACCELERO struct */
-typedef struct
-{
- uint8_t Power_Mode; /* Power-down/Normal Mode */
- uint8_t AccOutput_DataRate; /* OUT data rate */
- uint8_t Axes_Enable; /* Axes enable */
- uint8_t High_Resolution; /* High Resolution enabling/disabling */
- uint8_t BlockData_Update; /* Block Data Update */
- uint8_t Endianness; /* Endian Data selection */
- uint8_t AccFull_Scale; /* Full Scale selection */
- uint8_t Communication_Mode;
-}ACCELERO_InitTypeDef;
-
-/* ACCELERO High Pass Filter struct */
-typedef struct
-{
- uint8_t HighPassFilter_Mode_Selection; /* Internal filter mode */
- uint8_t HighPassFilter_CutOff_Frequency; /* High pass filter cut-off frequency */
- uint8_t HighPassFilter_AOI1; /* HPF_enabling/disabling for AOI function on interrupt 1 */
- uint8_t HighPassFilter_AOI2; /* HPF_enabling/disabling for AOI function on interrupt 2 */
- uint8_t HighPassFilter_Data_Sel;
- uint8_t HighPassFilter_Stat;
-}ACCELERO_FilterConfigTypeDef;
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __ACCELERO_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/audio.h b/Drivers/BSP/Components/Common/audio.h
deleted file mode 100644
index 8b93673ff8..0000000000
--- a/Drivers/BSP/Components/Common/audio.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- ******************************************************************************
- * @file audio.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This header file contains the common defines and functions prototypes
- * for the Audio driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __AUDIO_H
-#define __AUDIO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup AUDIO
- * @{
- */
-
-/** @defgroup AUDIO_Exported_Constants
- * @{
- */
-
-/* Codec audio Standards */
-#define CODEC_STANDARD 0x04
-#define I2S_STANDARD I2S_STANDARD_PHILIPS
-
-/**
- * @}
- */
-
-/** @defgroup AUDIO_Exported_Types
- * @{
- */
-
-/** @defgroup AUDIO_Driver_structure Audio Driver structure
- * @{
- */
-typedef struct
-{
- uint32_t (*Init)(uint16_t, uint16_t, uint8_t, uint32_t);
- void (*DeInit)(void);
- uint32_t (*ReadID)(uint16_t);
- uint32_t (*Play)(uint16_t, uint16_t*, uint16_t);
- uint32_t (*Pause)(uint16_t);
- uint32_t (*Resume)(uint16_t);
- uint32_t (*Stop)(uint16_t, uint32_t);
- uint32_t (*SetFrequency)(uint16_t, uint32_t);
- uint32_t (*SetVolume)(uint16_t, uint8_t);
- uint32_t (*SetMute)(uint16_t, uint32_t);
- uint32_t (*SetOutputMode)(uint16_t, uint8_t);
- uint32_t (*Reset)(uint16_t);
-}AUDIO_DrvTypeDef;
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __AUDIO_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/camera.h b/Drivers/BSP/Components/Common/camera.h
deleted file mode 100644
index c64f32fdc1..0000000000
--- a/Drivers/BSP/Components/Common/camera.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/**
- ******************************************************************************
- * @file camera.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This header file contains the common defines and functions prototypes
- * for the camera driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __CAMERA_H
-#define __CAMERA_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup CAMERA
- * @{
- */
-
-
-/** @defgroup CAMERA_Exported_Types
- * @{
- */
-
-/** @defgroup CAMERA_Driver_structure Camera Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(uint16_t, uint32_t);
- uint16_t (*ReadID)(uint16_t);
- void (*Config)(uint16_t, uint32_t, uint32_t, uint32_t);
-}CAMERA_DrvTypeDef;
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/** @defgroup CAMERA_Exported_Constants
- * @{
- */
-#define CAMERA_R160x120 0x00 /* QQVGA Resolution */
-#define CAMERA_R320x240 0x01 /* QVGA Resolution */
-#define CAMERA_R480x272 0x02 /* 480x272 Resolution */
-#define CAMERA_R640x480 0x03 /* VGA Resolution */
-
-#define CAMERA_CONTRAST_BRIGHTNESS 0x00 /* Camera contrast brightness features */
-#define CAMERA_BLACK_WHITE 0x01 /* Camera black white feature */
-#define CAMERA_COLOR_EFFECT 0x03 /* Camera color effect feature */
-
-#define CAMERA_BRIGHTNESS_LEVEL0 0x00 /* Brightness level -2 */
-#define CAMERA_BRIGHTNESS_LEVEL1 0x01 /* Brightness level -1 */
-#define CAMERA_BRIGHTNESS_LEVEL2 0x02 /* Brightness level 0 */
-#define CAMERA_BRIGHTNESS_LEVEL3 0x03 /* Brightness level +1 */
-#define CAMERA_BRIGHTNESS_LEVEL4 0x04 /* Brightness level +2 */
-
-#define CAMERA_CONTRAST_LEVEL0 0x05 /* Contrast level -2 */
-#define CAMERA_CONTRAST_LEVEL1 0x06 /* Contrast level -1 */
-#define CAMERA_CONTRAST_LEVEL2 0x07 /* Contrast level 0 */
-#define CAMERA_CONTRAST_LEVEL3 0x08 /* Contrast level +1 */
-#define CAMERA_CONTRAST_LEVEL4 0x09 /* Contrast level +2 */
-
-#define CAMERA_BLACK_WHITE_BW 0x00 /* Black and white effect */
-#define CAMERA_BLACK_WHITE_NEGATIVE 0x01 /* Negative effect */
-#define CAMERA_BLACK_WHITE_BW_NEGATIVE 0x02 /* BW and Negative effect */
-#define CAMERA_BLACK_WHITE_NORMAL 0x03 /* Normal effect */
-
-#define CAMERA_COLOR_EFFECT_NONE 0x00 /* No effects */
-#define CAMERA_COLOR_EFFECT_BLUE 0x01 /* Blue effect */
-#define CAMERA_COLOR_EFFECT_GREEN 0x02 /* Green effect */
-#define CAMERA_COLOR_EFFECT_RED 0x03 /* Red effect */
-#define CAMERA_COLOR_EFFECT_ANTIQUE 0x04 /* Antique effect */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __CAMERA_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/epd.h b/Drivers/BSP/Components/Common/epd.h
deleted file mode 100644
index a06be10d55..0000000000
--- a/Drivers/BSP/Components/Common/epd.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
- ******************************************************************************
- * @file epd.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This file contains all the functions prototypes for the
- * EPD (E Paper Display) driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __EPD_H
-#define __EPD_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup Common
- * @{
- */
-
-/** @addtogroup EPD
- * @{
- */
-
-/** @defgroup EPD_Exported_Types
- * @{
- */
-
-/** @defgroup EPD_Driver_structure E Paper Display Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(void);
- void (*WritePixel)(uint8_t);
-
- /* Optimized operation */
- void (*SetDisplayWindow)(uint16_t, uint16_t, uint16_t, uint16_t);
- void (*RefreshDisplay)(void);
- void (*CloseChargePump)(void);
-
- uint16_t (*GetEpdPixelWidth)(void);
- uint16_t (*GetEpdPixelHeight)(void);
- void (*DrawImage)(uint16_t, uint16_t, uint16_t, uint16_t, uint8_t*);
-}
-EPD_DrvTypeDef;
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* EPD_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/gyro.h b/Drivers/BSP/Components/Common/gyro.h
deleted file mode 100644
index 462928c903..0000000000
--- a/Drivers/BSP/Components/Common/gyro.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- ******************************************************************************
- * @file gyro.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This header file contains the functions prototypes for the gyroscope driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __GYRO_H
-#define __GYRO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup GYRO
- * @{
- */
-
-/** @defgroup GYRO_Exported_Types
- * @{
- */
-
-/** @defgroup GYRO_Driver_structure Gyroscope Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(uint16_t);
- void (*DeInit)(void);
- uint8_t (*ReadID)(void);
- void (*Reset)(void);
- void (*LowPower)(uint16_t);
- void (*ConfigIT)(uint16_t);
- void (*EnableIT)(uint8_t);
- void (*DisableIT)(uint8_t);
- uint8_t (*ITStatus)(uint16_t, uint16_t);
- void (*ClearIT)(uint16_t, uint16_t);
- void (*FilterConfig)(uint8_t);
- void (*FilterCmd)(uint8_t);
- void (*GetXYZ)(float *);
-}GYRO_DrvTypeDef;
-/**
- * @}
- */
-
-/** @defgroup GYRO_Config_structure Gyroscope Configuration structure
- * @{
- */
-
-typedef struct
-{
- uint8_t Power_Mode; /* Power-down/Sleep/Normal Mode */
- uint8_t Output_DataRate; /* OUT data rate */
- uint8_t Axes_Enable; /* Axes enable */
- uint8_t Band_Width; /* Bandwidth selection */
- uint8_t BlockData_Update; /* Block Data Update */
- uint8_t Endianness; /* Endian Data selection */
- uint8_t Full_Scale; /* Full Scale selection */
-}GYRO_InitTypeDef;
-
-/* GYRO High Pass Filter struct */
-typedef struct
-{
- uint8_t HighPassFilter_Mode_Selection; /* Internal filter mode */
- uint8_t HighPassFilter_CutOff_Frequency; /* High pass filter cut-off frequency */
-}GYRO_FilterConfigTypeDef;
-
-/*GYRO Interrupt struct */
-typedef struct
-{
- uint8_t Latch_Request; /* Latch interrupt request into CLICK_SRC register */
- uint8_t Interrupt_Axes; /* X, Y, Z Axes Interrupts */
- uint8_t Interrupt_ActiveEdge; /* Interrupt Active edge */
-}GYRO_InterruptConfigTypeDef;
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __GYRO_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/idd.h b/Drivers/BSP/Components/Common/idd.h
deleted file mode 100644
index 1b8a762e39..0000000000
--- a/Drivers/BSP/Components/Common/idd.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
- ******************************************************************************
- * @file idd.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This file contains all the functions prototypes for the IDD driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __IDD_H
-#define __IDD_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup IDD
- * @{
- */
-
-/** @defgroup IDD_Exported_Types IDD Exported Types
- * @{
- */
-
-/** @defgroup IDD_Config_structure IDD Configuration structure
- * @{
- */
-typedef struct
-{
- uint16_t AmpliGain; /*!< Specifies ampli gain value
- */
- uint16_t VddMin; /*!< Specifies minimum MCU VDD can reach to protect MCU from reset
- */
- uint16_t Shunt0Value; /*!< Specifies value of Shunt 0 if existing
- */
- uint16_t Shunt1Value; /*!< Specifies value of Shunt 1 if existing
- */
- uint16_t Shunt2Value; /*!< Specifies value of Shunt 2 if existing
- */
- uint16_t Shunt3Value; /*!< Specifies value of Shunt 3 if existing
- */
- uint16_t Shunt4Value; /*!< Specifies value of Shunt 4 if existing
- */
- uint16_t Shunt0StabDelay; /*!< Specifies delay of Shunt 0 stabilization if existing
- */
- uint16_t Shunt1StabDelay; /*!< Specifies delay of Shunt 1 stabilization if existing
- */
- uint16_t Shunt2StabDelay; /*!< Specifies delay of Shunt 2 stabilization if existing
- */
- uint16_t Shunt3StabDelay; /*!< Specifies delay of Shunt 3 stabilization if existing
- */
- uint16_t Shunt4StabDelay; /*!< Specifies delay of Shunt 4 stabilization if existing
- */
- uint8_t ShuntNbOnBoard; /*!< Specifies number of shunts that are present on board
- This parameter can be a value of @ref IDD_shunt_number */
- uint8_t ShuntNbUsed; /*!< Specifies number of shunts used for measurement
- This parameter can be a value of @ref IDD_shunt_number */
- uint8_t VrefMeasurement; /*!< Specifies if Vref is automatically measured before each Idd measurement
- This parameter can be a value of @ref IDD_Vref_Measurement */
- uint8_t Calibration; /*!< Specifies if calibration is done before each Idd measurement
- */
- uint8_t PreDelayUnit; /*!< Specifies Pre delay unit
- This parameter can be a value of @ref IDD_PreDelay */
- uint8_t PreDelayValue; /*!< Specifies Pre delay value in selected unit
- */
- uint8_t MeasureNb; /*!< Specifies number of Measure to be performed
- This parameter can be a value between 1 and 256 */
- uint8_t DeltaDelayUnit; /*!< Specifies Delta delay unit
- This parameter can be a value of @ref IDD_DeltaDelay */
- uint8_t DeltaDelayValue; /*!< Specifies Delta delay between 2 measures
- value can be between 1 and 128 */
-}IDD_ConfigTypeDef;
-/**
- * @}
- */
-
-/** @defgroup IDD_Driver_structure IDD Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(uint16_t);
- void (*DeInit)(uint16_t);
- uint16_t (*ReadID)(uint16_t);
- void (*Reset)(uint16_t);
- void (*LowPower)(uint16_t);
- void (*WakeUp)(uint16_t);
- void (*Start)(uint16_t);
- void (*Config)(uint16_t,IDD_ConfigTypeDef);
- void (*GetValue)(uint16_t, uint32_t *);
- void (*EnableIT)(uint16_t);
- void (*ClearIT)(uint16_t);
- uint8_t (*GetITStatus)(uint16_t);
- void (*DisableIT)(uint16_t);
- void (*ErrorEnableIT)(uint16_t);
- void (*ErrorClearIT)(uint16_t);
- uint8_t (*ErrorGetITStatus)(uint16_t);
- void (*ErrorDisableIT)(uint16_t);
- uint8_t (*ErrorGetSrc)(uint16_t);
- uint8_t (*ErrorGetCode)(uint16_t);
-}IDD_DrvTypeDef;
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __IDD_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/io.h b/Drivers/BSP/Components/Common/io.h
deleted file mode 100644
index b33c00e669..0000000000
--- a/Drivers/BSP/Components/Common/io.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/**
- ******************************************************************************
- * @file io.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This file contains all the functions prototypes for the IO driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __IO_H
-#define __IO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup IO
- * @{
- */
-
-/** @defgroup IO_Exported_Types
- * @{
- */
-
-/**
- * @brief IO Bit SET and Bit RESET enumeration
- */
-typedef enum
-{
- IO_PIN_RESET = 0,
- IO_PIN_SET
-}IO_PinState;
-
-typedef enum
-{
- IO_MODE_INPUT = 0, /* input floating */
- IO_MODE_OUTPUT, /* output Push Pull */
- IO_MODE_IT_RISING_EDGE, /* float input - irq detect on rising edge */
- IO_MODE_IT_FALLING_EDGE, /* float input - irq detect on falling edge */
- IO_MODE_IT_LOW_LEVEL, /* float input - irq detect on low level */
- IO_MODE_IT_HIGH_LEVEL, /* float input - irq detect on high level */
- /* following modes only available on MFX*/
- IO_MODE_ANALOG, /* analog mode */
- IO_MODE_OFF, /* when pin isn't used*/
- IO_MODE_INPUT_PU, /* input with internal pull up resistor */
- IO_MODE_INPUT_PD, /* input with internal pull down resistor */
- IO_MODE_OUTPUT_OD, /* Open Drain output without internal resistor */
- IO_MODE_OUTPUT_OD_PU, /* Open Drain output with internal pullup resistor */
- IO_MODE_OUTPUT_OD_PD, /* Open Drain output with internal pulldown resistor */
- IO_MODE_OUTPUT_PP, /* PushPull output without internal resistor */
- IO_MODE_OUTPUT_PP_PU, /* PushPull output with internal pullup resistor */
- IO_MODE_OUTPUT_PP_PD, /* PushPull output with internal pulldown resistor */
- IO_MODE_IT_RISING_EDGE_PU, /* push up resistor input - irq on rising edge */
- IO_MODE_IT_RISING_EDGE_PD, /* push dw resistor input - irq on rising edge */
- IO_MODE_IT_FALLING_EDGE_PU, /* push up resistor input - irq on falling edge */
- IO_MODE_IT_FALLING_EDGE_PD, /* push dw resistor input - irq on falling edge */
- IO_MODE_IT_LOW_LEVEL_PU, /* push up resistor input - irq detect on low level */
- IO_MODE_IT_LOW_LEVEL_PD, /* push dw resistor input - irq detect on low level */
- IO_MODE_IT_HIGH_LEVEL_PU, /* push up resistor input - irq detect on high level */
- IO_MODE_IT_HIGH_LEVEL_PD, /* push dw resistor input - irq detect on high level */
-
-}IO_ModeTypedef;
-
-/** @defgroup IO_Driver_structure IO Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(uint16_t);
- uint16_t (*ReadID)(uint16_t);
- void (*Reset)(uint16_t);
-
- void (*Start)(uint16_t, uint32_t);
- uint8_t (*Config)(uint16_t, uint32_t, IO_ModeTypedef);
- void (*WritePin)(uint16_t, uint32_t, uint8_t);
- uint32_t (*ReadPin)(uint16_t, uint32_t);
-
- void (*EnableIT)(uint16_t);
- void (*DisableIT)(uint16_t);
- uint32_t (*ITStatus)(uint16_t, uint32_t);
- void (*ClearIT)(uint16_t, uint32_t);
-
-}IO_DrvTypeDef;
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __IO_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/lcd.h b/Drivers/BSP/Components/Common/lcd.h
deleted file mode 100644
index 9ff398b4e9..0000000000
--- a/Drivers/BSP/Components/Common/lcd.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- ******************************************************************************
- * @file lcd.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This file contains all the functions prototypes for the LCD driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __LCD_H
-#define __LCD_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup LCD
- * @{
- */
-
-/** @defgroup LCD_Exported_Types
- * @{
- */
-
-/** @defgroup LCD_Driver_structure LCD Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(void);
- uint16_t (*ReadID)(void);
- void (*DisplayOn)(void);
- void (*DisplayOff)(void);
- void (*SetCursor)(uint16_t, uint16_t);
- void (*WritePixel)(uint16_t, uint16_t, uint16_t);
- uint16_t (*ReadPixel)(uint16_t, uint16_t);
-
- /* Optimized operation */
- void (*SetDisplayWindow)(uint16_t, uint16_t, uint16_t, uint16_t);
- void (*DrawHLine)(uint16_t, uint16_t, uint16_t, uint16_t);
- void (*DrawVLine)(uint16_t, uint16_t, uint16_t, uint16_t);
-
- uint16_t (*GetLcdPixelWidth)(void);
- uint16_t (*GetLcdPixelHeight)(void);
- void (*DrawBitmap)(uint16_t, uint16_t, uint8_t*);
- void (*DrawRGBImage)(uint16_t, uint16_t, uint16_t, uint16_t, uint8_t*);
-}LCD_DrvTypeDef;
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __LCD_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/magneto.h b/Drivers/BSP/Components/Common/magneto.h
deleted file mode 100644
index dc27dd03ab..0000000000
--- a/Drivers/BSP/Components/Common/magneto.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- ******************************************************************************
- * @file magneto.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This header file contains the functions prototypes for the MAGNETO driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __MAGNETO_H
-#define __MAGNETO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup MAGNETO
- * @{
- */
-
-/** @defgroup MAGNETO_Exported_Types
- * @{
- */
-
-/** @defgroup MAGNETO_Config_structure Magnetometer Configuration structure
- * @{
- */
-typedef struct
-{
- uint8_t Register1;
- uint8_t Register2;
- uint8_t Register3;
- uint8_t Register4;
- uint8_t Register5;
-}MAGNETO_InitTypeDef;
-/**
- * @}
- */
-
-/** @defgroup MAGNETO_Driver_structure Magnetometer Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(MAGNETO_InitTypeDef);
- void (*DeInit)(void);
- uint8_t (*ReadID)(void);
- void (*Reset)(void);
- void (*LowPower)(void);
- void (*ConfigIT)(void);
- void (*EnableIT)(uint8_t);
- void (*DisableIT)(uint8_t);
- uint8_t (*ITStatus)(uint16_t);
- void (*ClearIT)(void);
- void (*FilterConfig)(uint8_t);
- void (*FilterCmd)(uint8_t);
- void (*GetXYZ)(int16_t *);
-}MAGNETO_DrvTypeDef;
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __MAGNETO_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/ts.h b/Drivers/BSP/Components/Common/ts.h
deleted file mode 100644
index 73705964bd..0000000000
--- a/Drivers/BSP/Components/Common/ts.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- ******************************************************************************
- * @file ts.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This file contains all the functions prototypes for the Touch Screen driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __TS_H
-#define __TS_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup TS
- * @{
- */
-
-/** @defgroup TS_Exported_Types
- * @{
- */
-
-/** @defgroup TS_Driver_structure Touch Sensor Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(uint16_t);
- uint16_t (*ReadID)(uint16_t);
- void (*Reset)(uint16_t);
- void (*Start)(uint16_t);
- uint8_t (*DetectTouch)(uint16_t);
- void (*GetXY)(uint16_t, uint16_t*, uint16_t*);
- void (*EnableIT)(uint16_t);
- void (*ClearIT)(uint16_t);
- uint8_t (*GetITStatus)(uint16_t);
- void (*DisableIT)(uint16_t);
-}TS_DrvTypeDef;
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TS_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/Common/tsensor.h b/Drivers/BSP/Components/Common/tsensor.h
deleted file mode 100644
index 4ea0ffc217..0000000000
--- a/Drivers/BSP/Components/Common/tsensor.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/**
- ******************************************************************************
- * @file tsensor.h
- * @author MCD Application Team
- * @version V4.0.1
- * @date 21-July-2015
- * @brief This header file contains the functions prototypes for the
- * Temperature Sensor driver.
- ******************************************************************************
- * @attention
- *
- *
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __TSENSOR_H
-#define __TSENSOR_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup Components
- * @{
- */
-
-/** @addtogroup TSENSOR
- * @{
- */
-
-/** @defgroup TSENSOR_Exported_Types
- * @{
- */
-
-/** @defgroup TSENSOR_Config_structure Temperature Sensor Configuration structure
- * @{
- */
-typedef struct
-{
- uint8_t AlertMode; /* Alert Mode Temperature out of range*/
- uint8_t ConversionMode; /* Continuous/One Shot Mode */
- uint8_t ConversionResolution; /* Temperature Resolution */
- uint8_t ConversionRate; /* Number of measure per second */
- uint8_t TemperatureLimitHigh; /* High Temperature Limit Range */
- uint8_t TemperatureLimitLow; /* Low Temperature Limit Range */
-}TSENSOR_InitTypeDef;
-/**
- * @}
- */
-
-/** @defgroup TSENSOR_Driver_structure Temperature Sensor Driver structure
- * @{
- */
-typedef struct
-{
- void (*Init)(uint16_t, TSENSOR_InitTypeDef *);
- uint8_t (*IsReady)(uint16_t, uint32_t);
- uint8_t (*ReadStatus)(uint16_t);
- uint16_t (*ReadTemp)(uint16_t);
-}TSENSOR_DrvTypeDef;
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __TSENSOR_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Drivers/BSP/Components/ampire480272 b/Drivers/BSP/Components/ampire480272
new file mode 160000
index 0000000000..8576969c0d
--- /dev/null
+++ b/Drivers/BSP/Components/ampire480272
@@ -0,0 +1 @@
+Subproject commit 8576969c0d64fbcf37b1b7cfee241e01737a7973
diff --git a/Drivers/BSP/Components/ampire480272/LICENSE.md b/Drivers/BSP/Components/ampire480272/LICENSE.md
deleted file mode 100644
index e94b88c387..0000000000
--- a/Drivers/BSP/Components/ampire480272/LICENSE.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright 2017 STMicroelectronics.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors
-may be used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/Drivers/BSP/Components/ampire480272/Release_Notes.html b/Drivers/BSP/Components/ampire480272/Release_Notes.html
deleted file mode 100644
index 153d835f64..0000000000
--- a/Drivers/BSP/Components/ampire480272/Release_Notes.html
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
- Release Notes for AMPIRE480272 Component Driver
-
-
-
-
-
-
-
This directory contains the board drivers to demonstrate the capabilities of the ILI9325 Component Driver.
-
-
-
Update History
-
-
-
-
Main Changes
-
-
Update Release_Notes.html to support new format
-
All source files: update disclaimer to add reference to the new license agreement
-
-
-
-
-
-
-
Main Changes
-
-
ili9325.c: alignment with BSP STM32446E_EVAL V1.1.2 and BSP STM324xG_EVAL V2.2.2
-
-
Update ili9325_ReadPixel() and ili9325_ReadReg() to support the new LCD_IO_ReadData() API
-
-
-
-
-
-
-
-
Main Changes
-
-
ili9325.h: change “" byâ€/" in the include path to fix compilation issue under Linux
-
-
-
-
-
-
-
Main Changes
-
-
Official Final Release for LCD Controllers harmonization
-
Replace LCD_IO_WriteData() by LCD_IO_WriteMultipleData() to be compliant with SPI interface
-
Warning : break compatibility with old BSP common files - done for STM3210C-EVAL board
-
-
-
-
-
-
-
Main Changes
-
-
Final Official Release for LCD Controller harmonization
-
-
-
-
-
-
-
Main Changes
-
-
Beta Release to change the usage of LCD_IO_ReadData
-
-
-
-
-
-
-
Main Changes
-
-
Align driver with the STM32Cube BSP architecture by removing check for initialization in ili9325_Init()
-
Initializes only the LCD IO in read ID APIs instead of all initialization sequence and remove the check for initialization in ili9325_ReadID() function
This directory contains the ILI9341 Component Driver.
-
-
-
Update History
-
-
-
-
Main Changes
-
-
Update Release_Notes.html to support new format
-
All source files: update disclaimer to add reference to the new license agreement
-
-
-
-
-
-
-
Main Changes
-
-
ili9341.h: change “" byâ€/" in the include path to fix compilation issue under Linux
-
-
-
-
-
-
-
Main Changes
-
-
Align driver with the STM32Cube BSP architecture by removing check for initialization in ili9341_Init()
-
Initializes only the LCD IO in read ID APIs instead of all initialization sequence and remove the check for initialization in ili9341_ReadID() function
This directory contains the board drivers to demonstrate the capabilities of the WM8994 Component Drivers.
-
-
-
Update History
-
-
-
-
Main Changes
-
-
Update Release_Notes.html to support new format
-
All source files: update disclaimer to add reference to the new license agreement
-
-
-
-
-
-
-
Main Changes
-
-
Update release notes format
-
Reformat the BSD 3-Clause license declaration in the files header (replace license terms by a web reference to OSI website where those terms lie)
-
-
-
-
-
-
-
Main Changes
-
-
wm8994.c: fix no audio output issue
-
-
-
-
-
-
-
Main Changes
-
-
Add support of ColdStartup sequence for headphone
-
-
Unmute is performed in a gradual way to minimize pop noise.
-
Update wm8994_SetFrequency to support AUDIO_FREQUENCY_32K
-
Update comments to be used for PDSC generation
-
-
-
-
-
-
-
-
Main Changes
-
-
wm8994.c
-
-
Update wm8994_Init() by adding the support of analog microphone connected to INPUT LINE 1, INPUT_DEVICE_DIGITAL_MICROPHONE_1 and INPUT_DEVICE_DIGITAL_MIC1_MIC2
-
Add AUDIO_FREQUENCY_32K as possible AudioFreq value
This directory contains the board drivers to demonstrate the capabilities of the STM32446E-EVAL Board Drivers.
-
-
-
Update History
-
-
-
-
Main Changes
-
-
Remove inline function optimization on LCD_IO_WriteMultipleData() API to avoid EWARM Runtime issue with Optimization (-Os) by adding the __NOINLINE macro.
-
Force LCD_IO_WriteMultipleData() to be built with -O1 optimization to avoid runtime issues if compiled with STM32CubeIDE GCC11.
-
Update Release_Notes.html to support new format
-
-
-
-
-
-
-
Main Changes
-
-
All source files: update disclaimer to add reference to the new license agreement
-
-
-
-
-
-
-
Main Changes
-
-
stm32446e_eval_camera.c/.h:
-
-
Support ov5640 camera sensor
-
-
stm32446e_eval.c/.h:
-
-
Add OV5640 I2C address
-
Update CAMERA IO Read/Write to support ov5640 camera sensor
-
-
-
-
-
-
-
-
Main Changes
-
-
Remove date & version
-
Add general description of BSP drivers
-
stm32446e_eval_audio.c:
-
-
Aligned with PDM library v3.0.0
-
-
stm32446e_eval_lcd.c:
-
-
Update BSP_LCD_DrawBitmap() API to fix functional misbehavior with SW4STM32 Toolchain
-
-
-
Dependencies
-
-
This version must be used with v3.0.0 of PDM library
-
-
-
-
-
-
-
Main Changes
-
-
stm32446e_eval_sd.c/.h:
-
-
Update BSP SD APIs following new HAL SD drivers implementation
-
Fix BlockSize to 512 bytes
-
-
stm32446e_eval_qspi.c/.h:
-
-
QSPI write operation improvement
-
Update CS High Time
-
-
-
Backward compatibility
-
-
These BSP drivers break the compatibility with previous versions.
-
-
Dependencies
-
-
If FatFs is required, “FatFS R0.11 ST modified 20161223†must be used with this version of BSP drivers.
-
-
-
-
-
-
-
Main Changes
-
-
stm32446e_eval_camera.h update BSP Camera driver to use the new HAL DCMI API’s:
-
-
Update BSP_CAMERA_Suspend() API to call HAL_DCMI_Suspend() API
-
Update BSP_CAMERA_Resume to call HAL_DCMI_Resume() API
-
-
stm32446e_eval.c
-
-
Alignment with ili9325 component V1.2.3
-
-
-
-
-
-
-
-
Main Changes
-
-
General updates to fix doxygen errors
-
Add STM32F446E-EVAL_BSP_User_Manual.chm file
-
stm32446e_eval_qspi.c
-
-
Deactivate Timeout in memory mapped mode
-
Rename BSP_QSPI_MemoryMappedMode() API to BSP_QSPI_EnableMemoryMappedMode() API
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32446e_eval.c
-
-
Add AUDIO_IO_DeInit() function to align with BSP Components Common drivers V4.0.0
-
-
stm32446e_eval_audio.c
-
-
Reset audio codec before initialization
-
-
-
-
-
-
-
-
Main Changes
-
-
First official release of the STM32446E-EVAL BSP drivers
-
-
-
-
-
-
-
-
diff --git a/Drivers/BSP/STM32446E_EVAL/_htmresc/favicon.png b/Drivers/BSP/STM32446E_EVAL/_htmresc/favicon.png
deleted file mode 100644
index 06713eec49..0000000000
Binary files a/Drivers/BSP/STM32446E_EVAL/_htmresc/favicon.png and /dev/null differ
diff --git a/Drivers/BSP/STM32446E_EVAL/_htmresc/mini-st_2020.css b/Drivers/BSP/STM32446E_EVAL/_htmresc/mini-st_2020.css
deleted file mode 100644
index 986f4d4205..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/_htmresc/mini-st_2020.css
+++ /dev/null
@@ -1,1711 +0,0 @@
-@charset "UTF-8";
-/*
- Flavor name: Custom (mini-custom)
- Generated online - https://minicss.org/flavors
- mini.css version: v3.0.1
-*/
-/*
- Browsers resets and base typography.
-*/
-/* Core module CSS variable definitions */
-:root {
- --fore-color: #03234b;
- --secondary-fore-color: #03234b;
- --back-color: #ffffff;
- --secondary-back-color: #ffffff;
- --blockquote-color: #e6007e;
- --pre-color: #e6007e;
- --border-color: #3cb4e6;
- --secondary-border-color: #3cb4e6;
- --heading-ratio: 1.2;
- --universal-margin: 0.5rem;
- --universal-padding: 0.25rem;
- --universal-border-radius: 0.075rem;
- --background-margin: 1.5%;
- --a-link-color: #3cb4e6;
- --a-visited-color: #8c0078; }
-
-html {
- font-size: 13.5px; }
-
-a, b, del, em, i, ins, q, span, strong, u {
- font-size: 1em; }
-
-html, * {
- font-family: -apple-system, BlinkMacSystemFont, Helvetica, arial, sans-serif;
- line-height: 1.25;
- -webkit-text-size-adjust: 100%; }
-
-* {
- font-size: 1rem; }
-
-body {
- margin: 0;
- color: var(--fore-color);
- @background: var(--back-color);
- background: var(--back-color) linear-gradient(#ffd200, #ffd200) repeat-y left top;
- background-size: var(--background-margin);
- }
-
-details {
- display: block; }
-
-summary {
- display: list-item; }
-
-abbr[title] {
- border-bottom: none;
- text-decoration: underline dotted; }
-
-input {
- overflow: visible; }
-
-img {
- max-width: 100%;
- height: auto; }
-
-h1, h2, h3, h4, h5, h6 {
- line-height: 1.25;
- margin: calc(1.5 * var(--universal-margin)) var(--universal-margin);
- font-weight: 400; }
- h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
- color: var(--secondary-fore-color);
- display: block;
- margin-top: -0.25rem; }
-
-h1 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio)); }
-
-h2 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) );
- border-style: none none solid none ;
- border-width: thin;
- border-color: var(--border-color); }
-h3 {
- font-size: calc(1rem * var(--heading-ratio) ); }
-
-h4 {
- font-size: calc(1rem * var(--heading-ratio)); }
-
-h5 {
- font-size: 1rem; }
-
-h6 {
- font-size: calc(1rem / var(--heading-ratio)); }
-
-p {
- margin: var(--universal-margin); }
-
-ol, ul {
- margin: var(--universal-margin);
- padding-left: calc(3 * var(--universal-margin)); }
-
-b, strong {
- font-weight: 700; }
-
-hr {
- box-sizing: content-box;
- border: 0;
- line-height: 1.25em;
- margin: var(--universal-margin);
- height: 0.0714285714rem;
- background: linear-gradient(to right, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent); }
-
-blockquote {
- display: block;
- position: relative;
- font-style: italic;
- color: var(--secondary-fore-color);
- margin: var(--universal-margin);
- padding: calc(3 * var(--universal-padding));
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.3rem solid var(--blockquote-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
- blockquote:before {
- position: absolute;
- top: calc(0rem - var(--universal-padding));
- left: 0;
- font-family: sans-serif;
- font-size: 2rem;
- font-weight: 800;
- content: "\201c";
- color: var(--blockquote-color); }
- blockquote[cite]:after {
- font-style: normal;
- font-size: 0.75em;
- font-weight: 700;
- content: "\a— " attr(cite);
- white-space: pre; }
-
-code, kbd, pre, samp {
- font-family: Menlo, Consolas, monospace;
- font-size: 0.85em; }
-
-code {
- background: var(--secondary-back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-kbd {
- background: var(--fore-color);
- color: var(--back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-pre {
- overflow: auto;
- background: var(--secondary-back-color);
- padding: calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.2857142857rem solid var(--pre-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
-
-sup, sub, code, kbd {
- line-height: 0;
- position: relative;
- vertical-align: baseline; }
-
-small, sup, sub, figcaption {
- font-size: 0.75em; }
-
-sup {
- top: -0.5em; }
-
-sub {
- bottom: -0.25em; }
-
-figure {
- margin: var(--universal-margin); }
-
-figcaption {
- color: var(--secondary-fore-color); }
-
-a {
- text-decoration: none; }
- a:link {
- color: var(--a-link-color); }
- a:visited {
- color: var(--a-visited-color); }
- a:hover, a:focus {
- text-decoration: underline; }
-
-/*
- Definitions for the grid system, cards and containers.
-*/
-.container {
- margin: 0 auto;
- padding: 0 calc(1.5 * var(--universal-padding)); }
-
-.row {
- box-sizing: border-box;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- margin: 0 0 0 var(--background-margin); }
-
-.col-sm,
-[class^='col-sm-'],
-[class^='col-sm-offset-'],
-.row[class*='cols-sm-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
-.col-sm,
-.row.cols-sm > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
-.col-sm-1,
-.row.cols-sm-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
-.col-sm-offset-0 {
- margin-left: 0; }
-
-.col-sm-2,
-.row.cols-sm-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
-.col-sm-offset-1 {
- margin-left: 8.3333333333%; }
-
-.col-sm-3,
-.row.cols-sm-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
-.col-sm-offset-2 {
- margin-left: 16.6666666667%; }
-
-.col-sm-4,
-.row.cols-sm-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
-.col-sm-offset-3 {
- margin-left: 25%; }
-
-.col-sm-5,
-.row.cols-sm-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
-.col-sm-offset-4 {
- margin-left: 33.3333333333%; }
-
-.col-sm-6,
-.row.cols-sm-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
-.col-sm-offset-5 {
- margin-left: 41.6666666667%; }
-
-.col-sm-7,
-.row.cols-sm-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
-.col-sm-offset-6 {
- margin-left: 50%; }
-
-.col-sm-8,
-.row.cols-sm-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
-.col-sm-offset-7 {
- margin-left: 58.3333333333%; }
-
-.col-sm-9,
-.row.cols-sm-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
-.col-sm-offset-8 {
- margin-left: 66.6666666667%; }
-
-.col-sm-10,
-.row.cols-sm-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
-.col-sm-offset-9 {
- margin-left: 75%; }
-
-.col-sm-11,
-.row.cols-sm-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
-.col-sm-offset-10 {
- margin-left: 83.3333333333%; }
-
-.col-sm-12,
-.row.cols-sm-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
-.col-sm-offset-11 {
- margin-left: 91.6666666667%; }
-
-.col-sm-normal {
- order: initial; }
-
-.col-sm-first {
- order: -999; }
-
-.col-sm-last {
- order: 999; }
-
-@media screen and (min-width: 500px) {
- .col-md,
- [class^='col-md-'],
- [class^='col-md-offset-'],
- .row[class*='cols-md-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-md,
- .row.cols-md > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-md-1,
- .row.cols-md-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-md-offset-0 {
- margin-left: 0; }
-
- .col-md-2,
- .row.cols-md-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-md-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-md-3,
- .row.cols-md-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-md-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-md-4,
- .row.cols-md-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-md-offset-3 {
- margin-left: 25%; }
-
- .col-md-5,
- .row.cols-md-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-md-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-md-6,
- .row.cols-md-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-md-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-md-7,
- .row.cols-md-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-md-offset-6 {
- margin-left: 50%; }
-
- .col-md-8,
- .row.cols-md-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-md-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-md-9,
- .row.cols-md-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-md-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-md-10,
- .row.cols-md-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-md-offset-9 {
- margin-left: 75%; }
-
- .col-md-11,
- .row.cols-md-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-md-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-md-12,
- .row.cols-md-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-md-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-md-normal {
- order: initial; }
-
- .col-md-first {
- order: -999; }
-
- .col-md-last {
- order: 999; } }
-@media screen and (min-width: 1280px) {
- .col-lg,
- [class^='col-lg-'],
- [class^='col-lg-offset-'],
- .row[class*='cols-lg-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-lg,
- .row.cols-lg > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-lg-1,
- .row.cols-lg-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-lg-offset-0 {
- margin-left: 0; }
-
- .col-lg-2,
- .row.cols-lg-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-lg-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-lg-3,
- .row.cols-lg-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-lg-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-lg-4,
- .row.cols-lg-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-lg-offset-3 {
- margin-left: 25%; }
-
- .col-lg-5,
- .row.cols-lg-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-lg-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-lg-6,
- .row.cols-lg-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-lg-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-lg-7,
- .row.cols-lg-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-lg-offset-6 {
- margin-left: 50%; }
-
- .col-lg-8,
- .row.cols-lg-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-lg-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-lg-9,
- .row.cols-lg-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-lg-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-lg-10,
- .row.cols-lg-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-lg-offset-9 {
- margin-left: 75%; }
-
- .col-lg-11,
- .row.cols-lg-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-lg-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-lg-12,
- .row.cols-lg-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-lg-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-lg-normal {
- order: initial; }
-
- .col-lg-first {
- order: -999; }
-
- .col-lg-last {
- order: 999; } }
-/* Card component CSS variable definitions */
-:root {
- --card-back-color: #3cb4e6;
- --card-fore-color: #03234b;
- --card-border-color: #03234b; }
-
-.card {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-self: center;
- position: relative;
- width: 100%;
- background: var(--card-back-color);
- color: var(--card-fore-color);
- border: 0.0714285714rem solid var(--card-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- overflow: hidden; }
- @media screen and (min-width: 320px) {
- .card {
- max-width: 320px; } }
- .card > .sectione {
- background: var(--card-back-color);
- color: var(--card-fore-color);
- box-sizing: border-box;
- margin: 0;
- border: 0;
- border-radius: 0;
- border-bottom: 0.0714285714rem solid var(--card-border-color);
- padding: var(--universal-padding);
- width: 100%; }
- .card > .sectione.media {
- height: 200px;
- padding: 0;
- -o-object-fit: cover;
- object-fit: cover; }
- .card > .sectione:last-child {
- border-bottom: 0; }
-
-/*
- Custom elements for card elements.
-*/
-@media screen and (min-width: 240px) {
- .card.small {
- max-width: 240px; } }
-@media screen and (min-width: 480px) {
- .card.large {
- max-width: 480px; } }
-.card.fluid {
- max-width: 100%;
- width: auto; }
-
-.card.warning {
- --card-back-color: #e5b8b7;
- --card-fore-color: #3b234b;
- --card-border-color: #8c0078; }
-
-.card.error {
- --card-back-color: #464650;
- --card-fore-color: #ffffff;
- --card-border-color: #8c0078; }
-
-.card > .sectione.dark {
- --card-back-color: #3b234b;
- --card-fore-color: #ffffff; }
-
-.card > .sectione.double-padded {
- padding: calc(1.5 * var(--universal-padding)); }
-
-/*
- Definitions for forms and input elements.
-*/
-/* Input_control module CSS variable definitions */
-:root {
- --form-back-color: #ffe97f;
- --form-fore-color: #03234b;
- --form-border-color: #3cb4e6;
- --input-back-color: #ffffff;
- --input-fore-color: #03234b;
- --input-border-color: #3cb4e6;
- --input-focus-color: #0288d1;
- --input-invalid-color: #d32f2f;
- --button-back-color: #e2e2e2;
- --button-hover-back-color: #dcdcdc;
- --button-fore-color: #212121;
- --button-border-color: transparent;
- --button-hover-border-color: transparent;
- --button-group-border-color: rgba(124, 124, 124, 0.54); }
-
-form {
- background: var(--form-back-color);
- color: var(--form-fore-color);
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding); }
-
-fieldset {
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 4);
- padding: var(--universal-padding); }
-
-legend {
- box-sizing: border-box;
- display: table;
- max-width: 100%;
- white-space: normal;
- font-weight: 500;
- padding: calc(var(--universal-padding) / 2); }
-
-label {
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-.input-group {
- display: inline-block; }
- .input-group.fluid {
- display: flex;
- align-items: center;
- justify-content: center; }
- .input-group.fluid > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
- @media screen and (max-width: 499px) {
- .input-group.fluid {
- align-items: stretch;
- flex-direction: column; } }
- .input-group.vertical {
- display: flex;
- align-items: stretch;
- flex-direction: column; }
- .input-group.vertical > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
-
-[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button {
- height: auto; }
-
-[type="search"] {
- -webkit-appearance: textfield;
- outline-offset: -2px; }
-
-[type="search"]::-webkit-search-cancel-button,
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none; }
-
-input:not([type]), [type="text"], [type="email"], [type="number"], [type="search"],
-[type="password"], [type="url"], [type="tel"], [type="checkbox"], [type="radio"], textarea, select {
- box-sizing: border-box;
- background: var(--input-back-color);
- color: var(--input-fore-color);
- border: 0.0714285714rem solid var(--input-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 2);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
-
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):hover, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus, textarea:hover, textarea:focus, select:hover, select:focus {
- border-color: var(--input-focus-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):invalid, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus:invalid, textarea:invalid, textarea:focus:invalid, select:invalid, select:focus:invalid {
- border-color: var(--input-invalid-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"])[readonly], textarea[readonly], select[readonly] {
- background: var(--secondary-back-color); }
-
-select {
- max-width: 100%; }
-
-option {
- overflow: hidden;
- text-overflow: ellipsis; }
-
-[type="checkbox"], [type="radio"] {
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- position: relative;
- height: calc(1rem + var(--universal-padding) / 2);
- width: calc(1rem + var(--universal-padding) / 2);
- vertical-align: text-bottom;
- padding: 0;
- flex-basis: calc(1rem + var(--universal-padding) / 2) !important;
- flex-grow: 0 !important; }
- [type="checkbox"]:checked:before, [type="radio"]:checked:before {
- position: absolute; }
-
-[type="checkbox"]:checked:before {
- content: '\2713';
- font-family: sans-serif;
- font-size: calc(1rem + var(--universal-padding) / 2);
- top: calc(0rem - var(--universal-padding));
- left: calc(var(--universal-padding) / 4); }
-
-[type="radio"] {
- border-radius: 100%; }
- [type="radio"]:checked:before {
- border-radius: 100%;
- content: '';
- top: calc(0.0714285714rem + var(--universal-padding) / 2);
- left: calc(0.0714285714rem + var(--universal-padding) / 2);
- background: var(--input-fore-color);
- width: 0.5rem;
- height: 0.5rem; }
-
-:placeholder-shown {
- color: var(--input-fore-color); }
-
-::-ms-placeholder {
- color: var(--input-fore-color);
- opacity: 0.54; }
-
-button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0; }
-
-button, html [type="button"], [type="reset"], [type="submit"] {
- -webkit-appearance: button; }
-
-button {
- overflow: visible;
- text-transform: none; }
-
-button, [type="button"], [type="submit"], [type="reset"],
-a.button, label.button, .button,
-a[role="button"], label[role="button"], [role="button"] {
- display: inline-block;
- background: var(--button-back-color);
- color: var(--button-fore-color);
- border: 0.0714285714rem solid var(--button-border-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- text-decoration: none;
- cursor: pointer;
- transition: background 0.3s; }
- button:hover, button:focus, [type="button"]:hover, [type="button"]:focus, [type="submit"]:hover, [type="submit"]:focus, [type="reset"]:hover, [type="reset"]:focus,
- a.button:hover,
- a.button:focus, label.button:hover, label.button:focus, .button:hover, .button:focus,
- a[role="button"]:hover,
- a[role="button"]:focus, label[role="button"]:hover, label[role="button"]:focus, [role="button"]:hover, [role="button"]:focus {
- background: var(--button-hover-back-color);
- border-color: var(--button-hover-border-color); }
-
-input:disabled, input[disabled], textarea:disabled, textarea[disabled], select:disabled, select[disabled], button:disabled, button[disabled], .button:disabled, .button[disabled], [role="button"]:disabled, [role="button"][disabled] {
- cursor: not-allowed;
- opacity: 0.75; }
-
-.button-group {
- display: flex;
- border: 0.0714285714rem solid var(--button-group-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- .button-group > button, .button-group [type="button"], .button-group > [type="submit"], .button-group > [type="reset"], .button-group > .button, .button-group > [role="button"] {
- margin: 0;
- max-width: 100%;
- flex: 1 1 auto;
- text-align: center;
- border: 0;
- border-radius: 0;
- box-shadow: none; }
- .button-group > :not(:first-child) {
- border-left: 0.0714285714rem solid var(--button-group-border-color); }
- @media screen and (max-width: 499px) {
- .button-group {
- flex-direction: column; }
- .button-group > :not(:first-child) {
- border: 0;
- border-top: 0.0714285714rem solid var(--button-group-border-color); } }
-
-/*
- Custom elements for forms and input elements.
-*/
-button.primary, [type="button"].primary, [type="submit"].primary, [type="reset"].primary, .button.primary, [role="button"].primary {
- --button-back-color: #1976d2;
- --button-fore-color: #f8f8f8; }
- button.primary:hover, button.primary:focus, [type="button"].primary:hover, [type="button"].primary:focus, [type="submit"].primary:hover, [type="submit"].primary:focus, [type="reset"].primary:hover, [type="reset"].primary:focus, .button.primary:hover, .button.primary:focus, [role="button"].primary:hover, [role="button"].primary:focus {
- --button-hover-back-color: #1565c0; }
-
-button.secondary, [type="button"].secondary, [type="submit"].secondary, [type="reset"].secondary, .button.secondary, [role="button"].secondary {
- --button-back-color: #d32f2f;
- --button-fore-color: #f8f8f8; }
- button.secondary:hover, button.secondary:focus, [type="button"].secondary:hover, [type="button"].secondary:focus, [type="submit"].secondary:hover, [type="submit"].secondary:focus, [type="reset"].secondary:hover, [type="reset"].secondary:focus, .button.secondary:hover, .button.secondary:focus, [role="button"].secondary:hover, [role="button"].secondary:focus {
- --button-hover-back-color: #c62828; }
-
-button.tertiary, [type="button"].tertiary, [type="submit"].tertiary, [type="reset"].tertiary, .button.tertiary, [role="button"].tertiary {
- --button-back-color: #308732;
- --button-fore-color: #f8f8f8; }
- button.tertiary:hover, button.tertiary:focus, [type="button"].tertiary:hover, [type="button"].tertiary:focus, [type="submit"].tertiary:hover, [type="submit"].tertiary:focus, [type="reset"].tertiary:hover, [type="reset"].tertiary:focus, .button.tertiary:hover, .button.tertiary:focus, [role="button"].tertiary:hover, [role="button"].tertiary:focus {
- --button-hover-back-color: #277529; }
-
-button.inverse, [type="button"].inverse, [type="submit"].inverse, [type="reset"].inverse, .button.inverse, [role="button"].inverse {
- --button-back-color: #212121;
- --button-fore-color: #f8f8f8; }
- button.inverse:hover, button.inverse:focus, [type="button"].inverse:hover, [type="button"].inverse:focus, [type="submit"].inverse:hover, [type="submit"].inverse:focus, [type="reset"].inverse:hover, [type="reset"].inverse:focus, .button.inverse:hover, .button.inverse:focus, [role="button"].inverse:hover, [role="button"].inverse:focus {
- --button-hover-back-color: #111; }
-
-button.small, [type="button"].small, [type="submit"].small, [type="reset"].small, .button.small, [role="button"].small {
- padding: calc(0.5 * var(--universal-padding)) calc(0.75 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-button.large, [type="button"].large, [type="submit"].large, [type="reset"].large, .button.large, [role="button"].large {
- padding: calc(1.5 * var(--universal-padding)) calc(2 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-/*
- Definitions for navigation elements.
-*/
-/* Navigation module CSS variable definitions */
-:root {
- --header-back-color: #03234b;
- --header-hover-back-color: #ffd200;
- --header-fore-color: #ffffff;
- --header-border-color: #3cb4e6;
- --nav-back-color: #ffffff;
- --nav-hover-back-color: #ffe97f;
- --nav-fore-color: #e6007e;
- --nav-border-color: #3cb4e6;
- --nav-link-color: #3cb4e6;
- --footer-fore-color: #ffffff;
- --footer-back-color: #03234b;
- --footer-border-color: #3cb4e6;
- --footer-link-color: #3cb4e6;
- --drawer-back-color: #ffffff;
- --drawer-hover-back-color: #ffe97f;
- --drawer-border-color: #3cb4e6;
- --drawer-close-color: #e6007e; }
-
-header {
- height: 2.75rem;
- background: var(--header-back-color);
- color: var(--header-fore-color);
- border-bottom: 0.0714285714rem solid var(--header-border-color);
- padding: calc(var(--universal-padding) / 4) 0;
- white-space: nowrap;
- overflow-x: auto;
- overflow-y: hidden; }
- header.row {
- box-sizing: content-box; }
- header .logo {
- color: var(--header-fore-color);
- font-size: 1.75rem;
- padding: var(--universal-padding) calc(2 * var(--universal-padding));
- text-decoration: none; }
- header button, header [type="button"], header .button, header [role="button"] {
- box-sizing: border-box;
- position: relative;
- top: calc(0rem - var(--universal-padding) / 4);
- height: calc(3.1875rem + var(--universal-padding) / 2);
- background: var(--header-back-color);
- line-height: calc(3.1875rem - var(--universal-padding) * 1.5);
- text-align: center;
- color: var(--header-fore-color);
- border: 0;
- border-radius: 0;
- margin: 0;
- text-transform: uppercase; }
- header button:hover, header button:focus, header [type="button"]:hover, header [type="button"]:focus, header .button:hover, header .button:focus, header [role="button"]:hover, header [role="button"]:focus {
- background: var(--header-hover-back-color); }
-
-nav {
- background: var(--nav-back-color);
- color: var(--nav-fore-color);
- border: 0.0714285714rem solid var(--nav-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- nav * {
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
- nav a, nav a:visited {
- display: block;
- color: var(--nav-link-color);
- border-radius: var(--universal-border-radius);
- transition: background 0.3s; }
- nav a:hover, nav a:focus, nav a:visited:hover, nav a:visited:focus {
- text-decoration: none;
- background: var(--nav-hover-back-color); }
- nav .sublink-1 {
- position: relative;
- margin-left: calc(2 * var(--universal-padding)); }
- nav .sublink-1:before {
- position: absolute;
- left: calc(var(--universal-padding) - 1 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
- nav .sublink-2 {
- position: relative;
- margin-left: calc(4 * var(--universal-padding)); }
- nav .sublink-2:before {
- position: absolute;
- left: calc(var(--universal-padding) - 3 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
-
-footer {
- background: var(--footer-back-color);
- color: var(--footer-fore-color);
- border-top: 0.0714285714rem solid var(--footer-border-color);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding);
- font-size: 0.875rem; }
- footer a, footer a:visited {
- color: var(--footer-link-color); }
-
-header.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- top: 0; }
-
-footer.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- bottom: 0; }
-
-.drawer-toggle:before {
- display: inline-block;
- position: relative;
- vertical-align: bottom;
- content: '\00a0\2261\00a0';
- font-family: sans-serif;
- font-size: 1.5em; }
-@media screen and (min-width: 500px) {
- .drawer-toggle:not(.persistent) {
- display: none; } }
-
-[type="checkbox"].drawer {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].drawer + * {
- display: block;
- box-sizing: border-box;
- position: fixed;
- top: 0;
- width: 320px;
- height: 100vh;
- overflow-y: auto;
- background: var(--drawer-back-color);
- border: 0.0714285714rem solid var(--drawer-border-color);
- border-radius: 0;
- margin: 0;
- z-index: 1110;
- right: -320px;
- transition: right 0.3s; }
- [type="checkbox"].drawer + * .drawer-close {
- position: absolute;
- top: var(--universal-margin);
- right: var(--universal-margin);
- z-index: 1111;
- width: 2rem;
- height: 2rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].drawer + * .drawer-close:before {
- display: block;
- content: '\00D7';
- color: var(--drawer-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 2rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].drawer + * .drawer-close:hover, [type="checkbox"].drawer + * .drawer-close:focus {
- background: var(--drawer-hover-back-color); }
- @media screen and (max-width: 320px) {
- [type="checkbox"].drawer + * {
- width: 100%; } }
- [type="checkbox"].drawer:checked + * {
- right: 0; }
- @media screen and (min-width: 500px) {
- [type="checkbox"].drawer:not(.persistent) + * {
- position: static;
- height: 100%;
- z-index: 1100; }
- [type="checkbox"].drawer:not(.persistent) + * .drawer-close {
- display: none; } }
-
-/*
- Definitions for the responsive table component.
-*/
-/* Table module CSS variable definitions. */
-:root {
- --table-border-color: #03234b;
- --table-border-separator-color: #03234b;
- --table-head-back-color: #03234b;
- --table-head-fore-color: #ffffff;
- --table-body-back-color: #ffffff;
- --table-body-fore-color: #03234b;
- --table-body-alt-back-color: #f4f4f4; }
-
-table {
- border-collapse: separate;
- border-spacing: 0;
- margin: 0;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- padding: var(--universal-padding);
- padding-top: 0; }
- table caption {
- font-size: 1rem;
- margin: calc(2 * var(--universal-margin)) 0;
- max-width: 100%;
- flex: 0 0 100%; }
- table thead, table tbody {
- display: flex;
- flex-flow: row wrap;
- border: 0.0714285714rem solid var(--table-border-color); }
- table thead {
- z-index: 999;
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0;
- border-bottom: 0.0714285714rem solid var(--table-border-separator-color); }
- table tbody {
- border-top: 0;
- margin-top: calc(0 - var(--universal-margin));
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- table tr {
- display: flex;
- padding: 0; }
- table th, table td {
- padding: calc(0.5 * var(--universal-padding));
- font-size: 0.9rem; }
- table th {
- text-align: left;
- background: var(--table-head-back-color);
- color: var(--table-head-fore-color); }
- table td {
- background: var(--table-body-back-color);
- color: var(--table-body-fore-color);
- border-top: 0.0714285714rem solid var(--table-border-color); }
-
-table:not(.horizontal) {
- overflow: auto;
- max-height: 100%; }
- table:not(.horizontal) thead, table:not(.horizontal) tbody {
- max-width: 100%;
- flex: 0 0 100%; }
- table:not(.horizontal) tr {
- flex-flow: row wrap;
- flex: 0 0 100%; }
- table:not(.horizontal) th, table:not(.horizontal) td {
- flex: 1 0 0%;
- overflow: hidden;
- text-overflow: ellipsis; }
- table:not(.horizontal) thead {
- position: sticky;
- top: 0; }
- table:not(.horizontal) tbody tr:first-child td {
- border-top: 0; }
-
-table.horizontal {
- border: 0; }
- table.horizontal thead, table.horizontal tbody {
- border: 0;
- flex: .2 0 0;
- flex-flow: row nowrap; }
- table.horizontal tbody {
- overflow: auto;
- justify-content: space-between;
- flex: .8 0 0;
- margin-left: 0;
- padding-bottom: calc(var(--universal-padding) / 4); }
- table.horizontal tr {
- flex-direction: column;
- flex: 1 0 auto; }
- table.horizontal th, table.horizontal td {
- width: auto;
- border: 0;
- border-bottom: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal th:not(:first-child), table.horizontal td:not(:first-child) {
- border-top: 0; }
- table.horizontal th {
- text-align: right;
- border-left: 0.0714285714rem solid var(--table-border-color);
- border-right: 0.0714285714rem solid var(--table-border-separator-color); }
- table.horizontal thead tr:first-child {
- padding-left: 0; }
- table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td {
- border-right: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td:first-child {
- border-top-right-radius: 0.25rem; }
- table.horizontal tbody tr:last-child td:last-child {
- border-bottom-right-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:first-child {
- border-top-left-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:last-child {
- border-bottom-left-radius: 0.25rem; }
-
-@media screen and (max-width: 499px) {
- table, table.horizontal {
- border-collapse: collapse;
- border: 0;
- width: 100%;
- display: table; }
- table thead, table th, table.horizontal thead, table.horizontal th {
- border: 0;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- table tbody, table.horizontal tbody {
- border: 0;
- display: table-row-group; }
- table tr, table.horizontal tr {
- display: block;
- border: 0.0714285714rem solid var(--table-border-color);
- border-radius: var(--universal-border-radius);
- background: #ffffff;
- padding: var(--universal-padding);
- margin: var(--universal-margin);
- margin-bottom: calc(1 * var(--universal-margin)); }
- table th, table td, table.horizontal th, table.horizontal td {
- width: auto; }
- table td, table.horizontal td {
- display: block;
- border: 0;
- text-align: right; }
- table td:before, table.horizontal td:before {
- content: attr(data-label);
- float: left;
- font-weight: 600; }
- table th:first-child, table td:first-child, table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0; }
- table tbody tr:last-child td, table.horizontal tbody tr:last-child td {
- border-right: 0; } }
-table tr:nth-of-type(2n) > td {
- background: var(--table-body-alt-back-color); }
-
-@media screen and (max-width: 500px) {
- table tr:nth-of-type(2n) {
- background: var(--table-body-alt-back-color); } }
-:root {
- --table-body-hover-back-color: #90caf9; }
-
-table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); }
-
-@media screen and (max-width: 500px) {
- table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); } }
-/*
- Definitions for contextual background elements, toasts and tooltips.
-*/
-/* Contextual module CSS variable definitions */
-:root {
- --mark-back-color: #3cb4e6;
- --mark-fore-color: #ffffff; }
-
-mark {
- background: var(--mark-back-color);
- color: var(--mark-fore-color);
- font-size: 0.95em;
- line-height: 1em;
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) var(--universal-padding); }
- mark.inline-block {
- display: inline-block;
- font-size: 1em;
- line-height: 1.4;
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-:root {
- --toast-back-color: #424242;
- --toast-fore-color: #fafafa; }
-
-.toast {
- position: fixed;
- bottom: calc(var(--universal-margin) * 3);
- left: 50%;
- transform: translate(-50%, -50%);
- z-index: 1111;
- color: var(--toast-fore-color);
- background: var(--toast-back-color);
- border-radius: calc(var(--universal-border-radius) * 16);
- padding: var(--universal-padding) calc(var(--universal-padding) * 3); }
-
-:root {
- --tooltip-back-color: #212121;
- --tooltip-fore-color: #fafafa; }
-
-.tooltip {
- position: relative;
- display: inline-block; }
- .tooltip:before, .tooltip:after {
- position: absolute;
- opacity: 0;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: all 0.3s;
- z-index: 1010;
- left: 50%; }
- .tooltip:not(.bottom):before, .tooltip:not(.bottom):after {
- bottom: 75%; }
- .tooltip.bottom:before, .tooltip.bottom:after {
- top: 75%; }
- .tooltip:hover:before, .tooltip:hover:after, .tooltip:focus:before, .tooltip:focus:after {
- opacity: 1;
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%); }
- .tooltip:before {
- content: '';
- background: transparent;
- border: var(--universal-margin) solid transparent;
- left: calc(50% - var(--universal-margin)); }
- .tooltip:not(.bottom):before {
- border-top-color: #212121; }
- .tooltip.bottom:before {
- border-bottom-color: #212121; }
- .tooltip:after {
- content: attr(aria-label);
- color: var(--tooltip-fore-color);
- background: var(--tooltip-back-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- white-space: nowrap;
- transform: translateX(-50%); }
- .tooltip:not(.bottom):after {
- margin-bottom: calc(2 * var(--universal-margin)); }
- .tooltip.bottom:after {
- margin-top: calc(2 * var(--universal-margin)); }
-
-:root {
- --modal-overlay-color: rgba(0, 0, 0, 0.45);
- --modal-close-color: #e6007e;
- --modal-close-hover-color: #ffe97f; }
-
-[type="checkbox"].modal {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].modal + div {
- position: fixed;
- top: 0;
- left: 0;
- display: none;
- width: 100vw;
- height: 100vh;
- background: var(--modal-overlay-color); }
- [type="checkbox"].modal + div .card {
- margin: 0 auto;
- max-height: 50vh;
- overflow: auto; }
- [type="checkbox"].modal + div .card .modal-close {
- position: absolute;
- top: 0;
- right: 0;
- width: 1.75rem;
- height: 1.75rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].modal + div .card .modal-close:before {
- display: block;
- content: '\00D7';
- color: var(--modal-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 1.75rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].modal + div .card .modal-close:hover, [type="checkbox"].modal + div .card .modal-close:focus {
- background: var(--modal-close-hover-color); }
- [type="checkbox"].modal:checked + div {
- display: flex;
- flex: 0 1 auto;
- z-index: 1200; }
- [type="checkbox"].modal:checked + div .card .modal-close {
- z-index: 1211; }
-
-:root {
- --collapse-label-back-color: #03234b;
- --collapse-label-fore-color: #ffffff;
- --collapse-label-hover-back-color: #3cb4e6;
- --collapse-selected-label-back-color: #3cb4e6;
- --collapse-border-color: var(--collapse-label-back-color);
- --collapse-selected-border-color: #ceecf8;
- --collapse-content-back-color: #ffffff;
- --collapse-selected-label-border-color: #3cb4e6; }
-
-.collapse {
- width: calc(100% - 2 * var(--universal-margin));
- opacity: 1;
- display: flex;
- flex-direction: column;
- margin: var(--universal-margin);
- border-radius: var(--universal-border-radius); }
- .collapse > [type="radio"], .collapse > [type="checkbox"] {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- .collapse > label {
- flex-grow: 1;
- display: inline-block;
- height: 1.25rem;
- cursor: pointer;
- transition: background 0.2s;
- color: var(--collapse-label-fore-color);
- background: var(--collapse-label-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- padding: calc(1.25 * var(--universal-padding)); }
- .collapse > label:hover, .collapse > label:focus {
- background: var(--collapse-label-hover-back-color); }
- .collapse > label + div {
- flex-basis: auto;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: max-height 0.3s;
- max-height: 1px; }
- .collapse > :checked + label {
- background: var(--collapse-selected-label-back-color);
- border-color: var(--collapse-selected-label-border-color); }
- .collapse > :checked + label + div {
- box-sizing: border-box;
- position: relative;
- width: 100%;
- height: auto;
- overflow: auto;
- margin: 0;
- background: var(--collapse-content-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- border-top: 0;
- padding: var(--universal-padding);
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%);
- max-height: 100%; }
- .collapse > label:not(:first-of-type) {
- border-top: 0; }
- .collapse > label:first-of-type {
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0; }
- .collapse > label:last-of-type:not(:first-of-type) {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- .collapse > label:last-of-type:first-of-type {
- border-radius: var(--universal-border-radius); }
- .collapse > :checked:last-of-type:not(:first-of-type) + label {
- border-radius: 0; }
- .collapse > :checked:last-of-type + label + div {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
-
-/*
- Custom elements for contextual background elements, toasts and tooltips.
-*/
-mark.tertiary {
- --mark-back-color: #3cb4e6; }
-
-mark.tag {
- padding: calc(var(--universal-padding)/2) var(--universal-padding);
- border-radius: 1em; }
-
-/*
- Definitions for progress elements and spinners.
-*/
-/* Progress module CSS variable definitions */
-:root {
- --progress-back-color: #3cb4e6;
- --progress-fore-color: #555; }
-
-progress {
- display: block;
- vertical-align: baseline;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- height: 0.75rem;
- width: calc(100% - 2 * var(--universal-margin));
- margin: var(--universal-margin);
- border: 0;
- border-radius: calc(2 * var(--universal-border-radius));
- background: var(--progress-back-color);
- color: var(--progress-fore-color); }
- progress::-webkit-progress-value {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress::-webkit-progress-bar {
- background: var(--progress-back-color); }
- progress::-moz-progress-bar {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-webkit-progress-value {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-moz-progress-bar {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress.inline {
- display: inline-block;
- vertical-align: middle;
- width: 60%; }
-
-:root {
- --spinner-back-color: #ddd;
- --spinner-fore-color: #555; }
-
-@keyframes spinner-donut-anim {
- 0% {
- transform: rotate(0deg); }
- 100% {
- transform: rotate(360deg); } }
-.spinner {
- display: inline-block;
- margin: var(--universal-margin);
- border: 0.25rem solid var(--spinner-back-color);
- border-left: 0.25rem solid var(--spinner-fore-color);
- border-radius: 50%;
- width: 1.25rem;
- height: 1.25rem;
- animation: spinner-donut-anim 1.2s linear infinite; }
-
-/*
- Custom elements for progress bars and spinners.
-*/
-progress.primary {
- --progress-fore-color: #1976d2; }
-
-progress.secondary {
- --progress-fore-color: #d32f2f; }
-
-progress.tertiary {
- --progress-fore-color: #308732; }
-
-.spinner.primary {
- --spinner-fore-color: #1976d2; }
-
-.spinner.secondary {
- --spinner-fore-color: #d32f2f; }
-
-.spinner.tertiary {
- --spinner-fore-color: #308732; }
-
-/*
- Definitions for icons - powered by Feather (https://feathericons.com/).
-*/
-span[class^='icon-'] {
- display: inline-block;
- height: 1em;
- width: 1em;
- vertical-align: -0.125em;
- background-size: contain;
- margin: 0 calc(var(--universal-margin) / 4); }
- span[class^='icon-'].secondary {
- -webkit-filter: invert(25%);
- filter: invert(25%); }
- span[class^='icon-'].inverse {
- -webkit-filter: invert(100%);
- filter: invert(100%); }
-
-span.icon-alert {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-bookmark {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-calendar {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-credit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-edit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); }
-span.icon-link {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-help {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-home {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-info {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-lock {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-mail {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-location {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-phone {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-rss {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-search {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-settings {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-share {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-cart {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-upload {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-user {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E"); }
-
-/*
- Definitions for STMicroelectronics icons (https://brandportal.st.com/document/26).
-*/
-span.icon-st-update {
- background-image: url("Update.svg"); }
-span.icon-st-add {
- background-image: url("Add button.svg"); }
-
-/*
- Definitions for utilities and helper classes.
-*/
-/* Utility module CSS variable definitions */
-:root {
- --generic-border-color: rgba(0, 0, 0, 0.3);
- --generic-box-shadow: 0 0.2857142857rem 0.2857142857rem 0 rgba(0, 0, 0, 0.125), 0 0.1428571429rem 0.1428571429rem -0.1428571429rem rgba(0, 0, 0, 0.125); }
-
-.hidden {
- display: none !important; }
-
-.visually-hidden {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; }
-
-.bordered {
- border: 0.0714285714rem solid var(--generic-border-color) !important; }
-
-.rounded {
- border-radius: var(--universal-border-radius) !important; }
-
-.circular {
- border-radius: 50% !important; }
-
-.shadowed {
- box-shadow: var(--generic-box-shadow) !important; }
-
-.responsive-margin {
- margin: calc(var(--universal-margin) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-margin {
- margin: calc(var(--universal-margin) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-margin {
- margin: var(--universal-margin) !important; } }
-
-.responsive-padding {
- padding: calc(var(--universal-padding) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-padding {
- padding: calc(var(--universal-padding) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-padding {
- padding: var(--universal-padding) !important; } }
-
-@media screen and (max-width: 499px) {
- .hidden-sm {
- display: none !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .hidden-md {
- display: none !important; } }
-@media screen and (min-width: 1280px) {
- .hidden-lg {
- display: none !important; } }
-@media screen and (max-width: 499px) {
- .visually-hidden-sm {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .visually-hidden-md {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 1280px) {
- .visually-hidden-lg {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-
-/*# sourceMappingURL=mini-custom.css.map */
-
-img[alt="ST logo"] { display: block; margin: auto; width: 75%; max-width: 250px; min-width: 71px; }
-img[alt="Cube logo"] { float: right; width: 30%; max-width: 10rem; min-width: 8rem; padding-right: 1rem;}
-
-.figure {
- display: block;
- margin-left: auto;
- margin-right: auto;
- text-align: center;
-}
\ No newline at end of file
diff --git a/Drivers/BSP/STM32446E_EVAL/_htmresc/st_logo_2020.png b/Drivers/BSP/STM32446E_EVAL/_htmresc/st_logo_2020.png
deleted file mode 100644
index d6cebb5ac7..0000000000
Binary files a/Drivers/BSP/STM32446E_EVAL/_htmresc/st_logo_2020.png and /dev/null differ
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval.c
deleted file mode 100644
index 3fdbb83bc5..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval.c
+++ /dev/null
@@ -1,1329 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval.c
- * @author MCD Application Team
- * @brief This file provides a set of firmware functions to manage LEDs,
- * push-buttons and COM ports available on STM32446E-EVAL evaluation
- * board(MB1045) RevB from STMicroelectronics.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info: ------------------------------------------------------------------
- User NOTE
-
- This driver requires the stm32446e_eval_io to manage the joystick
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval.h"
-#if defined(USE_IOEXPANDER)
-#include "stm32446e_eval_io.h"
-#endif /* USE_IOEXPANDER */
-
-
-/** @defgroup BSP BSP
- * @{
- */
-
-/** @defgroup STM32446E_EVAL STM32446E EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL STM32446E EVAL LOW LEVEL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Private_TypesDefinitions STM32446E EVAL LOW LEVEL Private TypesDefinitions
- * @{
- */
-typedef struct
-{
- __IO uint16_t REG;
- __IO uint16_t RAM;
-}LCD_CONTROLLER_TypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Private_Defines STM32446E EVAL LOW LEVEL Private Defines
- * @{
- */
-
-/**
- * @brief STM32446E EVAL BSP Driver version number V2.1.2
- */
-#define __STM32446E_EVAL_BSP_VERSION_MAIN (0x02) /*!< [31:24] main version */
-#define __STM32446E_EVAL_BSP_VERSION_SUB1 (0x01) /*!< [23:16] sub1 version */
-#define __STM32446E_EVAL_BSP_VERSION_SUB2 (0x02) /*!< [15:8] sub2 version */
-#define __STM32446E_EVAL_BSP_VERSION_RC (0x00) /*!< [7:0] release candidate */
-#define __STM32446E_EVAL_BSP_VERSION ((__STM32446E_EVAL_BSP_VERSION_MAIN << 24)\
- |(__STM32446E_EVAL_BSP_VERSION_SUB1 << 16)\
- |(__STM32446E_EVAL_BSP_VERSION_SUB2 << 8 )\
- |(__STM32446E_EVAL_BSP_VERSION_RC))
-
-/* Compared to F4xG we use BANK1 rather then BANK3 since we use FMC_NE1 signal (not FMC_NE3) */
-#define FMC_BANK1_BASE ((uint32_t)(0x60000000 | 0x00000000))
-#define FMC_BANK3_BASE ((uint32_t)(0x60000000 | 0x08000000))
-#define FMC_BANK1 ((LCD_CONTROLLER_TypeDef *) FMC_BANK1_BASE)
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Private_Macros STM32446E EVAL LOW LEVEL Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Private_Variables STM32446E EVAL LOW LEVEL Private Variables
- * @{
- */
-
-#if defined(USE_IOEXPANDER)
-const uint32_t GPIO_PIN[LEDn] = {LED1_PIN,
- LED2_PIN,
- LED3_PIN,
- LED4_PIN};
-#else
-const uint32_t GPIO_PIN[LEDn] = {LED1_PIN,
- LED3_PIN};
-#endif /* USE_IOEXPANDER */
-
-
-GPIO_TypeDef* BUTTON_PORT[BUTTONn] = {WAKEUP_BUTTON_GPIO_PORT,
- TAMPER_BUTTON_GPIO_PORT,
- KEY_BUTTON_GPIO_PORT};
-
-const uint16_t BUTTON_PIN[BUTTONn] = {WAKEUP_BUTTON_PIN,
- TAMPER_BUTTON_PIN,
- KEY_BUTTON_PIN};
-
-const uint16_t BUTTON_IRQn[BUTTONn] = {WAKEUP_BUTTON_EXTI_IRQn,
- TAMPER_BUTTON_EXTI_IRQn,
- KEY_BUTTON_EXTI_IRQn};
-
-USART_TypeDef* COM_USART[COMn] = {EVAL_COM1};
-
-GPIO_TypeDef* COM_TX_PORT[COMn] = {EVAL_COM1_TX_GPIO_PORT};
-
-GPIO_TypeDef* COM_RX_PORT[COMn] = {EVAL_COM1_RX_GPIO_PORT};
-
-const uint16_t COM_TX_PIN[COMn] = {EVAL_COM1_TX_PIN};
-
-const uint16_t COM_RX_PIN[COMn] = {EVAL_COM1_RX_PIN};
-
-const uint16_t COM_TX_AF[COMn] = {EVAL_COM1_TX_AF};
-
-const uint16_t COM_RX_AF[COMn] = {EVAL_COM1_RX_AF};
-
-static FMPI2C_HandleTypeDef hEvalI2c;
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Private_FunctionPrototypes STM32446E EVAL LOW LEVEL Private FunctionPrototypes
- * @{
- */
-static void I2Cx_MspInit(void);
-static void I2Cx_Init(void);
-#if defined(USE_IOEXPANDER)
-static void I2Cx_Write(uint8_t Addr, uint8_t Reg, uint8_t Value);
-static uint8_t I2Cx_Read(uint8_t Addr, uint8_t Reg);
-#endif /* USE_IOEXPANDER */
-
-static HAL_StatusTypeDef I2Cx_ReadMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length);
-static HAL_StatusTypeDef I2Cx_WriteMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length);
-static HAL_StatusTypeDef I2Cx_IsDeviceReady(uint16_t DevAddress, uint32_t Trials);
-static void I2Cx_Error(uint8_t Addr);
-
-static void FMC_BANK1_WriteData(uint16_t Data);
-static void FMC_BANK1_WriteReg(uint8_t Reg);
-static uint16_t FMC_BANK1_ReadData(void);
-static void FMC_BANK1_Init(void);
-static void FMC_BANK1_MspInit(void);
-
-/* IOExpander IO functions */
-#if defined(USE_IOEXPANDER)
-void MFX_IO_Init(void);
-void MFX_IO_DeInit(void);
-void MFX_IO_ITConfig(void);
-void MFX_IO_Delay(uint32_t Delay);
-void MFX_IO_Write(uint16_t Addr, uint8_t Reg, uint8_t Value);
-uint8_t MFX_IO_Read(uint16_t Addr, uint8_t Reg);
-uint16_t MFX_IO_ReadMultiple(uint16_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length);
-void MFX_IO_Wakeup(void);
-void MFX_IO_EnableWakeupPin(void);
-#endif /* USE_IOEXPANDER */
-
-/* LCD IO functions */
-void LCD_IO_Init(void);
-void LCD_IO_WriteData(uint16_t Data);
-void LCD_IO_WriteMultipleData(uint8_t *pData, uint32_t Size);
-void LCD_IO_WriteReg(uint8_t Reg);
-uint16_t LCD_IO_ReadData(uint16_t Reg);
-
-/* AUDIO IO functions */
-void AUDIO_IO_Init(void);
-void AUDIO_IO_DeInit(void);
-void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value);
-uint16_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg);
-void AUDIO_IO_Delay(uint32_t Delay);
-
-/* CAMERA IO functions */
-void CAMERA_IO_Init(void);
-void CAMERA_Delay(uint32_t Delay);
-void CAMERA_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value);
-uint16_t CAMERA_IO_Read(uint8_t Addr, uint16_t Reg);
-
-/* I2C EEPROM IO function */
-void EEPROM_IO_Init(void);
-HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials);
-
-
-/**
- * @}
- */
-
-
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Private_Functions STM32446E EVAL LOW LEVEL Private Functions
- * @{
- */
-
- /**
- * @brief This method returns the STM32446E EVAL BSP Driver revision
- * @retval version: 0xXYZR (8bits for each decimal, R for RC)
- */
-uint32_t BSP_GetVersion(void)
-{
- return __STM32446E_EVAL_BSP_VERSION;
-}
-
-/**
- * @brief Configures LEDs.
- * @param Led: LED to be configured.
- * This parameter can be one of the following values:
- * @arg LED1
- * @arg LED2
- * @arg LED3
- * @arg LED4
- */
-void BSP_LED_Init(Led_TypeDef Led)
-{
-#if !defined(USE_STM32446E_EVAL_REVA)
- GPIO_InitTypeDef gpio_init_structure;
-
- /* On RevB led1 and Led3 are on GPIO while Led2 and Led4 on Mfx*/
- if ((Led == LED1) || (Led == LED3))
- {
- /* Enable the GPIO_LED clock */
- LEDx_GPIO_CLK_ENABLE();
-
- /* Configure the GPIO_LED pin */
- gpio_init_structure.Pin = GPIO_PIN[Led];
- gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
-
- HAL_GPIO_Init(LEDx_GPIO_PORT, &gpio_init_structure);
-
- /* By default, turn off LED */
- HAL_GPIO_WritePin(LEDx_GPIO_PORT, GPIO_PIN[Led], GPIO_PIN_SET);
- }
- else /* Led2 and Led4 */
- {
-#endif /* !USE_STM32446E_EVAL_REVA */
-
-#if defined(USE_IOEXPANDER) /* (USE_IOEXPANDER always defined for RevA) */
- /* Initialize the IO functionalities (Mfx) */
- BSP_IO_Init();
- /* GPIO_PIN[Led] depends on the board revision: */
- /* - in case of RevA all leds are on IOEXPANDER (Mfx) */
- /* - in case of RevB just led 2 and led4 on IOEXPANDER (Mfx) */
- BSP_IO_ConfigPin(GPIO_PIN[Led], IO_MODE_OUTPUT_PP_PU);
- BSP_IO_WritePin(GPIO_PIN[Led], BSP_IO_PIN_SET);
-#endif /* USE_IOEXPANDER */
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- }
-#endif /* !USE_STM32446E_EVAL_REVA */
-}
-
-/**
- * @brief DeInit LEDs.
- * @param Led: LED to be configured.
- * This parameter can be one of the following values:
- * @arg LED1
- * @arg LED2
- * @arg LED3
- * @arg LED4
- * @note Led DeInit does not disable the GPIO clock nor disable the Mfx
- */
-void BSP_LED_DeInit(Led_TypeDef Led)
-{
-#if !defined(USE_STM32446E_EVAL_REVA)
- GPIO_InitTypeDef gpio_init_structure;
-
- /* On RevB led1 and Led3 are on GPIO while Led2 and Led4 on Mfx*/
- if ((Led == LED1) || (Led == LED3))
- {
- /* Turn off LED */
- HAL_GPIO_WritePin(LEDx_GPIO_PORT, GPIO_PIN[Led], GPIO_PIN_RESET);
- /* DeInit the GPIO_LED pin */
- gpio_init_structure.Pin = GPIO_PIN[Led];
- HAL_GPIO_DeInit(LEDx_GPIO_PORT, gpio_init_structure.Pin);
- }
- else
- {
-#endif /* !USE_STM32446E_EVAL_REVA */
-
-#if defined(USE_IOEXPANDER) /* (USE_IOEXPANDER always defined for RevA) */
- /* GPIO_PIN[Led] depends on the board revision: */
- /* - in case of RevA all leds are on IOEXPANDER (Mfx) */
- /* - in case of RevB just led 2 and led4 on IOEXPANDER (Mfx) */
- BSP_IO_ConfigPin(GPIO_PIN[Led], IO_MODE_OFF);
-#endif /* USE_IOEXPANDER */
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- }
-#endif /* !USE_STM32446E_EVAL_REVA */
-}
-
-/**
- * @brief Turns selected LED On.
- * @param Led: LED to be set on
- * This parameter can be one of the following values:
- * @arg LED1
- * @arg LED2
- * @arg LED3
- * @arg LED4
- */
-void BSP_LED_On(Led_TypeDef Led)
-{
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- /* On RevB led1 and Led3 are on GPIO while Led2 and Led4 on Mfx*/
- if ((Led == LED1) || (Led == LED3))
- {
- HAL_GPIO_WritePin(LEDx_GPIO_PORT, GPIO_PIN[Led], GPIO_PIN_RESET);
- }
- else
- {
-#endif /* !USE_STM32446E_EVAL_REVA */
-
-#if defined(USE_IOEXPANDER) /* (USE_IOEXPANDER always defined for RevA) */
- /* GPIO_PIN[Led] depends on the board revision: */
- /* - in case of RevA all leds are on IOEXPANDER (Mfx) */
- /* - in case of RevB just led 2 and led4 on IOEXPANDER (Mfx) */
- BSP_IO_WritePin(GPIO_PIN[Led], BSP_IO_PIN_RESET);
-#endif /* USE_IOEXPANDER */
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- }
-#endif /* !USE_STM32446E_EVAL_REVA */
-}
-
-/**
- * @brief Turns selected LED Off.
- * @param Led: LED to be set off
- * This parameter can be one of the following values:
- * @arg LED1
- * @arg LED2
- * @arg LED3
- * @arg LED4
- */
-void BSP_LED_Off(Led_TypeDef Led)
-{
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- /* On RevB led1 and Led3 are on GPIO while Led2 and Led4 on Mfx*/
- if ((Led == LED1) || (Led == LED3))
- {
- HAL_GPIO_WritePin(LEDx_GPIO_PORT, GPIO_PIN[Led], GPIO_PIN_SET);
- }
- else
- {
-#endif /* !USE_STM32446E_EVAL_REVA */
-
-#if defined(USE_IOEXPANDER) /* (USE_IOEXPANDER always defined for RevA) */
- /* GPIO_PIN[Led] depends on the board revision: */
- /* - in case of RevA all leds are on IOEXPANDER (Mfx) */
- /* - in case of RevB just led 2 and led4 on IOEXPANDER (Mfx) */
- BSP_IO_WritePin(GPIO_PIN[Led], BSP_IO_PIN_SET);
-#endif /* USE_IOEXPANDER */
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- }
-#endif /* !USE_STM32446E_EVAL_REVA */
-
-}
-
-/**
- * @brief Toggles the selected LED.
- * @param Led: LED to be toggled
- * This parameter can be one of the following values:
- * @arg LED1
- * @arg LED2
- * @arg LED3
- * @arg LED4
- */
-void BSP_LED_Toggle(Led_TypeDef Led)
-{
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- /* On RevB led1 and Led3 are on GPIO while Led2 and Led4 on Mfx*/
- if ((Led == LED1) || (Led == LED3))
- {
- HAL_GPIO_TogglePin(LEDx_GPIO_PORT, GPIO_PIN[Led]);
- }
- else
- {
-#endif /* !USE_STM32446E_EVAL_REVA */
-
-#if defined(USE_IOEXPANDER) /* (USE_IOEXPANDER always defined for RevA) */
- /* GPIO_PIN[Led] depends on the board revision: */
- /* - in case of RevA all leds are on IOEXPANDER (Mfx) */
- /* - in case of RevB just led 2 and led4 on IOEXPANDER (Mfx) */
- BSP_IO_TogglePin(GPIO_PIN[Led]);
-#endif /* USE_IOEXPANDER */
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- }
-#endif /* !USE_STM32446E_EVAL_REVA */
-}
-
-/**
- * @brief Configures button GPIO and EXTI Line.
- * @param Button: Button to be configured
- * This parameter can be one of the following values:
- * @arg BUTTON_WAKEUP: Wakeup Push Button
- * @arg BUTTON_TAMPER: Tamper Push Button
- * @arg BUTTON_KEY: Key Push Button
- * @param ButtonMode: Button mode
- * This parameter can be one of the following values:
- * @arg BUTTON_MODE_GPIO: Button will be used as simple IO
- * @arg BUTTON_MODE_EXTI: Button will be connected to EXTI line
- * with interrupt generation capability
- * @note On STM32446E-EVAL evaluation board, the three buttons (Wakeup, Tamper
- * and key buttons) are mapped on the same push button named "Wakeup/Tamper"
- * on the board serigraphy.
- */
-void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* Enable the BUTTON clock */
- BUTTONx_GPIO_CLK_ENABLE(Button);
-
- if(ButtonMode == BUTTON_MODE_GPIO)
- {
- /* Configure Button pin as input */
- gpio_init_structure.Pin = BUTTON_PIN[Button];
- gpio_init_structure.Mode = GPIO_MODE_INPUT;
- gpio_init_structure.Pull = GPIO_NOPULL;
- gpio_init_structure.Speed = GPIO_SPEED_FAST;
- HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure);
- }
-
- if(ButtonMode == BUTTON_MODE_EXTI)
- {
- /* Configure Button pin as input with External interrupt */
- gpio_init_structure.Pin = BUTTON_PIN[Button];
- gpio_init_structure.Pull = GPIO_NOPULL;
- gpio_init_structure.Speed = GPIO_SPEED_FAST;
-
- if(Button != BUTTON_WAKEUP)
- {
- gpio_init_structure.Mode = GPIO_MODE_IT_FALLING;
- }
- else
- {
- gpio_init_structure.Mode = GPIO_MODE_IT_RISING;
- }
-
- HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure);
-
- /* Enable and set Button EXTI Interrupt to the lowest priority */
- HAL_NVIC_SetPriority((IRQn_Type)(BUTTON_IRQn[Button]), 0x0F, 0x00);
- HAL_NVIC_EnableIRQ((IRQn_Type)(BUTTON_IRQn[Button]));
- }
-}
-
-/**
- * @brief Push Button DeInit.
- * @param Button: Button to be configured
- * This parameter can be one of the following values:
- * @arg BUTTON_WAKEUP: Wakeup Push Button
- * @arg BUTTON_TAMPER: Tamper Push Button
- * @arg BUTTON_KEY: Key Push Button
- * @note On STM32446E-EVAL evaluation board, the three buttons (Wakeup, Tamper
- * and key buttons) are mapped on the same push button nammed "Wakeup/Tamper"
- * on the board serigraphy.
- * @note PB DeInit does not disable the GPIO clock
- */
-void BSP_PB_DeInit(Button_TypeDef Button)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- gpio_init_structure.Pin = BUTTON_PIN[Button];
- HAL_NVIC_DisableIRQ((IRQn_Type)(BUTTON_IRQn[Button]));
- HAL_GPIO_DeInit(BUTTON_PORT[Button], gpio_init_structure.Pin);
-}
-
-/**
- * @brief Returns the selected button state.
- * @param Button: Button to be checked
- * This parameter can be one of the following values:
- * @arg BUTTON_WAKEUP: Wakeup Push Button
- * @arg BUTTON_TAMPER: Tamper Push Button
- * @arg BUTTON_KEY: Key Push Button
- * @note On STM32446E-EVAL evaluation board, the three buttons (Wakeup, Tamper
- * and key buttons) are mapped on the same push button nammed "Wakeup/Tamper"
- * on the board serigraphy.
- * @retval The Button GPIO pin value
- */
-uint32_t BSP_PB_GetState(Button_TypeDef Button)
-{
- return HAL_GPIO_ReadPin(BUTTON_PORT[Button], BUTTON_PIN[Button]);
-}
-
-/**
- * @brief Configures COM port.
- * @param COM: COM port to be configured.
- * This parameter can be one of the following values:
- * @arg COM1
- * @arg COM2
- * @param huart: Pointer to a UART_HandleTypeDef structure that contains the
- * configuration information for the specified USART peripheral.
- */
-void BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef *huart)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* Enable GPIO clock */
- EVAL_COMx_TX_GPIO_CLK_ENABLE(COM);
- EVAL_COMx_RX_GPIO_CLK_ENABLE(COM);
-
- /* Enable USART clock */
- EVAL_COMx_CLK_ENABLE(COM);
-
- /* Configure USART Tx as alternate function */
- gpio_init_structure.Pin = COM_TX_PIN[COM];
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Speed = GPIO_SPEED_FAST;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Alternate = COM_TX_AF[COM];
- HAL_GPIO_Init(COM_TX_PORT[COM], &gpio_init_structure);
-
- /* Configure USART Rx as alternate function */
- gpio_init_structure.Pin = COM_RX_PIN[COM];
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Alternate = COM_RX_AF[COM];
- HAL_GPIO_Init(COM_RX_PORT[COM], &gpio_init_structure);
-
- /* USART configuration */
- huart->Instance = COM_USART[COM];
- HAL_UART_Init(huart);
-}
-
-/**
- * @brief DeInit COM port.
- * @param COM: COM port to be configured.
- * This parameter can be one of the following values:
- * @arg COM1
- * @arg COM2
- * @param huart: Pointer to a UART_HandleTypeDef structure that contains the
- * configuration information for the specified USART peripheral.
- */
-void BSP_COM_DeInit(COM_TypeDef COM, UART_HandleTypeDef *huart)
-{
- /* USART configuration */
- huart->Instance = COM_USART[COM];
- HAL_UART_DeInit(huart);
-
- /* Enable USART clock */
- EVAL_COMx_CLK_DISABLE(COM);
-
- /* DeInit GPIO pins can be done in the application
- (by surcharging this __weak function) */
-
- /* GPIO pins clock, FMC clock and DMA clock can be shut down in the application
- by surcharging this __weak function */
-}
-
-#if defined(USE_IOEXPANDER)
-/**
- * @brief Configures joystick GPIO and EXTI modes.
- * @param JoyMode: Button mode.
- * This parameter can be one of the following values:
- * @arg JOY_MODE_GPIO: Joystick pins will be used as simple IOs
- * @arg JOY_MODE_EXTI: Joystick pins will be connected to EXTI line
- * with interrupt generation capability
- * @retval IO_OK: if all initializations are OK. Other value if error.
- */
-uint8_t BSP_JOY_Init(JOYMode_TypeDef JoyMode)
-{
- uint8_t ret = 0;
-
- /* Initialize the IO functionalities */
- ret = BSP_IO_Init();
-
- /* Configure joystick pins in IT mode */
- if(JoyMode == JOY_MODE_EXTI)
- {
- /* Configure IO interrupt acquisition mode */
- BSP_IO_ConfigPin(JOY_ALL_PINS, IO_MODE_IT_FALLING_EDGE_PU);
- }
- else
- {
- BSP_IO_ConfigPin(JOY_ALL_PINS, IO_MODE_INPUT_PU);
- }
-
- return ret;
-}
-
-
-/**
- * @brief DeInit joystick GPIOs.
- * @note JOY DeInit does not disable the Mfx, just set the Mfx pins in Off mode
- */
-void BSP_JOY_DeInit(void)
-{
- BSP_IO_ConfigPin(JOY_ALL_PINS, IO_MODE_OFF);
-}
-
-/**
- * @brief Returns the current joystick status.
- * @retval Code of the joystick key pressed
- * This code can be one of the following values:
- * @arg JOY_NONE
- * @arg JOY_SEL
- * @arg JOY_DOWN
- * @arg JOY_LEFT
- * @arg JOY_RIGHT
- * @arg JOY_UP
- */
-JOYState_TypeDef BSP_JOY_GetState(void)
-{
- uint16_t pin_status = 0;
-
- /* Read the status joystick pins */
- pin_status = BSP_IO_ReadPin(JOY_ALL_PINS);
-
- /* Check the pressed keys */
- if((pin_status & JOY_NONE_PIN) == JOY_NONE)
- {
- return(JOYState_TypeDef) JOY_NONE;
- }
- else if(!(pin_status & JOY_SEL_PIN))
- {
- return(JOYState_TypeDef) JOY_SEL;
- }
- else if(!(pin_status & JOY_DOWN_PIN))
- {
- return(JOYState_TypeDef) JOY_DOWN;
- }
- else if(!(pin_status & JOY_LEFT_PIN))
- {
- return(JOYState_TypeDef) JOY_LEFT;
- }
- else if(!(pin_status & JOY_RIGHT_PIN))
- {
- return(JOYState_TypeDef) JOY_RIGHT;
- }
- else if(!(pin_status & JOY_UP_PIN))
- {
- return(JOYState_TypeDef) JOY_UP;
- }
- else
- {
- return(JOYState_TypeDef) JOY_NONE;
- }
-}
-
-#endif /* USE_IOEXPANDER */
-
-/*******************************************************************************
- BUS OPERATIONS
-*******************************************************************************/
-
-/******************************* I2C Routines *********************************/
-/**
- * @brief Initializes I2C MSP.
- */
-static void I2Cx_MspInit(void)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /*** Configure the GPIOs ***/
- /* Enable GPIO clock */
- EVAL_I2Cx_SCL_SDA_GPIO_CLK_ENABLE();
-
- /* Configure I2C Tx as alternate function */
- gpio_init_structure.Pin = EVAL_I2Cx_SCL_PIN;
- gpio_init_structure.Mode = GPIO_MODE_AF_OD;
- gpio_init_structure.Pull = GPIO_NOPULL;
- gpio_init_structure.Speed = GPIO_SPEED_FAST;
- gpio_init_structure.Alternate = EVAL_I2Cx_SCL_SDA_AF;
- HAL_GPIO_Init(EVAL_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure);
-
- /* Configure I2C Rx as alternate function */
- gpio_init_structure.Pin = EVAL_I2Cx_SDA_PIN;
- HAL_GPIO_Init(EVAL_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure);
-
- /*** Configure the I2C peripheral ***/
- /* Enable I2C clock */
- EVAL_I2Cx_CLK_ENABLE();
-
- /* Force the I2C peripheral clock reset */
- EVAL_I2Cx_FORCE_RESET();
-
- /* Release the I2C peripheral clock reset */
- EVAL_I2Cx_RELEASE_RESET();
-
- /* Enable and set I2Cx Interrupt to a lower priority */
- HAL_NVIC_SetPriority(EVAL_I2Cx_EV_IRQn, 0x05, 0);
- HAL_NVIC_EnableIRQ(EVAL_I2Cx_EV_IRQn);
-
- /* Enable and set I2Cx Interrupt to a lower priority */
- HAL_NVIC_SetPriority(EVAL_I2Cx_ER_IRQn, 0x05, 0);
- HAL_NVIC_EnableIRQ(EVAL_I2Cx_ER_IRQn);
-}
-
-/**
- * @brief Initializes I2C HAL.
- */
-static void I2Cx_Init(void)
-{
- if(HAL_FMPI2C_GetState(&hEvalI2c) == HAL_FMPI2C_STATE_RESET)
- {
- hEvalI2c.Instance = EVAL_I2Cx;
- hEvalI2c.Init.Timing = EVAL_I2Cx_TIMING;
- hEvalI2c.Init.OwnAddress1 = 0;
- hEvalI2c.Init.AddressingMode = FMPI2C_ADDRESSINGMODE_7BIT;
- hEvalI2c.Init.DualAddressMode = FMPI2C_DUALADDRESS_DISABLE;
- hEvalI2c.Init.OwnAddress2 = 0;
- hEvalI2c.Init.GeneralCallMode = FMPI2C_GENERALCALL_DISABLE;
- hEvalI2c.Init.NoStretchMode = FMPI2C_NOSTRETCH_DISABLE;
-
- /* Init the I2C */
- I2Cx_MspInit();
- HAL_FMPI2C_Init(&hEvalI2c);
- }
-}
-
-#if defined(USE_IOEXPANDER)
-
-
-/**
- * @brief Writes a single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @param Value: Data to be written
- */
-static void I2Cx_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- HAL_StatusTypeDef status = HAL_OK;
-
- status = HAL_FMPI2C_Mem_Write(&hEvalI2c, Addr, (uint16_t)Reg, FMPI2C_MEMADD_SIZE_8BIT, &Value, 1, 100);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* Execute user timeout callback */
- I2Cx_Error(Addr);
- }
-}
-
-/**
- * @brief Reads a single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @retval Read data
- */
-static uint8_t I2Cx_Read(uint8_t Addr, uint8_t Reg)
-{
- HAL_StatusTypeDef status = HAL_OK;
- uint8_t Value = 0;
-
- status = HAL_FMPI2C_Mem_Read(&hEvalI2c, Addr, Reg, FMPI2C_MEMADD_SIZE_8BIT, &Value, 1, 1000);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* Execute user timeout callback */
- I2Cx_Error(Addr);
- }
- return Value;
-}
-
-#endif /* USE_IOEXPANDER */
-
-/**
- * @brief Reads multiple data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param MemAddSize: address size
- * @param Buffer: Pointer to data buffer
- * @param Length: Length of the data
- * @retval Number of read data
- */
-static HAL_StatusTypeDef I2Cx_ReadMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length)
-{
- HAL_StatusTypeDef status = HAL_OK;
-
- status = HAL_FMPI2C_Mem_Read(&hEvalI2c, Addr, (uint16_t)Reg, MemAddSize, Buffer, Length, 1000);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* I2C error occurred */
- I2Cx_Error(Addr);
- }
- return status;
-}
-
-/**
- * @brief Writes a value in a register of the device through BUS in using DMA mode.
- * @param Addr: Device address on BUS Bus.
- * @param Reg: The target register address to write
- * @param MemAddSize: address size
- * @param Buffer: The target register value to be written
- * @param Length: buffer size to be written
- * @retval HAL status
- */
-static HAL_StatusTypeDef I2Cx_WriteMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length)
-{
- HAL_StatusTypeDef status = HAL_OK;
-
- status = HAL_FMPI2C_Mem_Write(&hEvalI2c, Addr, (uint16_t)Reg, MemAddSize, Buffer, Length, 1000);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* Re-Initialize the I2C Bus */
- I2Cx_Error(Addr);
- }
- return status;
-}
-
-/**
- * @brief Checks if target device is ready for communication.
- * @note This function is used with Memory devices
- * @param DevAddress: Target device address
- * @param Trials: Number of trials
- * @retval HAL status
- */
-static HAL_StatusTypeDef I2Cx_IsDeviceReady(uint16_t DevAddress, uint32_t Trials)
-{
- return (HAL_FMPI2C_IsDeviceReady(&hEvalI2c, DevAddress, Trials, 1000));
-}
-
-/**
- * @brief Manages error callback by re-initializing I2C.
- * @param Addr: I2C Address
- */
-static void I2Cx_Error(uint8_t Addr)
-{
- /* De-initialize the I2C communication bus */
- HAL_FMPI2C_DeInit(&hEvalI2c);
-
- /* Re-Initialize the I2C communication bus */
- I2Cx_Init();
-}
-
-/*************************** FMC Routines ************************************/
-/**
- * @brief Initializes FMC_BANK1 MSP.
- */
-static void FMC_BANK1_MspInit(void)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* Enable FMC clock */
- __HAL_RCC_FMC_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
- __HAL_RCC_GPIOF_CLK_ENABLE();
-
- /* Common GPIO configuration */
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
- gpio_init_structure.Alternate = GPIO_AF12_FMC;
-
- /* GPIOD configuration */ /* GPIO_PIN_7 is FMC_NE1 */
- gpio_init_structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_8 |\
- GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15 | GPIO_PIN_7;
-
- HAL_GPIO_Init(GPIOD, &gpio_init_structure);
-
- /* GPIOE configuration */
- gpio_init_structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3| GPIO_PIN_4 | GPIO_PIN_7 |\
- GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 |\
- GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOE, &gpio_init_structure);
-
- /* GPIOF configuration */
- gpio_init_structure.Pin = GPIO_PIN_0 ;
- HAL_GPIO_Init(GPIOF, &gpio_init_structure);
-}
-
-
-/**
- * @brief Initializes LCD IO.
- */
-static void FMC_BANK1_Init(void)
-{
- SRAM_HandleTypeDef hsram;
- FMC_NORSRAM_TimingTypeDef sram_timing;
-
- /*** Configure the SRAM Bank 1 ***/
- /* Configure IPs */
- hsram.Instance = FMC_NORSRAM_DEVICE;
- hsram.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
-
- sram_timing.AddressSetupTime = 5;
- sram_timing.AddressHoldTime = 1;
- sram_timing.DataSetupTime = 9;
- sram_timing.BusTurnAroundDuration = 0;
- sram_timing.CLKDivision = 2;
- sram_timing.DataLatency = 2;
- sram_timing.AccessMode = FMC_ACCESS_MODE_A;
-
- hsram.Init.NSBank = FMC_NORSRAM_BANK1;
- hsram.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
- hsram.Init.MemoryType = FMC_MEMORY_TYPE_SRAM;
- hsram.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16;
- hsram.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE;
- hsram.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
- hsram.Init.WrapMode = FMC_WRAP_MODE_DISABLE;
- hsram.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
- hsram.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
- hsram.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
- hsram.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
- hsram.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
- hsram.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
- hsram.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
- hsram.Init.WriteFifo = FMC_WRITE_FIFO_DISABLE;
- hsram.Init.PageSize = FMC_PAGE_SIZE_NONE;
-
- /* Initialize the SRAM controller */
- FMC_BANK1_MspInit();
- HAL_SRAM_Init(&hsram, &sram_timing, &sram_timing);
-}
-
-
-/**
- * @brief Writes register value.
- * @param Data: Data to be written
- */
-static void FMC_BANK1_WriteData(uint16_t Data)
-{
- /* Write 16-bit Reg */
- FMC_BANK1->RAM = Data;
-}
-
-/**
- * @brief Writes register address.
- * @param Reg: Register to be written
- */
-static void FMC_BANK1_WriteReg(uint8_t Reg)
-{
- /* Write 16-bit Index, then write register */
- FMC_BANK1->REG = Reg;
-}
-
-/**
- * @brief Reads register value.
- * @retval Read value
- */
-static uint16_t FMC_BANK1_ReadData(void)
-{
- return FMC_BANK1->RAM;
-}
-
-/*******************************************************************************
- LINK OPERATIONS
-*******************************************************************************/
-
-#if defined(USE_IOEXPANDER)
-
-/********************************* LINK MFX ***********************************/
-
-/**
- * @brief Initializes MFX low level.
- */
-void MFX_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief DeInitializes MFX low level.
- */
-void MFX_IO_DeInit(void)
-{
-}
-
-/**
- * @brief Configures MFX low level interrupt.
- */
-void MFX_IO_ITConfig(void)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* Enable the GPIO EXTI clock */
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_SYSCFG_CLK_ENABLE();
-
- /* PA0 is the MFX_OUT_IRQ (often used for EXTI_WKUP) */
- gpio_init_structure.Pin = GPIO_PIN_0;
- gpio_init_structure.Pull = GPIO_NOPULL;
- gpio_init_structure.Speed = GPIO_SPEED_LOW;
- gpio_init_structure.Mode = GPIO_MODE_IT_RISING;
- HAL_GPIO_Init(GPIOA, &gpio_init_structure);
-
- /* Enable and set GPIO EXTI Interrupt to the lowest priority */
- HAL_NVIC_SetPriority((IRQn_Type)(EXTI0_IRQn), 0x0F, 0x0F);
- HAL_NVIC_EnableIRQ((IRQn_Type)(EXTI0_IRQn));
-}
-
-/**
- * @brief MFX writes single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @param Value: Data to be written
- */
-void MFX_IO_Write(uint16_t Addr, uint8_t Reg, uint8_t Value)
-{
- I2Cx_Write((uint8_t) Addr, Reg, Value);
-}
-
-/**
- * @brief MFX reads single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @retval Read data
- */
-uint8_t MFX_IO_Read(uint16_t Addr, uint8_t Reg)
-{
- return I2Cx_Read((uint8_t) Addr, Reg);
-}
-
-/**
- * @brief MFX reads multiple data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @param Buffer: Pointer to data buffer
- * @param Length: Length of the data
- * @retval Number of read data
- */
-uint16_t MFX_IO_ReadMultiple(uint16_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length)
-{
- return I2Cx_ReadMultiple((uint8_t) Addr, (uint16_t)Reg, FMPI2C_MEMADD_SIZE_8BIT, Buffer, Length);
-}
-
-/**
- * @brief MFX delay
- * @param Delay: Delay in ms
- */
-void MFX_IO_Delay(uint32_t Delay)
-{
- HAL_Delay(Delay);
-}
-
-/**
- * @brief Used by Lx family but requested for MFX component compatibility.
- */
-void MFX_IO_Wakeup(void)
-{
-}
-
-/**
- * @brief Used by Lx family but requested for MXF component compatibility.
- */
-void MFX_IO_EnableWakeupPin(void)
-{
-}
-
-#endif /* USE_IOEXPANDER */
-
-/********************************* LINK LCD ***********************************/
-
-/**
- * @brief Initializes LCD low level.
- */
-void LCD_IO_Init(void)
-{
- FMC_BANK1_Init();
-}
-
-/**
- * @brief Writes data on LCD data register.
- * @param Data: Data to be written
- */
-void LCD_IO_WriteData(uint16_t Data)
-{
- /* Write 16-bit Reg */
- FMC_BANK1_WriteData(Data);
-}
-
-/**
- * @brief Writes multiple data on LCD data register.
- * @param pData Pointer on the register value
- * @param Size Size of byte to transmit to the register
- * @retval None
- */
-#if defined ( __GNUC__ ) && !defined (__ARMCC_VERSION) && !defined (__CC_ARM) /* GNU Compiler */
-__attribute__((optimize("O1")))
-#endif /* __GNUC__ */
-__NOINLINE void LCD_IO_WriteMultipleData(uint8_t *pData, uint32_t Size)
-{
- uint32_t counter;
- uint16_t *ptr = (uint16_t *) pData;
-
- for (counter = 0; counter < Size; counter+=2)
- {
- /* Write 16-bit Reg */
- FMC_BANK1_WriteData(*ptr);
- ptr++;
- }
-}
-
-/**
- * @brief Writes register on LCD register.
- * @param Reg: Register to be written
- */
-void LCD_IO_WriteReg(uint8_t Reg)
-{
- /* Write 16-bit Index, then Write Reg */
- FMC_BANK1_WriteReg(Reg);
-}
-
-/**
- * @brief Reads data from LCD data register.
- * @param Reg: Register to be read
- * @retval Read data.
- */
-uint16_t LCD_IO_ReadData(uint16_t Reg)
-{
- FMC_BANK1_WriteReg(Reg);
-
- /* Read 16-bit Reg */
- return FMC_BANK1_ReadData();
-}
-
-/********************************* LINK AUDIO *********************************/
-
-/**
- * @brief Initializes Audio low level.
- */
-void AUDIO_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief DeInitializes Audio low level.
- */
-void AUDIO_IO_DeInit(void)
-{
-}
-
-/**
- * @brief Writes a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param Value: Data to be written
- */
-void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value)
-{
- uint16_t tmp = Value;
-
- Value = ((uint16_t)(tmp >> 8) & 0x00FF);
-
- Value |= ((uint16_t)(tmp << 8)& 0xFF00);
-
- I2Cx_WriteMultiple(Addr, Reg, FMPI2C_MEMADD_SIZE_16BIT,(uint8_t*)&Value, 2);
-}
-
-/**
- * @brief Reads a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @retval Data to be read
- */
-uint16_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg)
-{
- uint16_t read_value = 0, tmp = 0;
-
- I2Cx_ReadMultiple(Addr, Reg, FMPI2C_MEMADD_SIZE_16BIT, (uint8_t*)&read_value, 2);
-
- tmp = ((uint16_t)(read_value >> 8) & 0x00FF);
-
- tmp |= ((uint16_t)(read_value << 8)& 0xFF00);
-
- read_value = tmp;
-
- return read_value;
-}
-
-/**
- * @brief AUDIO Codec delay
- * @param Delay: Delay in ms
- */
-void AUDIO_IO_Delay(uint32_t Delay)
-{
- HAL_Delay(Delay);
-}
-
-/********************************* LINK CAMERA ********************************/
-
-/**
- * @brief Initializes Camera low level.
- */
-void CAMERA_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief Camera writes single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @param Value: Data to be written
- */
-void CAMERA_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value)
-{
- uint16_t tmp = Value;
-
- if(Addr == CAMERA_I2C_ADDRESS_2)
- {
- I2Cx_WriteMultiple(Addr, Reg, FMPI2C_MEMADD_SIZE_16BIT,(uint8_t*)&Value, 1);
- }
- else
- {
- /* For S5K5CAG sensor, 16 bits accesses are used */
- Value = ((uint16_t)(tmp >> 8) & 0x00FF);
- Value |= ((uint16_t)(tmp << 8)& 0xFF00);
- I2Cx_WriteMultiple(Addr, Reg, FMPI2C_MEMADD_SIZE_16BIT,(uint8_t*)&Value, 2);
- }
-}
-
-/**
- * @brief Camera reads single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @retval Read data
- */
-uint16_t CAMERA_IO_Read(uint8_t Addr, uint16_t Reg)
-{
- uint16_t read_value = 0, tmp = 0;
-
- if(Addr == CAMERA_I2C_ADDRESS_2)
- {
- I2Cx_ReadMultiple(Addr , Reg, FMPI2C_MEMADD_SIZE_16BIT, (uint8_t*)&read_value, 1);
- }
- else
- {
- /* For S5K5CAG sensor, 16 bits accesses are used */
- I2Cx_ReadMultiple(Addr, Reg, FMPI2C_MEMADD_SIZE_16BIT, (uint8_t*)&read_value, 2);
- tmp = ((uint16_t)(read_value >> 8) & 0x00FF);
- tmp |= ((uint16_t)(read_value << 8)& 0xFF00);
- read_value = tmp;
- }
-
- return read_value;
-}
-
-/**
- * @brief Camera delay
- * @param Delay: Delay in ms
- */
-void CAMERA_Delay(uint32_t Delay)
-{
- HAL_Delay(Delay);
-}
-
-/******************************** LINK I2C EEPROM *****************************/
-
-/**
- * @brief Initializes peripherals used by the I2C EEPROM driver.
- */
-void EEPROM_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief Write data to I2C EEPROM driver in using DMA channel.
- * @param DevAddress: Target device address
- * @param MemAddress: Internal memory address
- * @param pBuffer: Pointer to data buffer
- * @param BufferSize: Amount of data to be sent
- * @retval HAL status
- */
-HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
-{
- return (I2Cx_WriteMultiple(DevAddress, MemAddress, FMPI2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize));
-}
-
-/**
- * @brief Read data from I2C EEPROM driver in using DMA channel.
- * @param DevAddress: Target device address
- * @param MemAddress: Internal memory address
- * @param pBuffer: Pointer to data buffer
- * @param BufferSize: Amount of data to be read
- * @retval HAL status
- */
-HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
-{
- return (I2Cx_ReadMultiple(DevAddress, MemAddress, FMPI2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize));
-}
-
-/**
- * @brief Checks if target device is ready for communication.
- * @note This function is used with Memory devices
- * @param DevAddress: Target device address
- * @param Trials: Number of trials
- * @retval HAL status
- */
-HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials)
-{
- return (I2Cx_IsDeviceReady(DevAddress, Trials));
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval.h
deleted file mode 100644
index 3485a1e912..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval.h
+++ /dev/null
@@ -1,387 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval.h
- * @author MCD Application Team
- * @brief This file contains definitions for STM32446E_EVAL's LEDs,
- * push-buttons and COM ports hardware resources.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* IMPORTANT: in order to compile with RevA following flag shall be defined */
-/* in the preprocessor options: USE_STM32446E_EVAL_REVA !!!!!!!!!! */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32446E_EVAL_H
-#define __STM32446E_EVAL_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* USE_STM32446E_EVAL_REVA must USE USE_IOEXPANDER */
-#if defined(USE_STM32446E_EVAL_REVA)
-#ifndef USE_IOEXPANDER
-#define USE_IOEXPANDER
-#endif /* USE_IOEXPANDER */
-#endif /* USE_STM32446E_EVAL_REVA */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL STM32446E EVAL LOW LEVEL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Exported_Types STM32446E EVAL LOW LEVEL Exported Types
- * @{
- */
-typedef enum
-{
-#if defined(USE_IOEXPANDER)
-LED1 = 0,
-LED_GREEN = LED1,
-LED2 = 1,
-LED_ORANGE = LED2,
-LED3 = 2,
-LED_RED = LED3,
-LED4 = 3,
-LED_BLUE = LED4
-#else
-LED1 = 0,
-LED_GREEN = LED1,
-LED3 = 1,
-LED_RED = LED3,
-#endif /* USE_IOEXPANDER */
-}Led_TypeDef;
-
-
-typedef enum
-{
- BUTTON_WAKEUP = 0,
- BUTTON_TAMPER = 1,
- BUTTON_KEY = 2
-}Button_TypeDef;
-
-typedef enum
-{
- BUTTON_MODE_GPIO = 0,
- BUTTON_MODE_EXTI = 1
-}ButtonMode_TypeDef;
-
-#if defined(USE_IOEXPANDER)
-typedef enum
-{
- JOY_MODE_GPIO = 0,
- JOY_MODE_EXTI = 1
-}JOYMode_TypeDef;
-
-typedef enum
-{
- JOY_NONE = 0,
- JOY_SEL = 1,
- JOY_DOWN = 2,
- JOY_LEFT = 3,
- JOY_RIGHT = 4,
- JOY_UP = 5
-}JOYState_TypeDef;
-#endif /* USE_IOEXPANDER */
-
-typedef enum
-{
- COM1 = 0,
- COM2 = 1
-}COM_TypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Exported_Constants STM32446E EVAL LOW LEVEL Exported Constants
- * @{
- */
-
-/**
- * @brief Define for STM32446E_EVAL board
- */
-#if !defined (USE_STM32446E_EVAL)
- #define USE_STM32446E_EVAL
-#endif
-
-/** @addtogroup STM32446E_EVAL_LOW_LEVEL_LED STM32446E EVAL LOW LEVEL LED
- * @{
- */
-
-#if !defined(USE_STM32446E_EVAL_REVA)
-
-#if defined(USE_IOEXPANDER)
-#define LEDn ((uint8_t)4)
-#define LED2_PIN IO_PIN_21
-#define LED4_PIN IO_PIN_23
-#else
-#define LEDn ((uint8_t)2)
-#endif /* USE_IOEXPANDER */
-
-#define LEDx_GPIO_PORT GPIOB
-#define LEDx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-#define LEDx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
-#define LED1_PIN GPIO_PIN_11
-#define LED3_PIN GPIO_PIN_4
-
-#else
-
-#define LEDn ((uint8_t)4)
-#define LED1_PIN IO_PIN_20
-#define LED3_PIN IO_PIN_22
-#define LED2_PIN IO_PIN_21
-#define LED4_PIN IO_PIN_23
-
-#endif /* !USE_STM32446E_EVAL_REVA */
-
-
-/**
- * @}
- */
-
-/** @addtogroup STM32446E_EVAL_LOW_LEVEL_BUTTON STM32446E EVAL LOW LEVEL BUTTON
- * @{
- */
-/* Joystick pins are connected to IO Expander (accessible through FMPI2C interface) */
-#define BUTTONn ((uint8_t)3)
-
-/**
- * @brief Wakeup push-button
- */
-#define WAKEUP_BUTTON_PIN GPIO_PIN_13
-#define WAKEUP_BUTTON_GPIO_PORT GPIOC
-#define WAKEUP_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define WAKEUP_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-#define WAKEUP_BUTTON_EXTI_IRQn EXTI15_10_IRQn
-
-/**
- * @brief Tamper push-button
- */
-#define TAMPER_BUTTON_PIN GPIO_PIN_13
-#define TAMPER_BUTTON_GPIO_PORT GPIOC
-#define TAMPER_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define TAMPER_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-#define TAMPER_BUTTON_EXTI_IRQn EXTI15_10_IRQn
-
-/**
- * @brief Key push-button
- */
-#define KEY_BUTTON_PIN GPIO_PIN_13
-#define KEY_BUTTON_GPIO_PORT GPIOC
-#define KEY_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-#define KEY_BUTTON_EXTI_IRQn EXTI15_10_IRQn
-
-/**
- * @brief MFX Irq Out Pin
- */
-#define MFX_IRQOUT_PIN GPIO_PIN_0
-#define MFX_IRQOUT_GPIO_PORT GPIOA
-#define MFX_IRQOUT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define MFX_IRQOUT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define MFX_IRQOUT_EXTI_IRQn EXTI0_IRQn
-
-#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do { if((__INDEX__) == 0) {WAKEUP_BUTTON_GPIO_CLK_ENABLE();} else\
- if((__INDEX__) == 1) {TAMPER_BUTTON_GPIO_CLK_ENABLE();} else\
- {KEY_BUTTON_GPIO_CLK_ENABLE(); }} while(0)
-
-#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? WAKEUP_BUTTON_GPIO_CLK_DISABLE() :\
- ((__INDEX__) == 1) ? TAMPER_BUTTON_GPIO_CLK_DISABLE() : KEY_BUTTON_GPIO_CLK_DISABLE())
-/**
- * @}
- */
-
-/** @addtogroup STM32446E_EVAL_LOW_LEVEL_COM STM32446E EVAL LOW LEVEL COM
- * @{
- */
-#define COMn ((uint8_t)1)
-
-/**
- * @brief Definition for COM port1, connected to USART1
- */
-#define EVAL_COM1 USART1
-#define EVAL_COM1_CLK_ENABLE() __HAL_RCC_USART1_CLK_ENABLE()
-#define EVAL_COM1_CLK_DISABLE() __HAL_RCC_USART1_CLK_DISABLE()
-
-#define EVAL_COM1_TX_PIN GPIO_PIN_9
-#define EVAL_COM1_TX_GPIO_PORT GPIOA
-#define EVAL_COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define EVAL_COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define EVAL_COM1_TX_AF GPIO_AF7_USART1
-
-#define EVAL_COM1_RX_PIN GPIO_PIN_10
-#define EVAL_COM1_RX_GPIO_PORT GPIOA
-#define EVAL_COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define EVAL_COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define EVAL_COM1_RX_AF GPIO_AF7_USART1
-
-#define EVAL_COM1_IRQn USART1_IRQn
-
-#define EVAL_COMx_CLK_ENABLE(__INDEX__) do { if((__INDEX__) == COM1) {EVAL_COM1_CLK_ENABLE();} } while(0)
-#define EVAL_COMx_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? EVAL_COM1_CLK_DISABLE() : 0)
-
-#define EVAL_COMx_TX_GPIO_CLK_ENABLE(__INDEX__) do { if((__INDEX__) == COM1) {EVAL_COM1_TX_GPIO_CLK_ENABLE();} } while(0)
-#define EVAL_COMx_TX_GPIO_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? EVAL_COM1_TX_GPIO_CLK_DISABLE() : 0)
-
-#define EVAL_COMx_RX_GPIO_CLK_ENABLE(__INDEX__) do { if((__INDEX__) == COM1) {EVAL_COM1_RX_GPIO_CLK_ENABLE();} } while(0)
-#define EVAL_COMx_RX_GPIO_CLK_DISABLE(__INDEX__) (((__INDEX__) == 0) ? EVAL_COM1_RX_GPIO_CLK_DISABLE() : 0)
-
-/**
- * @brief Joystick Pins definition
- */
-#if defined(USE_IOEXPANDER)
-
-#define JOY_SEL_PIN IO_PIN_5
-#define JOY_UP_PIN IO_PIN_4
-#define JOY_DOWN_PIN IO_PIN_3
-#define JOY_LEFT_PIN IO_PIN_2
-#define JOY_RIGHT_PIN IO_PIN_1
-#define JOY_NONE_PIN JOY_ALL_PINS
-#define JOY_ALL_PINS (IO_PIN_5 | IO_PIN_1 | IO_PIN_2 | IO_PIN_3 | IO_PIN_4)
-
-#endif /* USE_IOEXPANDER */
-
-/**
- * @brief Eval Pins definition connected to MFX
- */
-
-#if defined(USE_IOEXPANDER)
-
-#define XSDN_PIN IO_PIN_10
-#define RSTI_PIN IO_PIN_11
-#define CAM_PLUG_PIN IO_PIN_12
-#define AUDIO_INT_PIN IO_PIN_5
-#define OTG_FS1_OVER_CURRENT_PIN IO_PIN_6
-#define OTG_FS1_POWER_SWITCH_PIN IO_PIN_7
-#define OTG_FS2_OVER_CURRENT_PIN IO_PIN_8
-#define SD_DETECT_PIN IO_PIN_15
-
-#endif /* USE_IOEXPANDER */
-
-
-/* Exported constant IO ------------------------------------------------------*/
-
-/* The MFX_I2C_ADDR input pin selects the MFX I2C device address
- MFX_I2C_ADDR input pin MFX I2C device address
- 0 b: 1000 010x (0x84)
- 1 b: 1000 011x (0x86)
- This input is sampled during the MFX firmware startup. */
-
-#define IO_I2C_ADDRESS ((uint16_t)0x84) /*mfx MFX_I2C_ADDR 0*/
-#define IO_I2C_ADDRESS_2 ((uint16_t)0x86) /*mfx MFX_I2C_ADDR 1*/
-#define TS_I2C_ADDRESS ((uint16_t)0x84) /*mfx MFX_I2C_ADDR 0*/
-#define TS_I2C_ADDRESS_2 ((uint16_t)0x86) /*mfx MFX_I2C_ADDR 1*/
-
-
-#define CAMERA_I2C_ADDRESS ((uint16_t)0x5A)
-#define CAMERA_I2C_ADDRESS_2 ((uint16_t)0x78)
-#define AUDIO_I2C_ADDRESS ((uint16_t)0x34)
-#define EEPROM_I2C_ADDRESS_A01 ((uint16_t)0xA0)
-#define EEPROM_I2C_ADDRESS_A02 ((uint16_t)0xA6)
-
-
-/* User can use this section to tailor I2Cx/I2Cx instance used and associated
- resources */
-/* Definition for I2Cx clock resources */
-#define EVAL_I2Cx FMPI2C1
-#define EVAL_I2Cx_CLK_ENABLE() __HAL_RCC_FMPI2C1_CLK_ENABLE()
-#define EVAL_I2Cx_CLK_DISABLE() __HAL_RCC_FMPI2C1_CLK_DISABLE()
-#define EVAL_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define EVAL_I2Cx_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define EVAL_I2Cx_SCL_SDA_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-
-#define EVAL_I2Cx_FORCE_RESET() __HAL_RCC_FMPI2C1_FORCE_RESET()
-#define EVAL_I2Cx_RELEASE_RESET() __HAL_RCC_FMPI2C1_RELEASE_RESET()
-
-/* Definition for I2Cx Pins */
-#define EVAL_I2Cx_SCL_PIN GPIO_PIN_12
-#define EVAL_I2Cx_SCL_SDA_GPIO_PORT GPIOD
-#define EVAL_I2Cx_SCL_SDA_AF GPIO_AF4_FMPI2C1
-#define EVAL_I2Cx_SDA_PIN GPIO_PIN_13
-
-/* I2C interrupt requests */
-#define EVAL_I2Cx_EV_IRQn FMPI2C1_EV_IRQn
-#define EVAL_I2Cx_ER_IRQn FMPI2C1_ER_IRQn
-
-#ifndef EVAL_I2Cx_TIMING
-#define EVAL_I2Cx_TIMING ((uint32_t)0x00805252)
-#endif /* EVAL_I2Cx_TIMING */
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Exported_Macros STM32446E EVAL LOW LEVEL Exported Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LOW_LEVEL_Exported_Functions STM32446E EVAL LOW LEVEL Exported Functions
- * @{
- */
-uint32_t BSP_GetVersion(void);
-void BSP_LED_Init(Led_TypeDef Led);
-void BSP_LED_DeInit(Led_TypeDef Led);
-void BSP_LED_On(Led_TypeDef Led);
-void BSP_LED_Off(Led_TypeDef Led);
-void BSP_LED_Toggle(Led_TypeDef Led);
-void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode);
-void BSP_PB_DeInit(Button_TypeDef Button);
-uint32_t BSP_PB_GetState(Button_TypeDef Button);
-void BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef *husart);
-void BSP_COM_DeInit(COM_TypeDef COM, UART_HandleTypeDef *huart);
-#if defined(USE_IOEXPANDER)
-uint8_t BSP_JOY_Init(JOYMode_TypeDef JoyMode);
-void BSP_JOY_DeInit(void);
-JOYState_TypeDef BSP_JOY_GetState(void);
-void BSP_MFX_reg_access_for_debug(void);
-#endif /* USE_IOEXPANDER */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_H */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_audio.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_audio.c
deleted file mode 100644
index 39745caf68..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_audio.c
+++ /dev/null
@@ -1,1329 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_audio.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 27-January-2017
- * @brief This file provides the Audio driver for the STM32446E-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/*==============================================================================
- User NOTES
-
-How To use this driver:
------------------------
- + This driver supports STM32F4xx devices on STM32446E-EVAL (MB1045) Evaluation boards.
- + Call the function BSP_AUDIO_OUT_Init(
- OutputDevice: physical output mode (OUTPUT_DEVICE_SPEAKER,
- OUTPUT_DEVICE_HEADPHONE or OUTPUT_DEVICE_BOTH)
- Volume : Initial volume to be set (0 is min (mute), 100 is max (100%)
- AudioFreq : Audio frequency in Hz (8000, 16000, 22500, 32000...)
- this parameter is relative to the audio file/stream type.
- )
- This function configures all the hardware required for the audio application (codec, I2C, SAI,
- GPIOs, DMA and interrupt if needed). This function returns AUDIO_OK if configuration is OK.
- If the returned value is different from AUDIO_OK or the function is stuck then the communication with
- the codec or the MFX has failed (try to un-plug the power or reset device in this case).
- - OUTPUT_DEVICE_SPEAKER : only speaker will be set as output for the audio stream.
- - OUTPUT_DEVICE_HEADPHONE: only headphones will be set as output for the audio stream.
- - OUTPUT_DEVICE_BOTH : both Speaker and Headphone are used as outputs for the audio stream
- at the same time.
- Note. On STM32446E-EVAL SAI_DMA is configured in CIRCULAR mode. Due to this the application
- does NOT need to call BSP_AUDIO_OUT_ChangeBuffer() to assure streaming.
- + Call the function BSP_EVAL_AUDIO_OUT_Play(
- pBuffer: pointer to the audio data file address
- Size : size of the buffer to be sent in Bytes
- )
- to start playing (for the first time) from the audio file/stream.
- + Call the function BSP_AUDIO_OUT_Pause() to pause playing
- + Call the function BSP_AUDIO_OUT_Resume() to resume playing.
- Note. After calling BSP_AUDIO_OUT_Pause() function for pause, only BSP_AUDIO_OUT_Resume() should be called
- for resume (it is not allowed to call BSP_AUDIO_OUT_Play() in this case).
- Note. This function should be called only when the audio file is played or paused (not stopped).
- + For each mode, you may need to implement the relative callback functions into your code.
- The Callback functions are named AUDIO_OUT_XXX_CallBack() and only their prototypes are declared in
- the stm32446e_eval_audio.h file. (refer to the example for more details on the callbacks implementations)
- + To Stop playing, to modify the volume level, the frequency, the audio frame slot,
- the device output mode the mute or the stop, use the functions: BSP_AUDIO_OUT_SetVolume(),
- AUDIO_OUT_SetFrequency(), BSP_AUDIO_OUT_SetAudioFrameSlot(), BSP_AUDIO_OUT_SetOutputMode(),
- BSP_AUDIO_OUT_SetMute() and BSP_AUDIO_OUT_Stop().
- + The driver API and the callback functions are at the end of the stm32446e_eval_audio.h file.
-
-
-Driver architecture:
---------------------
- + This driver provides the High Audio Layer: consists of the function API exported in the stm32446e_eval_audio.h file
- (BSP_AUDIO_OUT_Init(), BSP_AUDIO_OUT_Play() ...)
- + This driver provide also the Media Access Layer (MAL): which consists of functions allowing to access the media containing/
- providing the audio file/stream. These functions are also included as local functions into
- the stm32446e_eval_audio_codec.c file (I2Sx_Init(), I2Sx_DeInit(), SAIx_Init() and SAIx_DeInit())
-
-Known Limitations:
-------------------
- 1- If the TDM Format used to play in parallel 2 audio Stream (the first Stream is configured in codec SLOT0 and second
- Stream in SLOT1) the Pause/Resume, volume and mute feature will control the both streams.
- 2- Parsing of audio file is not implemented (in order to determine audio file properties: Mono/Stereo, Data size,
- File size, Audio Frequency, Audio Data header size ...). The configuration is fixed for the given audio file.
- 3- Supports only Stereo audio streaming.
- 4- Supports only 16-bits audio data size.
-==============================================================================*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_audio.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO STM32446E EVAL AUDIO
- * @brief This file includes the low layer driver for wm8994 Audio Codec
- * available on STM32446E-EVAL evaluation board(MB1045).
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_Private_Types STM32446E EVAL AUDIO Private Types
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_Private_Defines STM32446E EVAL AUDIO Private Defines
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_Private_Macros STM32446E EVAL AUDIO Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_Private_Variables STM32446E EVAL AUDIO Private Variables
- * @{
- */
-
-/*
-Note:
- these global variables are not compliant to naming rules (upper case without "_" ),
- but we keep this naming for compatibility, in fact these variables (not static)
- could have been used by the application, example the stm32f4xx_it.c:
- void DMA2_Stream6_IRQHandler(void)
- { HAL_DMA_IRQHandler(haudio_out_sai.hdmatx); }
-*/
-AUDIO_DrvTypeDef *audio_drv;
-SAI_HandleTypeDef haudio_out_sai;
-I2S_HandleTypeDef haudio_in_i2s;
-TIM_HandleTypeDef haudio_tim;
-
-/* PDM filters params */
-PDM_Filter_Handler_t PDM_FilterHandler[2];
-PDM_Filter_Config_t PDM_FilterConfig[2];
-
-uint8_t Channel_Demux[128] = {
- 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
- 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
- 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
- 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
- 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
- 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
- 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
- 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
- 0x08, 0x09, 0x08, 0x09, 0x0a, 0x0b, 0x0a, 0x0b,
- 0x08, 0x09, 0x08, 0x09, 0x0a, 0x0b, 0x0a, 0x0b,
- 0x0c, 0x0d, 0x0c, 0x0d, 0x0e, 0x0f, 0x0e, 0x0f,
- 0x0c, 0x0d, 0x0c, 0x0d, 0x0e, 0x0f, 0x0e, 0x0f,
- 0x08, 0x09, 0x08, 0x09, 0x0a, 0x0b, 0x0a, 0x0b,
- 0x08, 0x09, 0x08, 0x09, 0x0a, 0x0b, 0x0a, 0x0b,
- 0x0c, 0x0d, 0x0c, 0x0d, 0x0e, 0x0f, 0x0e, 0x0f,
- 0x0c, 0x0d, 0x0c, 0x0d, 0x0e, 0x0f, 0x0e, 0x0f
-};
-
-uint16_t __IO AudioInVolume = DEFAULT_AUDIO_IN_VOLUME;
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_Private_Function_Prototypes STM32446E EVAL AUDIO Private Function Prototypes
- * @{
- */
-static void SAIx_Init(uint32_t AudioFreq);
-static void SAIx_DeInit(void);
-static void I2Sx_Init(uint32_t AudioFreq);
-static void I2Sx_DeInit(void);
-static void TIMx_IC_MspInit(TIM_HandleTypeDef *htim);
-static void TIMx_IC_MspDeInit(TIM_HandleTypeDef *htim);
-static void TIMx_Init(void);
-static void TIMx_DeInit(void);
-static void PDMDecoder_Init(uint32_t AudioFreq, uint32_t ChnlNbrIn, uint32_t ChnlNbrOut);
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_out_Private_Functions STM32446E EVAL AUDIO OUT Private Functions
- * @{
- */
-
-/**
- * @brief Configures the audio peripherals.
- * @param OutputDevice: OUTPUT_DEVICE_SPEAKER, OUTPUT_DEVICE_HEADPHONE,
- * or OUTPUT_DEVICE_BOTH.
- * @param Volume: Initial volume level (from 0 (Mute) to 100 (Max))
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @note The I2S PLL input clock must be done in the user application.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
-{
- uint8_t ret = AUDIO_ERROR;
- uint32_t deviceid = 0x00;
-
- SAIx_DeInit();
-
- /* PLL clock is set depending by the AudioFreq (44.1khz vs 48khz groups) */
- BSP_AUDIO_OUT_ClockConfig(&haudio_out_sai, AudioFreq, NULL);
-
- /* SAI data transfer preparation:
- Prepare the Media to be used for the audio transfer from memory to SAI peripheral */
- haudio_out_sai.Instance = AUDIO_SAIx;
- if(HAL_SAI_GetState(&haudio_out_sai) == HAL_SAI_STATE_RESET)
- {
- /* Init the SAI MSP: this __weak function can be redefined by the application*/
- BSP_AUDIO_OUT_MspInit(&haudio_out_sai, NULL);
- }
- SAIx_Init(AudioFreq);
-
- /* wm8994 codec initialization */
- deviceid = wm8994_drv.ReadID(AUDIO_I2C_ADDRESS);
-
- if((deviceid) == WM8994_ID)
- {
- /* Initialize the audio driver structure */
- audio_drv = &wm8994_drv;
- ret = AUDIO_OK;
- }
- else
- {
- ret = AUDIO_ERROR;
- }
-
- if(ret == AUDIO_OK)
- {
- /* Resets the audio codec. */
- audio_drv->Reset(AUDIO_I2C_ADDRESS);
- /* Initialize the codec internal registers */
- audio_drv->Init(AUDIO_I2C_ADDRESS, OutputDevice, Volume, AudioFreq);
- }
-
- return ret;
-}
-
-/**
- * @brief Starts playing audio stream from a data buffer for a determined size.
- * @param pBuffer: Pointer to the buffer
- * @param Size: Number of audio data BYTES.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size)
-{
- /* Call the audio Codec Play function */
- if(audio_drv->Play(AUDIO_I2C_ADDRESS, pBuffer, Size) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Update the Media layer and enable it for play */
- HAL_SAI_Transmit_DMA(&haudio_out_sai, (uint8_t*) pBuffer, DMA_MAX(Size / AUDIODATA_SIZE));
-
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Sends n-Bytes on the SAI interface.
- * @param pData: pointer on data address
- * @param Size: number of data to be written
- */
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
-{
- HAL_SAI_Transmit_DMA(&haudio_out_sai, (uint8_t*) pData, Size);
-}
-
-/**
- * @brief This function Pauses the audio file stream. In case
- * of using DMA, the DMA Pause feature is used.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Pause(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(audio_drv->Pause(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer pause function */
- HAL_SAI_DMAPause(&haudio_out_sai);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief This function Resumes the audio file stream.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Resume(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(audio_drv->Resume(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer pause/resume function */
- HAL_SAI_DMAResume(&haudio_out_sai);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Stops audio playing and Power down the Audio Codec.
- * @param Option: could be one of the following parameters
- * - CODEC_PDWN_SW: for software power off (by writing registers).
- * Then no need to reconfigure the Codec after power on.
- * - CODEC_PDWN_HW: completely shut down the codec (physically).
- * Then need to reconfigure the Codec after power on.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
-{
- /* Call the Media layer stop function */
- HAL_SAI_DMAStop(&haudio_out_sai);
-
- /* Call Audio Codec Stop function */
- if(audio_drv->Stop(AUDIO_I2C_ADDRESS, Option) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- if(Option == CODEC_PDWN_HW)
- {
- /* Wait at least 100us */
- HAL_Delay(1);
- }
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Controls the current audio volume level.
- * @param Volume: Volume level to be set in percentage from 0% to 100% (0 for
- * Mute and 100 for Max volume level).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
-{
- /* Call the codec volume control function with converted volume value */
- if(audio_drv->SetVolume(AUDIO_I2C_ADDRESS, Volume) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Enables or disables the MUTE mode by software
- * @param Cmd: Could be AUDIO_MUTE_ON to mute sound or AUDIO_MUTE_OFF to
- * unmute the codec and restore previous volume level.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
-{
- /* Call the Codec Mute function */
- if(audio_drv->SetMute(AUDIO_I2C_ADDRESS, Cmd) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Switch dynamically (while audio file is played) the output target
- * (speaker or headphone).
- * @param Output: The audio output target: OUTPUT_DEVICE_SPEAKER,
- * OUTPUT_DEVICE_HEADPHONE or OUTPUT_DEVICE_BOTH
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output)
-{
- /* Call the Codec output device function */
- if(audio_drv->SetOutputMode(AUDIO_I2C_ADDRESS, Output) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Updates the audio frequency.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @note This API should be called after the BSP_AUDIO_OUT_Init() to adjust the
- * audio frequency.
- */
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
-{
- /* PLL clock is set depending by the AudioFreq (44.1khz vs 48khz groups) */
- BSP_AUDIO_OUT_ClockConfig(&haudio_out_sai, AudioFreq, NULL);
-
- /* Disable SAI peripheral to allow access to SAI internal registers */
- __HAL_SAI_DISABLE(&haudio_out_sai);
-
- /* Update the SAI audio frequency configuration */
- haudio_out_sai.Init.AudioFrequency = AudioFreq;
- HAL_SAI_Init(&haudio_out_sai);
-
- /* Enable SAI peripheral to generate MCLK */
- __HAL_SAI_ENABLE(&haudio_out_sai);
-}
-
-/**
- * @brief Updates the Audio frame slot configuration.
- * @param AudioFrameSlot: specifies the audio Frame slot
- * This parameter can be any value of @ref CODEC_AudioFrame_SLOT_TDMMode
- * @note This API should be called after the BSP_AUDIO_OUT_Init() to adjust the
- * audio frame slot.
- */
-void BSP_AUDIO_OUT_SetAudioFrameSlot(uint32_t AudioFrameSlot)
-{
- /* Disable SAI peripheral to allow access to SAI internal registers */
- __HAL_SAI_DISABLE(&haudio_out_sai);
-
- /* Update the SAI audio frame slot configuration */
- haudio_out_sai.SlotInit.SlotActive = AudioFrameSlot;
- HAL_SAI_Init(&haudio_out_sai);
-
- /* Enable SAI peripheral to generate MCLK */
- __HAL_SAI_ENABLE(&haudio_out_sai);
-}
-
-/**
- * @brief Deinit the audio peripherals.
- */
-void BSP_AUDIO_OUT_DeInit(void)
-{
- SAIx_DeInit();
- /* DeInit the SAI MSP : this __weak function can be rewritten by the applic */
- BSP_AUDIO_OUT_MspDeInit(&haudio_out_sai, NULL);
-}
-
-/**
- * @brief Tx Transfer completed callbacks.
- * @param hsai: SAI handle
- */
-void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai)
-{
- /* Manage the remaining file size and new address offset: This function
- should be coded by user (its prototype is already declared in stm32446e_eval_audio.h) */
- BSP_AUDIO_OUT_TransferComplete_CallBack();
-}
-
-/**
- * @brief Tx Half Transfer completed callbacks.
- * @param hsai: SAI handle
- */
-void HAL_SAI_TxHalfCpltCallback(SAI_HandleTypeDef *hsai)
-{
- /* Manage the remaining file size and new address offset: This function
- should be coded by user (its prototype is already declared in stm32446e_eval_audio.h) */
- BSP_AUDIO_OUT_HalfTransfer_CallBack();
-}
-
-/**
- * @brief SAI error callbacks.
- * @param hsai: SAI handle
- */
-void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai)
-{
- BSP_AUDIO_OUT_Error_CallBack();
-}
-
-/**
- * @brief Manages the DMA full Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA FIFO error event.
- */
-__weak void BSP_AUDIO_OUT_Error_CallBack(void)
-{
-}
-
-/**
- * @brief Initializes BSP_AUDIO_OUT MSP.
- * @param hsai: SAI handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params)
-{
- static DMA_HandleTypeDef hdma_sai_tx;
- GPIO_InitTypeDef gpio_init_structure;
-
- /* Enable SAI clock */
- AUDIO_SAIx_CLK_ENABLE();
-
- /* Enable GPIO clock */
- AUDIO_SAIx_MCLK_SCK_ENABLE();
- AUDIO_SAIx_SD_FS_ENABLE();
-
- /* CODEC_SAI pins configuration: FS, SCK, MCK and SD pins ------------------*/
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_NOPULL;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
-
- gpio_init_structure.Alternate = AUDIO_SAIx_MCLK_SD_FS_AF;
- gpio_init_structure.Pin = AUDIO_SAIx_FS_PIN | AUDIO_SAIx_SD_PIN;
- HAL_GPIO_Init(AUDIO_SAIx_SD_FS_GPIO_PORT, &gpio_init_structure);
-
- gpio_init_structure.Alternate = AUDIO_SAIx_MCLK_SD_FS_AF;
- gpio_init_structure.Pin = AUDIO_SAIx_MCK_PIN;
- HAL_GPIO_Init(AUDIO_SAIx_MCLK_SCK_GPIO_PORT, &gpio_init_structure);
-
- gpio_init_structure.Alternate = AUDIO_SAIx_SCK_AF;
- gpio_init_structure.Pin = AUDIO_SAIx_SCK_PIN ;
- HAL_GPIO_Init(AUDIO_SAIx_MCLK_SCK_GPIO_PORT, &gpio_init_structure);
-
- /* Enable the DMA clock */
- AUDIO_SAIx_DMAx_CLK_ENABLE();
-
- if(hsai->Instance == AUDIO_SAIx)
- {
- /* Configure the hdma_sai_tx handle parameters */
- hdma_sai_tx.Init.Channel = AUDIO_SAIx_DMAx_CHANNEL;
- hdma_sai_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_sai_tx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_sai_tx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_sai_tx.Init.PeriphDataAlignment = AUDIO_SAIx_DMAx_PERIPH_DATA_SIZE;
- hdma_sai_tx.Init.MemDataAlignment = AUDIO_SAIx_DMAx_MEM_DATA_SIZE;
- hdma_sai_tx.Init.Mode = DMA_CIRCULAR;
- hdma_sai_tx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_sai_tx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- hdma_sai_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_sai_tx.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_sai_tx.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- hdma_sai_tx.Instance = AUDIO_SAIx_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsai, hdmatx, hdma_sai_tx);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_sai_tx);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&hdma_sai_tx);
- }
-
- /* SAI DMA IRQ Channel configuration */
- HAL_NVIC_SetPriority(AUDIO_SAIx_DMAx_IRQ, AUDIO_OUT_IRQ_PREPRIO, 0);
- HAL_NVIC_EnableIRQ(AUDIO_SAIx_DMAx_IRQ);
-}
-
-/**
- * @brief Deinitializes SAI MSP.
- * @param hsai: SAI handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_OUT_MspDeInit(SAI_HandleTypeDef *hsai, void *Params)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* SAI DMA IRQ Channel deactivation */
- HAL_NVIC_DisableIRQ(AUDIO_SAIx_DMAx_IRQ);
-
- if(hsai->Instance == AUDIO_SAIx)
- {
- /* Deinitialize the DMA stream */
- HAL_DMA_DeInit(hsai->hdmatx);
- }
-
- /* Disable SAI peripheral */
- __HAL_SAI_DISABLE(hsai);
-
- /* Deactives CODEC_SAI pins FS, SCK, MCK and SD by putting them in input mode */
- gpio_init_structure.Pin = AUDIO_SAIx_FS_PIN | AUDIO_SAIx_SD_PIN;
- HAL_GPIO_DeInit(AUDIO_SAIx_SD_FS_GPIO_PORT, gpio_init_structure.Pin);
-
- gpio_init_structure.Pin = AUDIO_SAIx_MCK_PIN;
- HAL_GPIO_DeInit(AUDIO_SAIx_MCLK_SCK_GPIO_PORT, gpio_init_structure.Pin);
-
- gpio_init_structure.Pin = AUDIO_SAIx_SCK_PIN ;
- HAL_GPIO_DeInit(AUDIO_SAIx_MCLK_SCK_GPIO_PORT, gpio_init_structure.Pin);
-
- /* Disable SAI clock */
- AUDIO_SAIx_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the application
- by surcharging this __weak function */
-}
-
-/**
- * @brief Clock Config.
- * @param hsai: might be required to set audio peripheral predivider if any.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @param Params: pointer on additional configuration parameters, can be NULL.
- * @note This API is called by BSP_AUDIO_OUT_Init() and BSP_AUDIO_OUT_SetFrequency()
- * Being __weak it can be overwritten by the application
- */
-__weak void BSP_AUDIO_OUT_ClockConfig(SAI_HandleTypeDef *hsai, uint32_t AudioFreq, void *Params)
-{
- RCC_PeriphCLKInitTypeDef rcc_ex_clk_init_struct;
-
- HAL_RCCEx_GetPeriphCLKConfig(&rcc_ex_clk_init_struct);
-
- /* Set the PLL configuration according to the audio frequency */
- if((AudioFreq == AUDIO_FREQUENCY_11K) || (AudioFreq == AUDIO_FREQUENCY_22K) || (AudioFreq == AUDIO_FREQUENCY_44K))
- {
- /* Configure PLLSAI prescalers */
- /* PLLSAI_VCO: VCO_429M
- SAI_CLK(first level) = PLLSAI_VCO/PLLSAIQ = 429/2 = 214.5 Mhz
- SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ = 214.5/19 = 11.289 Mhz */
- rcc_ex_clk_init_struct.PeriphClockSelection = RCC_PERIPHCLK_SAI2;
- rcc_ex_clk_init_struct.Sai2ClockSelection = RCC_SAI2CLKSOURCE_PLLSAI;
- rcc_ex_clk_init_struct.PLLSAI.PLLSAIM = 8;
- rcc_ex_clk_init_struct.PLLSAI.PLLSAIN = 429;
- rcc_ex_clk_init_struct.PLLSAI.PLLSAIQ = 2;
- rcc_ex_clk_init_struct.PLLSAIDivQ = 19;
-
- HAL_RCCEx_PeriphCLKConfig(&rcc_ex_clk_init_struct);
- }
- else /* AUDIO_FREQUENCY_8K, AUDIO_FREQUENCY_16K, AUDIO_FREQUENCY_48K), AUDIO_FREQUENCY_96K */
- {
- /* SAI clock config
- PLLSAI_VCO: VCO_344M
- SAI_CLK(first level) = PLLSAI_VCO/PLLSAIQ = 344/7 = 49.142 Mhz
- SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ = 49.142/1 = 49.142 Mhz */
- rcc_ex_clk_init_struct.PeriphClockSelection = RCC_PERIPHCLK_SAI2;
- rcc_ex_clk_init_struct.Sai2ClockSelection = RCC_SAI2CLKSOURCE_PLLSAI;
- rcc_ex_clk_init_struct.PLLSAI.PLLSAIM = 8;
- rcc_ex_clk_init_struct.PLLSAI.PLLSAIN = 344;
- rcc_ex_clk_init_struct.PLLSAI.PLLSAIQ = 7;
- rcc_ex_clk_init_struct.PLLSAIDivQ = 1;
-
- HAL_RCCEx_PeriphCLKConfig(&rcc_ex_clk_init_struct);
- }
-}
-
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Initializes the Audio Codec audio interface (SAI).
- * @param AudioFreq: Audio frequency to be configured for the SAI peripheral.
- * @note The default SlotActive configuration is set to CODEC_AUDIOFRAME_SLOT_0123
- * and user can update this configuration using
- */
-static void SAIx_Init(uint32_t AudioFreq)
-{
- /* Initialize the hAudioOutSai Instance parameter */
- haudio_out_sai.Instance = AUDIO_SAIx;
-
- /* Disable SAI peripheral to allow access to SAI internal registers */
- __HAL_SAI_DISABLE(&haudio_out_sai);
-
- /* Configure SAI_Block_x
- LSBFirst: Disabled
- DataSize: 16 */
- haudio_out_sai.Init.AudioFrequency = AudioFreq;
- haudio_out_sai.Init.ClockSource = SAI_CLKSOURCE_PLLSAI;
- haudio_out_sai.Init.AudioMode = SAI_MODEMASTER_TX;
- haudio_out_sai.Init.NoDivider = SAI_MASTERDIVIDER_ENABLE;
- haudio_out_sai.Init.Protocol = SAI_FREE_PROTOCOL;
- haudio_out_sai.Init.DataSize = SAI_DATASIZE_16;
- haudio_out_sai.Init.FirstBit = SAI_FIRSTBIT_MSB;
- haudio_out_sai.Init.ClockStrobing = SAI_CLOCKSTROBING_RISINGEDGE;
- haudio_out_sai.Init.Synchro = SAI_ASYNCHRONOUS;
- haudio_out_sai.Init.OutputDrive = SAI_OUTPUTDRIVE_ENABLE;
- haudio_out_sai.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_1QF;
-
- /* Configure SAI_Block_x Frame
- Frame Length: 64
- Frame active Length: 32
- FS Definition: Start frame + Channel Side identification
- FS Polarity: FS active Low
- FS Offset: FS asserted one bit before the first bit of slot 0 */
- haudio_out_sai.FrameInit.FrameLength = 64;
- haudio_out_sai.FrameInit.ActiveFrameLength = 32;
- haudio_out_sai.FrameInit.FSDefinition = SAI_FS_CHANNEL_IDENTIFICATION;
- haudio_out_sai.FrameInit.FSPolarity = SAI_FS_ACTIVE_LOW;
- haudio_out_sai.FrameInit.FSOffset = SAI_FS_BEFOREFIRSTBIT;
-
- /* Configure SAI Block_x Slot
- Slot First Bit Offset: 0
- Slot Size : 16
- Slot Number: 4
- Slot Active: All slot actives */
- haudio_out_sai.SlotInit.FirstBitOffset = 0;
- haudio_out_sai.SlotInit.SlotSize = SAI_SLOTSIZE_DATASIZE;
- haudio_out_sai.SlotInit.SlotNumber = 4;
- haudio_out_sai.SlotInit.SlotActive = CODEC_AUDIOFRAME_SLOT_0123;
-
- HAL_SAI_Init(&haudio_out_sai);
-
- /* Enable SAI peripheral to generate MCLK */
- __HAL_SAI_ENABLE(&haudio_out_sai);
-}
-
-/**
- * @brief Deinitializes the Audio Codec audio interface (SAI).
- */
-static void SAIx_DeInit(void)
-{
- /* Initialize the hAudioOutSai Instance parameter */
- haudio_out_sai.Instance = AUDIO_SAIx;
-
- /* Disable SAI peripheral */
- __HAL_SAI_DISABLE(&haudio_out_sai);
-
- HAL_SAI_DeInit(&haudio_out_sai);
-}
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_in_Private_Functions STM32446E EVAL AUDIO IN Private Functions
- * @{
- */
-
-/**
- * @brief Initializes wave recording.
- * @note This function assumes that the I2S input clock (through PLL_R in
- * Devices RevA/Z and through dedicated PLLI2S_R in Devices RevB/Y)
- * is already configured and ready to be used.
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- * @param BitRes: Audio frequency to be configured for the I2S peripheral.
- * @param ChnlNbr: Audio frequency to be configured for the I2S peripheral.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
-{
- I2Sx_DeInit();
-
- /* Initialize I2S clock */
- BSP_AUDIO_IN_ClockConfig(&haudio_in_i2s, NULL);
-
- /* Configure the PDM library */
- PDMDecoder_Init(AudioFreq, ChnlNbr, ChnlNbr);
-
- /* Configure the I2S peripheral */
- haudio_in_i2s.Instance = AUDIO_I2Sx;
- if(HAL_I2S_GetState(&haudio_in_i2s) == HAL_I2S_STATE_RESET)
- {
- /* Initialize the I2S Msp: this __weak function can be rewritten by the application */
- BSP_AUDIO_IN_MspInit(&haudio_in_i2s, NULL);
- }
- I2Sx_Init(AudioFreq);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Starts audio recording.
- * @param pbuf: Main buffer pointer for the recorded data storing
- * @param size: Current size of the recorded buffer
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Record(uint16_t* pbuf, uint32_t size)
-{
- uint32_t ret = AUDIO_ERROR;
-
- /* Start the process receive DMA */
- HAL_I2S_Receive_DMA(&haudio_in_i2s, pbuf, size);
-
- /* Return AUDIO_OK when all operations are correctly done */
- ret = AUDIO_OK;
-
- return ret;
-}
-
-/**
- * @brief Stops audio recording.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Stop(void)
-{
- uint32_t ret = AUDIO_ERROR;
-
- /* Call the Media layer pause function */
- HAL_I2S_DMAPause(&haudio_in_i2s);
-
- /* TIMx Peripheral clock disable */
- AUDIO_TIMx_CLK_DISABLE();
-
- /* Return AUDIO_OK when all operations are correctly done */
- ret = AUDIO_OK;
-
- return ret;
-}
-
-/**
- * @brief Pauses the audio file stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Pause(void)
-{
- /* Call the Media layer pause function */
- HAL_I2S_DMAPause(&haudio_in_i2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Resumes the audio file stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Resume(void)
-{
- /* Call the Media layer pause/resume function */
- HAL_I2S_DMAResume(&haudio_in_i2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Controls the audio in volume level.
- * @param Volume: Volume level to be set in percentage from 0% to 100% (0 for
- * Mute and 100 for Max volume level).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume)
-{
- /* Set the Global variable AudioInVolume */
- AudioInVolume = Volume;
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Deinit the audio IN peripherals.
- */
-void BSP_AUDIO_IN_DeInit(void)
-{
- I2Sx_DeInit();
- /* DeInit the I2S MSP : this __weak function can be rewritten by the applic */
- BSP_AUDIO_IN_MspDeInit(&haudio_in_i2s, NULL);
- TIMx_DeInit();
-}
-
-/**
- * @brief Converts audio format from PDM to PCM.
- * @param PDMBuf: Pointer to data PDM buffer
- * @param PCMBuf: Pointer to data PCM buffer
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t* PDMBuf, uint16_t* PCMBuf)
-{
- uint8_t app_pdm[INTERNAL_BUFF_SIZE*2];
- uint8_t byte1 = 0, byte2 = 0;
- uint32_t index = 0;
-
- /* PDM Demux */
- for(index = 0; index> 8)& 0xFF;
- byte1 = (PDMBuf[index] & 0xFF);
- app_pdm[(index*2)+1] = Channel_Demux[byte1 & CHANNEL_DEMUX_MASK] | Channel_Demux[byte2 & CHANNEL_DEMUX_MASK] << 4;
- app_pdm[(index*2)] = Channel_Demux[(byte1 >> 1) & CHANNEL_DEMUX_MASK] | Channel_Demux[(byte2 >> 1) & CHANNEL_DEMUX_MASK] << 4;
- }
-
- for(index = 0; index < DEFAULT_AUDIO_IN_CHANNEL_NBR; index++)
- {
- /* PDM to PCM filter */
- PDM_Filter((uint8_t*)&app_pdm[index], (uint16_t*)&(PCMBuf[index]), &PDM_FilterHandler[index]);
- }
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
- /**
- * @brief Rx Transfer completed callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Call the record update function to get the next buffer to fill and its size (size is ignored) */
- BSP_AUDIO_IN_TransferComplete_CallBack();
-}
-
-/**
- * @brief Rx Half Transfer completed callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Manage the remaining file size and new address offset: This function
- should be coded by user (its prototype is already declared in stm32446e_eval_audio.h) */
- BSP_AUDIO_IN_HalfTransfer_CallBack();
-}
-
-/**
- * @brief I2S error callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Manage the error generated on DMA FIFO: This function
- should be coded by user (its prototype is already declared in stm32446e_eval_audio.h) */
- BSP_AUDIO_IN_Error_Callback();
-}
-
-/**
- * @brief User callback when record buffer is filled.
- */
-__weak void BSP_AUDIO_IN_TransferComplete_CallBack(void)
-{
- /* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled
- to prepare the next buffer pointer and its size. */
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- */
-__weak void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
-{
- /* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled
- to prepare the next buffer pointer and its size. */
-}
-
-/**
- * @brief Audio IN Error callback function.
- */
-__weak void BSP_AUDIO_IN_Error_Callback(void)
-{
- /* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-}
-
-/**
- * @brief Initializes BSP_AUDIO_IN MSP.
- * @param hi2s: I2S handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- static DMA_HandleTypeDef hdma_i2s_rx;
- GPIO_InitTypeDef gpio_init_structure;
-
- /* Configure the Timer which clocks the MEMS */
- /* Moved inside MSP to allow applic to redefine the TIMx_MspInit */
- TIMx_Init();
-
- /* Enable I2S clock */
- AUDIO_I2Sx_CLK_ENABLE();
-
- /* Enable SCK and SD GPIO clock */
- AUDIO_I2Sx_SD_GPIO_CLK_ENABLE();
- AUDIO_I2Sx_SCK_GPIO_CLK_ENABLE();
- /* CODEC_I2S pins configuration: SCK and SD pins */
- gpio_init_structure.Pin = AUDIO_I2Sx_SCK_PIN;
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_NOPULL;
- gpio_init_structure.Speed = GPIO_SPEED_FAST;
- gpio_init_structure.Alternate = AUDIO_I2Sx_SCK_AF;
- HAL_GPIO_Init(AUDIO_I2Sx_SCK_GPIO_PORT, &gpio_init_structure);
-
- gpio_init_structure.Pin = AUDIO_I2Sx_SD_PIN;
- gpio_init_structure.Alternate = AUDIO_I2Sx_SD_AF;
- HAL_GPIO_Init(AUDIO_I2Sx_SD_GPIO_PORT, &gpio_init_structure);
-
- /* Enable the DMA clock */
- AUDIO_I2Sx_DMAx_CLK_ENABLE();
-
- if(hi2s->Instance == AUDIO_I2Sx)
- {
- /* Configure the hdma_i2s_rx handle parameters */
- hdma_i2s_rx.Init.Channel = AUDIO_I2Sx_DMAx_CHANNEL;
- hdma_i2s_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_i2s_rx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_i2s_rx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_i2s_rx.Init.PeriphDataAlignment = AUDIO_I2Sx_DMAx_PERIPH_DATA_SIZE;
- hdma_i2s_rx.Init.MemDataAlignment = AUDIO_I2Sx_DMAx_MEM_DATA_SIZE;
- hdma_i2s_rx.Init.Mode = DMA_CIRCULAR;
- hdma_i2s_rx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_i2s_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma_i2s_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_i2s_rx.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_i2s_rx.Init.PeriphBurst = DMA_MBURST_SINGLE;
-
- hdma_i2s_rx.Instance = AUDIO_I2Sx_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hi2s, hdmarx, hdma_i2s_rx);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_i2s_rx);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&hdma_i2s_rx);
- }
-
- /* I2S DMA IRQ Channel configuration */
- HAL_NVIC_SetPriority(AUDIO_I2Sx_DMAx_IRQ, AUDIO_IN_IRQ_PREPRIO, 0);
- HAL_NVIC_EnableIRQ(AUDIO_I2Sx_DMAx_IRQ);
-}
-
-/**
- * @brief DeInitializes BSP_AUDIO_IN MSP.
- * @param hi2s: I2S handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- static DMA_HandleTypeDef hdma_i2s_rx;
-
- /* I2S DMA IRQ Channel deactivation */
- HAL_NVIC_DisableIRQ(AUDIO_I2Sx_DMAx_IRQ);
-
- if(hi2s->Instance == AUDIO_I2Sx)
- {
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_i2s_rx);
- }
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(hi2s);
-
- /* Disable pins: SCK and SD pins */
- gpio_init_structure.Pin = AUDIO_I2Sx_SCK_PIN;
- HAL_GPIO_DeInit(AUDIO_I2Sx_SCK_GPIO_PORT, gpio_init_structure.Pin);
- gpio_init_structure.Pin = AUDIO_I2Sx_SD_PIN;
- HAL_GPIO_DeInit(AUDIO_I2Sx_SD_GPIO_PORT, gpio_init_structure.Pin);
-
- /* Disable I2S clock */
- AUDIO_I2Sx_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the applic
- by surcgarging this __weak function */
-}
-
-/**
- * @brief Clock Config.
- * @param hi2s: might be required to set audio peripheral predivider if any.
- * @param Params: pointer on additional configuration parameters, can be NULL.
- * @note This API is called by BSP_AUDIO_IN_Init()
- * Being __weak it can be overwritten by the application
- */
-__weak void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, void *Params)
-{
- RCC_PeriphCLKInitTypeDef rcc_ex_clk_init_struct;
-
- HAL_RCCEx_GetPeriphCLKConfig(&rcc_ex_clk_init_struct);
-
- /* Configure PLLI2S prescalers */
- /* I2S_CLK = PLLI2S_VCO/PLLI2SR = 384/2 = 192 Mhz */
- rcc_ex_clk_init_struct.PeriphClockSelection = RCC_PERIPHCLK_I2S_APB1; /*SPI3 & TIM4 on APB1*/
- rcc_ex_clk_init_struct.PLLI2S.PLLI2SN = 384;
- rcc_ex_clk_init_struct.PLLI2S.PLLI2SR = 2;
-
- HAL_RCCEx_PeriphCLKConfig(&rcc_ex_clk_init_struct);
-}
-
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Initializes the PDM library.
- * @param AudioFreq: Audio sampling frequency
- * @param ChnlNbrIn: Number of input audio channels in the PDM buffer
- * @param ChnlNbrOut: Number of desired output audio channels in the resulting PCM buffer
- * Number of audio channels (1: mono; 2: stereo)
- */
-static void PDMDecoder_Init(uint32_t AudioFreq, uint32_t ChnlNbrIn, uint32_t ChnlNbrOut)
-{
- uint32_t index = 0;
-
- /* Enable CRC peripheral to unlock the PDM library */
- __HAL_RCC_CRC_CLK_ENABLE();
-
- for(index = 0; index < ChnlNbrIn; index++)
- {
- /* Init PDM filters */
- PDM_FilterHandler[index].bit_order = PDM_FILTER_BIT_ORDER_LSB;
- PDM_FilterHandler[index].endianness = PDM_FILTER_ENDIANNESS_LE;
- PDM_FilterHandler[index].high_pass_tap = 2122358088;
- PDM_FilterHandler[index].out_ptr_channels = ChnlNbrOut;
- PDM_FilterHandler[index].in_ptr_channels = ChnlNbrIn;
- PDM_Filter_Init((PDM_Filter_Handler_t *)(&PDM_FilterHandler[index]));
-
- /* PDM lib config phase */
- PDM_FilterConfig[index].output_samples_number = AudioFreq/1000;
- PDM_FilterConfig[index].mic_gain = 24;
- PDM_FilterConfig[index].decimation_factor = PDM_FILTER_DEC_FACTOR_64;
- PDM_Filter_setConfig((PDM_Filter_Handler_t *)&PDM_FilterHandler[index], &PDM_FilterConfig[index]);
- }
-}
-
-/**
- * @brief Initializes the Audio Codec audio interface (I2S)
- * @note This function assumes that the I2S input clock (through PLL_R in
- * Devices RevA/Z and through dedicated PLLI2S_R in Devices RevB/Y)
- * is already configured and ready to be used.
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- */
-static void I2Sx_Init(uint32_t AudioFreq)
-{
- /* Initialize the hAudioInI2s Instance parameter */
- haudio_in_i2s.Instance = AUDIO_I2Sx;
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(&haudio_in_i2s);
-
- /* I2S2 peripheral configuration */
- haudio_in_i2s.Init.AudioFreq = 4 * AudioFreq;
- haudio_in_i2s.Init.ClockSource = I2S_CLOCK_PLL;
- haudio_in_i2s.Init.CPOL = I2S_CPOL_HIGH;
- haudio_in_i2s.Init.DataFormat = I2S_DATAFORMAT_16B;
- haudio_in_i2s.Init.MCLKOutput = I2S_MCLKOUTPUT_DISABLE;
- haudio_in_i2s.Init.Mode = I2S_MODE_MASTER_RX;
- haudio_in_i2s.Init.Standard = I2S_STANDARD_LSB;
-
- /* Init the I2S */
- HAL_I2S_Init(&haudio_in_i2s);
-
- /* Disable I2S block */
- __HAL_I2S_ENABLE(&haudio_in_i2s);
-}
-
-/**
- * @brief Deinitializes the Audio Codec audio interface (I2S).
- */
-static void I2Sx_DeInit(void)
-{
- /* Initialize the hAudioInI2s Instance parameter */
- haudio_in_i2s.Instance = AUDIO_I2Sx;
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(&haudio_in_i2s);
-
- /* DeInit the I2S */
- HAL_I2S_DeInit(&haudio_in_i2s);
-}
-
-/**
- * @brief Initializes the TIM INput Capture MSP.
- * @param htim: TIM handle
- */
-static void TIMx_IC_MspInit(TIM_HandleTypeDef *htim)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* Enable peripherals and GPIO Clocks --------------------------------------*/
- /* TIMx Peripheral clock enable */
- AUDIO_TIMx_CLK_ENABLE();
-
- /* Enable GPIO Channels Clock */
- AUDIO_TIMx_GPIO_CLK_ENABLE();
-
- /* Configure I/Os ----------------------------------------------------------*/
- /* Common configuration for all channels */
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_NOPULL;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
- gpio_init_structure.Alternate = AUDIO_TIMx_AF;
-
- /* Configure TIM input channel */
- gpio_init_structure.Pin = AUDIO_TIMx_IN_GPIO_PIN;
- HAL_GPIO_Init(AUDIO_TIMx_GPIO_PORT, &gpio_init_structure);
-
- /* Configure TIM output channel */
- gpio_init_structure.Pin = AUDIO_TIMx_OUT_GPIO_PIN;
- HAL_GPIO_Init(AUDIO_TIMx_GPIO_PORT, &gpio_init_structure);
-
-}
-
-/**
- * @brief Initializes the TIM INput Capture MSP.
- * @param htim: TIM handle
- */
-static void TIMx_IC_MspDeInit(TIM_HandleTypeDef *htim)
-{
- /* Disable TIMx Peripheral clock */
- AUDIO_TIMx_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the applic
- by surcgarging this __weak function */
-}
-
-/**
- * @brief Configure TIM as a clock divider by 2.
- * I2S_SCK is externally connected to TIMx input channel
- */
-static void TIMx_Init(void)
-{
- TIM_IC_InitTypeDef s_ic_config;
- TIM_OC_InitTypeDef s_oc_config;
- TIM_ClockConfigTypeDef s_clk_source_config;
- TIM_SlaveConfigTypeDef s_slave_config;
-
- /* Configure the TIM peripheral --------------------------------------------*/
- /* Set TIMx instance */
- haudio_tim.Instance = AUDIO_TIMx;
- /* Timer Input Capture Configuration Structure declaration */
- /* Initialize TIMx peripheral as follow:
- + Period = 0xFFFF
- + Prescaler = 0
- + ClockDivision = 0
- + Counter direction = Up
- */
- haudio_tim.Init.Period = 1;
- haudio_tim.Init.Prescaler = 0;
- haudio_tim.Init.ClockDivision = 0;
- haudio_tim.Init.CounterMode = TIM_COUNTERMODE_UP;
-
- /* Initialize the TIMx peripheral with the structure above */
- TIMx_IC_MspInit(&haudio_tim);
- HAL_TIM_IC_Init(&haudio_tim);
-
- /* Configure the Input Capture channel -------------------------------------*/
- /* Configure the Input Capture of channel 2 */
- s_ic_config.ICPolarity = TIM_ICPOLARITY_FALLING;
- s_ic_config.ICSelection = TIM_ICSELECTION_DIRECTTI;
- s_ic_config.ICPrescaler = TIM_ICPSC_DIV1;
- s_ic_config.ICFilter = 0;
- HAL_TIM_IC_ConfigChannel(&haudio_tim, &s_ic_config, AUDIO_TIMx_IN_CHANNEL);
-
- /* Select external clock mode 1 */
- s_clk_source_config.ClockSource = TIM_CLOCKSOURCE_ETRMODE1;
- s_clk_source_config.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED;
- s_clk_source_config.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1;
- s_clk_source_config.ClockFilter = 0;
- HAL_TIM_ConfigClockSource(&haudio_tim, &s_clk_source_config);
-
- /* Select Input Channel as input trigger */
- s_slave_config.InputTrigger = TIM_TS_TI1FP1;
- s_slave_config.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
- s_slave_config.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
- s_slave_config.TriggerPrescaler = TIM_CLOCKPRESCALER_DIV1;
- s_slave_config.TriggerFilter = 0;
- HAL_TIM_SlaveConfigSynchronization(&haudio_tim, &s_slave_config);
-
- /* Output Compare PWM Mode configuration: Channel2 */
- s_oc_config.OCMode = TIM_OCMODE_PWM1;
- s_oc_config.OCIdleState = TIM_OCIDLESTATE_SET;
- s_oc_config.Pulse = 1;
- s_oc_config.OCPolarity = TIM_OCPOLARITY_HIGH;
- s_oc_config.OCNPolarity = TIM_OCNPOLARITY_HIGH;
- s_oc_config.OCFastMode = TIM_OCFAST_DISABLE;
- s_oc_config.OCNIdleState = TIM_OCNIDLESTATE_SET;
-
- /* Initialize the TIM4 Channel2 with the structure above */
- HAL_TIM_PWM_ConfigChannel(&haudio_tim, &s_oc_config, AUDIO_TIMx_OUT_CHANNEL);
-
- /* Start the TIM4 Channel2 */
- HAL_TIM_PWM_Start(&haudio_tim, AUDIO_TIMx_OUT_CHANNEL);
-
- /* Start the TIM4 Channel1 */
- HAL_TIM_IC_Start(&haudio_tim, AUDIO_TIMx_IN_CHANNEL);
-}
-
-/**
- * @brief Configure TIM as a clock divider by 2.
- * I2S_SCK is externally connected to TIMx input channel
- */
-static void TIMx_DeInit(void)
-{
- haudio_tim.Instance = AUDIO_TIMx;
-
- /* Stop the TIM4 Channel2 */
- HAL_TIM_PWM_Stop(&haudio_tim, AUDIO_TIMx_OUT_CHANNEL);
- /* Stop the TIM4 Channel1 */
- HAL_TIM_IC_Stop(&haudio_tim, AUDIO_TIMx_IN_CHANNEL);
-
- HAL_TIM_IC_DeInit(&haudio_tim);
-
- /* Initialize the TIMx peripheral with the structure above */
- TIMx_IC_MspDeInit(&haudio_tim);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_audio.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_audio.h
deleted file mode 100644
index 64f7300b25..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_audio.h
+++ /dev/null
@@ -1,308 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_audio.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 27-January-2017
- * @brief This file contains the common defines and functions prototypes for
- * the stm32446e_eval_audio.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32446E_EVAL_AUDIO_H
-#define __STM32446E_EVAL_AUDIO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-/* Include audio component Driver */
-#include "../Components/wm8994/wm8994.h"
-#include "stm32446e_eval.h"
-#include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL_AUDIO
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_Exported_Types STM32446E EVAL AUDIO Exported Types
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_Exported_Constants STM32446E EVAL AUDIO Exported Constants
- * @{
- */
-
-/*------------------------------------------------------------------------------
- USER SAI defines parameters
- -----------------------------------------------------------------------------*/
-/** @defgroup CODEC_AudioFrame_SLOT_TDMMode STM32446E EVAL Audio Slot TDM mode
- * @brief In W8994 codec the Audio frame contains 4 slots : TDM Mode
- * TDM format :
- * +------------------|------------------|--------------------|-------------------+
- * | CODEC_SLOT0 Left | CODEC_SLOT1 Left | CODEC_SLOT0 Right | CODEC_SLOT1 Right |
- * +------------------------------------------------------------------------------+
- * @{
- */
-/* To have 2 separate audio stream in Both headphone and speaker the 4 slot must be activated */
-#define CODEC_AUDIOFRAME_SLOT_0123 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_2 | SAI_SLOTACTIVE_3
-/* To have an audio stream in headphone only SAI Slot 0 and Slot 2 must be activated */
-#define CODEC_AUDIOFRAME_SLOT_02 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_2
-/* To have an audio stream in speaker only SAI Slot 1 and Slot 3 must be activated */
-#define CODEC_AUDIOFRAME_SLOT_13 SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_3
-/**
- * @}
- */
-
-/* SAI peripheral configuration defines */
-#define AUDIO_SAIx SAI2_Block_B
-#define AUDIO_SAIx_CLK_ENABLE() __HAL_RCC_SAI2_CLK_ENABLE()
-#define AUDIO_SAIx_CLK_DISABLE() __HAL_RCC_SAI2_CLK_DISABLE()
-#define AUDIO_SAIx_SCK_AF GPIO_AF8_SAI2
-#define AUDIO_SAIx_MCLK_SD_FS_AF GPIO_AF10_SAI2
-
-
-#define AUDIO_SAIx_MCLK_SCK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define AUDIO_SAIx_MCLK_SCK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define AUDIO_SAIx_MCK_PIN GPIO_PIN_1 /* PA1 */
-#define AUDIO_SAIx_SCK_PIN GPIO_PIN_2 /* PA2 */
-#define AUDIO_SAIx_MCLK_SCK_GPIO_PORT GPIOA
-#define AUDIO_SAIx_SD_FS_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
-#define AUDIO_SAIx_SD_FS_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
-#define AUDIO_SAIx_FS_PIN GPIO_PIN_9 /* PG9 */
-#define AUDIO_SAIx_SD_PIN GPIO_PIN_10 /* PG10 */
-#define AUDIO_SAIx_SD_FS_GPIO_PORT GPIOG
-
-
-/* SAI DMA Stream definitions */
-#define AUDIO_SAIx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE()
-#define AUDIO_SAIx_DMAx_CLK_DISABLE() __HAL_RCC_DMA2_CLK_DISABLE()
-#define AUDIO_SAIx_DMAx_STREAM DMA2_Stream6
-#define AUDIO_SAIx_DMAx_CHANNEL DMA_CHANNEL_3
-#define AUDIO_SAIx_DMAx_IRQ DMA2_Stream6_IRQn
-#define AUDIO_SAIx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
-#define AUDIO_SAIx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
-#define DMA_MAX_SZE 0xFFFF
-
-#define AUDIO_SAIx_DMAx_IRQHandler DMA2_Stream6_IRQHandler
-
-/* Select the interrupt preemption priority for the DMA interrupt */
-#define AUDIO_OUT_IRQ_PREPRIO ((uint32_t)5) /* Select the preemption priority level(0 is the highest) */
-
-/*------------------------------------------------------------------------------
- AUDIO IN CONFIGURATION
-------------------------------------------------------------------------------*/
-/* SPI Configuration defines */
-#define AUDIO_I2Sx SPI3
-#define AUDIO_I2Sx_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
-#define AUDIO_I2Sx_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
-#define AUDIO_I2Sx_SCK_PIN GPIO_PIN_3
-#define AUDIO_I2Sx_SCK_GPIO_PORT GPIOB
-#define AUDIO_I2Sx_SCK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-#define AUDIO_I2Sx_SCK_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
-#define AUDIO_I2Sx_SCK_AF GPIO_AF6_SPI3
-
-#define AUDIO_I2Sx_SD_PIN GPIO_PIN_1
-#define AUDIO_I2Sx_SD_GPIO_PORT GPIOC
-#define AUDIO_I2Sx_SD_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define AUDIO_I2Sx_SD_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-#define AUDIO_I2Sx_SD_AF GPIO_AF5_SPI3
-
-/* I2S DMA Stream Rx definitions */
-#define AUDIO_I2Sx_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define AUDIO_I2Sx_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE()
-#define AUDIO_I2Sx_DMAx_STREAM DMA1_Stream2
-#define AUDIO_I2Sx_DMAx_CHANNEL DMA_CHANNEL_0
-#define AUDIO_I2Sx_DMAx_IRQ DMA1_Stream2_IRQn
-#define AUDIO_I2Sx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
-#define AUDIO_I2Sx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
-
-#define AUDIO_I2Sx_DMAx_IRQHandler DMA1_Stream2_IRQHandler
-
-/* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */
-#define AUDIO_IN_IRQ_PREPRIO ((uint32_t)6) /* Select the preemption priority level(0 is the highest) */
-
-
-/* Two channels are used:
- - one channel as input which is connected to I2S SCK in stereo mode
- - one channel as output which divides the frequency on the input
-*/
-
-#define AUDIO_TIMx_CLK_ENABLE() __HAL_RCC_TIM4_CLK_ENABLE()
-#define AUDIO_TIMx_CLK_DISABLE() __HAL_RCC_TIM4_CLK_DISABLE()
-#define AUDIO_TIMx TIM4
-#define AUDIO_TIMx_IN_CHANNEL TIM_CHANNEL_1
-#define AUDIO_TIMx_OUT_CHANNEL TIM_CHANNEL_2 /* Select channel 2 as output */
-#define AUDIO_TIMx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-#define AUDIO_TIMx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
-#define AUDIO_TIMx_GPIO_PORT GPIOB
-#define AUDIO_TIMx_IN_GPIO_PIN GPIO_PIN_6
-#define AUDIO_TIMx_OUT_GPIO_PIN GPIO_PIN_7
-#define AUDIO_TIMx_AF GPIO_AF2_TIM4
-
-/*------------------------------------------------------------------------------
- CONFIGURATION: Audio Driver Configuration parameters
-------------------------------------------------------------------------------*/
-
-#define AUDIODATA_SIZE 2 /* 16-bits audio data size */
-
-/* Audio status definition */
-#define AUDIO_OK ((uint8_t)0)
-#define AUDIO_ERROR ((uint8_t)1)
-#define AUDIO_TIMEOUT ((uint8_t)2)
-
-/* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */
-#define DEFAULT_AUDIO_IN_FREQ I2S_AUDIOFREQ_16K
-#define DEFAULT_AUDIO_IN_BIT_RESOLUTION ((uint8_t)16)
-#define DEFAULT_AUDIO_IN_CHANNEL_NBR ((uint8_t)2) /* Mono = 1, Stereo = 2 */
-#define DEFAULT_AUDIO_IN_VOLUME ((uint16_t)64)
-
-/* PDM buffer input size */
-#define INTERNAL_BUFF_SIZE (128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR)
-/* PCM buffer output size */
-#define PCM_OUT_SIZE (DEFAULT_AUDIO_IN_FREQ/1000*2)
-#define CHANNEL_DEMUX_MASK ((uint8_t)0x55)
-
-/*------------------------------------------------------------------------------
- OPTIONAL Configuration defines parameters
-------------------------------------------------------------------------------*/
-
-/* Delay for the Codec to be correctly reset */
-#define CODEC_RESET_DELAY ((uint8_t)5)
-
-
-/*------------------------------------------------------------------------------
- OUTPUT DEVICES definition
-------------------------------------------------------------------------------*/
-
-/* Alias on existing output devices to adapt for 2 headphones output */
-#define OUTPUT_DEVICE_HEADPHONE1 OUTPUT_DEVICE_HEADPHONE
-#define OUTPUT_DEVICE_HEADPHONE2 OUTPUT_DEVICE_SPEAKER /* Headphone2 is connected to Speaker output of the wm8994 */
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_Exported_Variables STM32446E EVAL AUDIO Exported Variables
- * @{
- */
-extern __IO uint16_t AudioInVolume;
- /**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_Exported_Macros STM32446E EVAL AUDIO Exported Macros
- * @{
- */
-#define DMA_MAX(x) (((x) <= DMA_MAX_SZE)? (x):DMA_MAX_SZE)
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_OUT_Exported_Functions STM32446E EVAL AUDIO OUT Exported Functions
- * @{
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
-uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size);
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size);
-uint8_t BSP_AUDIO_OUT_Pause(void);
-uint8_t BSP_AUDIO_OUT_Resume(void);
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option);
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume);
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq);
-void BSP_AUDIO_OUT_SetAudioFrameSlot(uint32_t AudioFrameSlot);
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd);
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output);
-void BSP_AUDIO_OUT_DeInit(void);
-
-/* User Callbacks: user has to implement these functions in his code if they are needed. */
-/* This function is called when the requested data has been completely transferred.*/
-void BSP_AUDIO_OUT_TransferComplete_CallBack(void);
-
-/* This function is called when half of the requested buffer has been transferred. */
-void BSP_AUDIO_OUT_HalfTransfer_CallBack(void);
-
-/* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-void BSP_AUDIO_OUT_Error_CallBack(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_AUDIO_OUT_ClockConfig(SAI_HandleTypeDef *hsai, uint32_t AudioFreq, void *Params);
-void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params);
-void BSP_AUDIO_OUT_MspDeInit(SAI_HandleTypeDef *hsai, void *Params);
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_AUDIO_IN_Exported_Functions STM32446E EVAL AUDIO IN Exported Functions
- * @{
- */
-uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
-uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size);
-uint8_t BSP_AUDIO_IN_Stop(void);
-uint8_t BSP_AUDIO_IN_Pause(void);
-uint8_t BSP_AUDIO_IN_Resume(void);
-uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume);
-void BSP_AUDIO_IN_DeInit(void);
-uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t* PDMBuf, uint16_t* PCMBuf);
-/* User Callbacks: user has to implement these functions in his code if they are needed. */
-/* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled to prepare the next
- buffer pointer and its size. */
-void BSP_AUDIO_IN_TransferComplete_CallBack(void);
-void BSP_AUDIO_IN_HalfTransfer_CallBack(void);
-
-/* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-void BSP_AUDIO_IN_Error_Callback(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, void *Params);
-void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
-void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_AUDIO_H */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_camera.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_camera.c
deleted file mode 100644
index eed3e093bb..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_camera.c
+++ /dev/null
@@ -1,647 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_camera.c
- * @author MCD Application Team
- * @brief This file includes the driver for Camera modules mounted on
- * STM32446E-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info: ------------------------------------------------------------------
- User NOTES
-1. How to use this driver:
---------------------------
- - This driver is used to drive the camera.
- - The S5K5CAG component driver MUST be included with this driver.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the camera using the BSP_CAMERA_Init() function.
- o Start the camera capture/snapshot using the CAMERA_Start() function.
- o Suspend, resume or stop the camera capture using the following functions:
- - BSP_CAMERA_Suspend()
- - BSP_CAMERA_Resume()
- - BSP_CAMERA_Stop()
-
- + Options
- o Increase or decrease on the fly the brightness and/or contrast
- using the following function:
- - BSP_CAMERA_ContrastBrightnessConfig
- o Add a special effect on the fly using the following functions:
- - BSP_CAMERA_BlackWhiteConfig()
- - BSP_CAMERA_ColorEffectConfig()
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_camera.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA STM32446E EVAL CAMERA
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA_Private_TypesDefinitions STM32446E EVAL CAMERA Private TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA_Private_Defines STM32446E EVAL CAMERA Private Defines
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA_Private_Macros STM32446E EVAL CAMERA Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA_Private_Variables STM32446E EVAL CAMERA Private Variables
- * @{
- */
-
- /*
-Note:
- camera_drv variable is not compliant to naming rules (upper case without "_" ),
- but we keep this naming for compatibility, in fact these variables (not static)
- could have been used by the application, example the stm32f4xx_it.c.
-*/
-CAMERA_DrvTypeDef *camera_drv;
-
-static DCMI_HandleTypeDef hDcmiEval;
-uint32_t currentResolution;
-static uint32_t cameraHwAddress;
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA_Private_FunctionPrototypes STM32446E EVAL CAMERA Private FunctionPrototypes
- * @{
- */
-static uint32_t GetSize(uint32_t Resolution);
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA_Private_Functions STM32446E EVAL CAMERA Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the camera.
- * @param Resolution: camera resolution
- * @retval Camera status
- */
-uint8_t BSP_CAMERA_Init(uint32_t Resolution)
-{
- DCMI_HandleTypeDef *phdcmi;
-
- uint8_t ret = CAMERA_ERROR;
-
- /* Get the DCMI handle structure */
- phdcmi = &hDcmiEval;
-
- /*** Configures the DCMI to interface with the camera module ***/
- /* DCMI configuration */
- phdcmi->Init.CaptureRate = DCMI_CR_ALL_FRAME;
- phdcmi->Init.HSPolarity = DCMI_HSPOLARITY_HIGH;
- phdcmi->Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;
- phdcmi->Init.VSPolarity = DCMI_VSPOLARITY_HIGH;
- phdcmi->Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;
- phdcmi->Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;
- phdcmi->Init.ByteSelectMode = DCMI_BSM_ALL;
- phdcmi->Init.ByteSelectStart = DCMI_OEBS_ODD;
- phdcmi->Init.LineSelectMode = DCMI_LSM_ALL;
- phdcmi->Init.LineSelectStart = DCMI_OELS_ODD;
- phdcmi->Instance = DCMI;
-
- /* Configure IO functionalities for CAMERA detect pin */
- BSP_IO_Init();
-
- /* Apply Camera hardware reset */
- BSP_CAMERA_HwReset();
-
- /* Check if the CAMERA is plugged */
- if(BSP_IO_ReadPin(CAM_PLUG_PIN))
- {
- return CAMERA_ERROR;
- }
-
- if (s5k5cag_ReadID(CAMERA_I2C_ADDRESS) == S5K5CAG_ID)
- {
- /* Initialize the camera driver structure */
- camera_drv = &s5k5cag_drv;
- cameraHwAddress = CAMERA_I2C_ADDRESS;
-
- /* DCMI Initialization */
- BSP_CAMERA_MspInit(&hDcmiEval, NULL);
- HAL_DCMI_Init(phdcmi);
-
- /* Camera Init */
- camera_drv->Init(cameraHwAddress, Resolution);
-
- currentResolution = Resolution;
-
- /* Return CAMERA_OK status */
- ret = CAMERA_OK;
- }
- else if(ov5640_ReadID(CAMERA_I2C_ADDRESS_2) == OV5640_ID)
- {
- /* Initialize the camera driver structure */
- camera_drv = &ov5640_drv;
- cameraHwAddress = CAMERA_I2C_ADDRESS_2;
-
- /* DCMI Initialization */
- BSP_CAMERA_MspInit(&hDcmiEval, NULL);
- HAL_DCMI_Init(phdcmi);
-
- /* Camera Module Initialization via I2C to the wanted 'Resolution' */
- camera_drv->Init(cameraHwAddress, Resolution);
-
- currentResolution = Resolution;
-
- /* Return CAMERA_OK status */
- ret = CAMERA_OK;
- }
- else
- {
- /* No supported camera sensor found */
- ret = CAMERA_ERROR;
- }
-
- return ret;
-}
-
-
-/**
- * @brief DeInitializes the camera.
- * @retval Camera status
- */
-uint8_t BSP_CAMERA_DeInit(void)
-{
- hDcmiEval.Instance = DCMI;
-
- HAL_DCMI_DeInit(&hDcmiEval);
- BSP_CAMERA_MspDeInit(&hDcmiEval, NULL);
- return CAMERA_OK;
-}
-
-/**
- * @brief Starts the camera capture in continuous mode.
- * @param buff: pointer to the camera output buffer
- */
-void BSP_CAMERA_ContinuousStart(uint8_t *buff)
-{
- /* Start the camera capture */
- HAL_DCMI_Start_DMA(&hDcmiEval, DCMI_MODE_CONTINUOUS, (uint32_t)buff, GetSize(currentResolution));
-}
-
-/**
- * @brief Starts the camera capture in snapshot mode.
- * @param buff: pointer to the camera output buffer
- */
-void BSP_CAMERA_SnapshotStart(uint8_t *buff)
-{
- /* Start the camera capture */
- HAL_DCMI_Start_DMA(&hDcmiEval, DCMI_MODE_SNAPSHOT, (uint32_t)buff, GetSize(currentResolution));
-}
-
-/**
- * @brief Suspend the CAMERA capture
- */
-void BSP_CAMERA_Suspend(void)
-{
- /* Suspend the Camera Capture */
- HAL_DCMI_Suspend(&hDcmiEval);
-}
-
-/**
- * @brief Resume the CAMERA capture
- */
-void BSP_CAMERA_Resume(void)
-{
- /* Start the Camera Capture */
- HAL_DCMI_Resume(&hDcmiEval);
-}
-
-/**
- * @brief Stop the CAMERA capture
- * @retval Camera status
- */
-uint8_t BSP_CAMERA_Stop(void)
-{
- DCMI_HandleTypeDef *phdcmi;
-
- uint8_t ret = CAMERA_ERROR;
-
- /* Get the DCMI handle structure */
- phdcmi = &hDcmiEval;
-
- if(HAL_DCMI_Stop(phdcmi) == HAL_OK)
- {
- ret = CAMERA_OK;
- }
-
- /* Set Camera in Power Down */
- BSP_CAMERA_PwrDown();
-
- return ret;
-}
-
-/**
- * @brief CAMERA hardware reset
- */
-void BSP_CAMERA_HwReset(void)
-{
- /* Camera sensor RESET sequence */
- BSP_IO_ConfigPin(RSTI_PIN, IO_MODE_OUTPUT);
- BSP_IO_ConfigPin(XSDN_PIN, IO_MODE_OUTPUT);
-
- /* Assert the camera STANDBY pin (active high) */
- BSP_IO_WritePin(XSDN_PIN, BSP_IO_PIN_SET);
-
- /* Assert the camera RSTI pin (active low) */
- BSP_IO_WritePin(RSTI_PIN, BSP_IO_PIN_RESET);
-
- HAL_Delay(100); /* RST and XSDN signals asserted during 100ms */
-
- /* De-assert the camera STANDBY pin (active high) */
- BSP_IO_WritePin(XSDN_PIN, BSP_IO_PIN_RESET);
-
- HAL_Delay(3); /* RST de-asserted and XSDN asserted during 3ms */
-
- /* De-assert the camera RSTI pin (active low) */
- BSP_IO_WritePin(RSTI_PIN, BSP_IO_PIN_SET);
-
- HAL_Delay(6); /* RST de-asserted during 3ms */
-}
-
-/**
- * @brief CAMERA power down
- */
-void BSP_CAMERA_PwrDown(void)
-{
- /* Camera power down sequence */
- BSP_IO_ConfigPin(RSTI_PIN, IO_MODE_OUTPUT);
- BSP_IO_ConfigPin(XSDN_PIN, IO_MODE_OUTPUT);
-
- /* De-assert the camera STANDBY pin (active high) */
- BSP_IO_WritePin(XSDN_PIN, BSP_IO_PIN_RESET);
-
- /* Assert the camera RSTI pin (active low) */
- BSP_IO_WritePin(RSTI_PIN, BSP_IO_PIN_RESET);
-}
-
-/**
- * @brief Configures the camera contrast and brightness.
- * @param contrast_level: Contrast level
- * This parameter can be one of the following values:
- * @arg CAMERA_CONTRAST_LEVEL4: for contrast +2
- * @arg CAMERA_CONTRAST_LEVEL3: for contrast +1
- * @arg CAMERA_CONTRAST_LEVEL2: for contrast 0
- * @arg CAMERA_CONTRAST_LEVEL1: for contrast -1
- * @arg CAMERA_CONTRAST_LEVEL0: for contrast -2
- * @param brightness_level: Contrast level
- * This parameter can be one of the following values:
- * @arg CAMERA_BRIGHTNESS_LEVEL4: for brightness +2
- * @arg CAMERA_BRIGHTNESS_LEVEL3: for brightness +1
- * @arg CAMERA_BRIGHTNESS_LEVEL2: for brightness 0
- * @arg CAMERA_BRIGHTNESS_LEVEL1: for brightness -1
- * @arg CAMERA_BRIGHTNESS_LEVEL0: for brightness -2
- */
-void BSP_CAMERA_ContrastBrightnessConfig(uint32_t contrast_level, uint32_t brightness_level)
-{
- if(camera_drv->Config != NULL)
- {
- camera_drv->Config(cameraHwAddress, CAMERA_CONTRAST_BRIGHTNESS, contrast_level, brightness_level);
- }
-}
-
-/**
- * @brief Configures the camera white balance.
- * @param Mode: black_white mode
- * This parameter can be one of the following values:
- * @arg CAMERA_BLACK_WHITE_BW
- * @arg CAMERA_BLACK_WHITE_NEGATIVE
- * @arg CAMERA_BLACK_WHITE_BW_NEGATIVE
- * @arg CAMERA_BLACK_WHITE_NORMAL
- */
-void BSP_CAMERA_BlackWhiteConfig(uint32_t Mode)
-{
- if(camera_drv->Config != NULL)
- {
- camera_drv->Config(cameraHwAddress, CAMERA_BLACK_WHITE, Mode, 0);
- }
-}
-
-/**
- * @brief Configures the camera color effect.
- * @param Effect: Color effect
- * This parameter can be one of the following values:
- * @arg CAMERA_COLOR_EFFECT_ANTIQUE
- * @arg CAMERA_COLOR_EFFECT_BLUE
- * @arg CAMERA_COLOR_EFFECT_GREEN
- * @arg CAMERA_COLOR_EFFECT_RED
- */
-void BSP_CAMERA_ColorEffectConfig(uint32_t Effect)
-{
- if(camera_drv->Config != NULL)
- {
- camera_drv->Config(cameraHwAddress, CAMERA_COLOR_EFFECT, Effect, 0);
- }
-}
-
-/**
- * @brief Handles DCMI interrupt request.
- */
-void BSP_CAMERA_IRQHandler(void)
-{
- HAL_DCMI_IRQHandler(&hDcmiEval);
-}
-
-/**
- * @brief Handles DMA interrupt request.
- */
-void BSP_CAMERA_DMA_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(hDcmiEval.DMA_Handle);
-}
-
-/**
- * @brief Get the capture size.
- * @param Resolution: the current resolution.
- * @retval capture size.
- */
-static uint32_t GetSize(uint32_t Resolution)
-{
- uint32_t size = 0;
-
- /* Get capture size */
- switch (Resolution)
- {
- case CAMERA_R160x120:
- {
- size = 0x2580;
- }
- break;
- case CAMERA_R320x240:
- {
- size = 0x9600;
- }
- break;
- case CAMERA_R480x272:
- {
- size = 0xFF00;
- }
- break;
- case CAMERA_R640x480:
- {
- size = 0x25800;
- }
- break;
- default:
- {
- break;
- }
- }
-
- return size;
-}
-
-/**
- * @brief Initializes the DCMI MSP.
- * @param hdcmi: HDMI handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_CAMERA_MspInit(DCMI_HandleTypeDef *hdcmi, void *Params)
-{
- static DMA_HandleTypeDef hdma_eval;
- GPIO_InitTypeDef gpio_init_structure;
-
- /*** Enable peripherals and GPIO clocks ***/
- /* Enable DCMI clock */
- __HAL_RCC_DCMI_CLK_ENABLE();
-
- /* Enable DMA2 clock */
- __HAL_RCC_DMA2_CLK_ENABLE();
-
- /* Enable GPIO clocks */
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
-
- /*** Configure the GPIO ***/
- /* Configure DCMI GPIO as alternate function */
- gpio_init_structure.Pin = GPIO_PIN_4 | GPIO_PIN_6;
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
- gpio_init_structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOA, &gpio_init_structure);
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- gpio_init_structure.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9;
-#else
- gpio_init_structure.Pin = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9;
-#endif // !USE_STM32446E_EVAL_REVA
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
- gpio_init_structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOB, &gpio_init_structure);
-
- gpio_init_structure.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 |\
- GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |\
- GPIO_PIN_12;
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
- gpio_init_structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOC, &gpio_init_structure);
-
-#if !defined(USE_STM32446E_EVAL_REVA)
- gpio_init_structure.Pin = GPIO_PIN_2 | GPIO_PIN_6;
-#else
- gpio_init_structure.Pin = GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_6;
-#endif // !USE_STM32446E_EVAL_REVA
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
- gpio_init_structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOD, &gpio_init_structure);
-
-
- /*** Configure the DMA ***/
- /* Set the parameters to be configured */
- hdma_eval.Init.Channel = DMA_CHANNEL_1;
- hdma_eval.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_eval.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_eval.Init.MemInc = DMA_MINC_ENABLE;
- hdma_eval.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- hdma_eval.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- hdma_eval.Init.Mode = DMA_CIRCULAR;
- hdma_eval.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_eval.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma_eval.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_eval.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_eval.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- hdma_eval.Instance = DMA2_Stream1;
-
- /* Associate the initialized DMA handle to the DCMI handle */
- __HAL_LINKDMA(hdcmi, DMA_Handle, hdma_eval);
-
- /*** Configure the NVIC for DCMI and DMA ***/
- /* NVIC configuration for DCMI transfer complete interrupt */
- HAL_NVIC_SetPriority(DCMI_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(DCMI_IRQn);
-
- /* NVIC configuration for DMA2D transfer complete interrupt */
- HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(hdcmi->DMA_Handle);
-}
-
-
-/**
- * @brief DeInitializes the DCMI MSP.
- * @param hdcmi: HDMI handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_CAMERA_MspDeInit(DCMI_HandleTypeDef *hdcmi, void *Params)
-{
- /* Disable NVIC for DCMI transfer complete interrupt */
- HAL_NVIC_DisableIRQ(DCMI_IRQn);
-
- /* Disable NVIC for DMA2 transfer complete interrupt */
- HAL_NVIC_DisableIRQ(DMA2_Stream1_IRQn);
-
- /* Configure the DMA stream */
- HAL_DMA_DeInit(hdcmi->DMA_Handle);
-
- /* Disable DCMI clock */
- __HAL_RCC_DCMI_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the application
- by surcharging this __weak function */
-}
-
-/**
- * @brief Line event callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_LineEventCallback();
-}
-
-/**
- * @brief Line Event callback.
- */
-__weak void BSP_CAMERA_LineEventCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_LineEventCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief VSYNC event callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_VsyncEventCallback();
-}
-
-/**
- * @brief VSYNC Event callback.
- */
-__weak void BSP_CAMERA_VsyncEventCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_VsyncEventCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief Frame event callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_FrameEventCallback();
-}
-
-/**
- * @brief Frame Event callback.
- */
-__weak void BSP_CAMERA_FrameEventCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_FrameEventCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief Error callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_ErrorCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_ErrorCallback();
-}
-
-/**
- * @brief Error callback.
- */
-__weak void BSP_CAMERA_ErrorCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_ErrorCallback could be implemented in the user file
- */
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_camera.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_camera.h
deleted file mode 100644
index 648fa5df37..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_camera.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_camera.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm32446e_eval_camera.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32446E_EVAL_CAMERA_H
-#define __STM32446E_EVAL_CAMERA_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-/* Include Camera component Driver */
-#include "../Components/s5k5cag/s5k5cag.h"
-#include "../Components/ov5640/ov5640.h"
-
-/* Include IO Driver */
-#include "stm32446e_eval_io.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL_CAMERA
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA_Exported_Types STM32446E EVAL CAMERA Exported Types
- * @{
- */
-
-/**
- * @brief Camera State structures definition
- */
-typedef enum
-{
- CAMERA_OK = 0x00,
- CAMERA_ERROR = 0x01,
- CAMERA_TIMEOUT = 0x02
-}Camera_StatusTypeDef;
-
-#define RESOLUTION_R160x120 CAMERA_R160x120 /* QQVGA Resolution */
-#define RESOLUTION_R320x240 CAMERA_R320x240 /* QVGA Resolution */
-#define RESOLUTION_R480x272 CAMERA_R480x272 /* 480x272 Resolution */
-#define RESOLUTION_R640x480 CAMERA_R640x480 /* VGA Resolution */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA_Exported_Constants STM32446E EVAL CAMERA Exported Constants
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_CAMERA_Exported_Functions STM32446E EVAL CAMERA Exported Functions
- * @{
- */
-uint8_t BSP_CAMERA_Init(uint32_t Resolution);
-uint8_t BSP_CAMERA_DeInit(void);
-void BSP_CAMERA_ContinuousStart(uint8_t *buff);
-void BSP_CAMERA_SnapshotStart(uint8_t *buff);
-void BSP_CAMERA_Suspend(void);
-void BSP_CAMERA_Resume(void);
-uint8_t BSP_CAMERA_Stop(void);
-void BSP_CAMERA_HwReset(void);
-void BSP_CAMERA_PwrDown(void);
-void BSP_CAMERA_LineEventCallback(void);
-void BSP_CAMERA_VsyncEventCallback(void);
-void BSP_CAMERA_FrameEventCallback(void);
-void BSP_CAMERA_ErrorCallback(void);
-
-/* Camera features functions prototype */
-void BSP_CAMERA_ContrastBrightnessConfig(uint32_t contrast_level, uint32_t brightness_level);
-void BSP_CAMERA_BlackWhiteConfig(uint32_t Mode);
-void BSP_CAMERA_ColorEffectConfig(uint32_t Effect);
-
-/* To be called in DCMI_IRQHandler function */
-void BSP_CAMERA_IRQHandler(void);
-/* To be called in DMA2_Stream1_IRQHandler function */
-void BSP_CAMERA_DMA_IRQHandler(void);
-
-/* These functions can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_CAMERA_MspInit(DCMI_HandleTypeDef *hdcmi, void *Params);
-void BSP_CAMERA_MspDeInit(DCMI_HandleTypeDef *hdcmi, void *Params);
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_CAMERA_H */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_eeprom.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_eeprom.c
deleted file mode 100644
index 4b2fe6cddb..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_eeprom.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_eeprom.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage an I2C M24LR64
- * EEPROM memory.
- * To be able to use this driver, the switch EE_M24LR64 must be defined
- * in your toolchain compiler preprocessor
- *
- * ===================================================================
- * Notes:
- * - This driver is intended for STM32F4xx families devices only.
- * - The I2C EEPROM memory (M24LR64) is available on separate daughter
- * board ANT7-M24LR-A, which is not provided with the STM32446E_EVAL
- * board.
- * To use this driver you have to connect the ANT7-M24LR-A to CN3
- * connector of STM32446E_EVAL board.
- * ===================================================================
- *
- * It implements a high level communication layer for read and write
- * from/to this memory. The needed STM32F4xx hardware resources (I2C and
- * GPIO) are defined in stm32446e_eval.h file, and the initialization is
- * performed in EEPROM_IO_Init() function declared in stm32446e_eval.c
- * file.
- * You can easily tailor this driver to any other development board,
- * by just adapting the defines for hardware resources and
- * EEPROM_IO_Init() function.
- *
- * @note In this driver, basic read and write functions (BSP_EEPROM_ReadBuffer()
- * and BSP_EEPROM_WritePage()) use DMA mode to perform the data
- * transfer to/from EEPROM memory.
- *
- * @note Regarding BSP_EEPROM_WritePage(), it is a optimized function to perform
- * small write (less than 1 page) BUT The number of bytes (combined to write start address) must not
- * cross the EEPROM page boundary. This function can only write into
- * the boundaries of an EEPROM page.
- * This function doesn't check on boundaries condition (in this driver
- * the function BSP_EEPROM_WriteBuffer() which calls BSP_EEPROM_WritePage() is
- * responsible of checking on Page boundaries).
- *
- *
- * +-----------------------------------------------------------------+
- * | Pin assignment for M24LR64 EEPROM |
- * +---------------------------------------+-----------+-------------+
- * | STM32F4xx I2C Pins | EEPROM | Pin |
- * +---------------------------------------+-----------+-------------+
- * | . | E0(GND) | 1 (0V) |
- * | . | AC0 | 2 |
- * | . | AC1 | 3 |
- * | . | VSS | 4 (0V) |
- * | SDA | SDA | 5 |
- * | SCL | SCL | 6 |
- * | . | E1(GND) | 7 (0V) |
- * | . | VDD | 8 (3.3V) |
- * +---------------------------------------+-----------+-------------+
- *
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_eeprom.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM STM32446E EVAL EEPROM
- * @brief This file includes the I2C EEPROM driver of STM32446E-EVAL evaluation board.
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Private_Types STM32446E EVAL EEPROM Private Types
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Private_Defines STM32446E EVAL EEPROM Private Defines
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Private_Macros STM32446E EVAL EEPROM Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Private_Variables STM32446E EVAL EEPROM Private Variables
- * @{
- */
-__IO uint16_t EEPROMAddress = 0;
-__IO uint16_t EEPROMDataRead;
-__IO uint8_t EEPROMDataWrite;
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Private_Function_Prototypes STM32446E EVAL EEPROM Private Function Prototypes
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Private_Functions STM32446E EVAL EEPROM Private Functions
- * @{
- */
-
-/**
- * @brief Initializes peripherals used by the I2C EEPROM driver.
- *
- * @note There are 2 different versions of M24LR64 (A01 & A02).
- * Then try to connect on 1st one (EEPROM_I2C_ADDRESS_A01)
- * and if problem, check the 2nd one (EEPROM_I2C_ADDRESS_A02)
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0)
- */
-uint32_t BSP_EEPROM_Init(void)
-{
- /* I2C Initialization */
- EEPROM_IO_Init();
-
- /* Select the EEPROM address for A01 and check if OK */
- EEPROMAddress = EEPROM_I2C_ADDRESS_A01;
- if(EEPROM_IO_IsDeviceReady(EEPROMAddress, EEPROM_MAX_TRIALS) != HAL_OK)
- {
- /* Select the EEPROM address for A02 and check if OK */
- EEPROMAddress = EEPROM_I2C_ADDRESS_A02;
- if(EEPROM_IO_IsDeviceReady(EEPROMAddress, EEPROM_MAX_TRIALS) != HAL_OK)
- {
- return EEPROM_FAIL;
- }
- }
- return EEPROM_OK;
-}
-
-/**
- * @brief DeInitializes the EEPROM.
- * @retval EEPROM state
- */
-uint8_t BSP_EEPROM_DeInit(void)
-{
- /* I2C won't be disabled because common to other functionalities */
- return EEPROM_OK;
-}
-
-/**
- * @brief Reads a block of data from the EEPROM.
- * @param pBuffer: pointer to the buffer that receives the data read from
- * the EEPROM.
- * @param ReadAddr: EEPROM's internal address to start reading from.
- * @param NumByteToRead: pointer to the variable holding number of bytes to
- * be read from the EEPROM.
- *
- * @note The variable pointed by NumByteToRead is reset to 0 when all the
- * data are read from the EEPROM. Application should monitor this
- * variable in order know when the transfer is complete.
- *
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_ReadBuffer(uint8_t* pBuffer, uint16_t ReadAddr, uint16_t* NumByteToRead)
-{
- uint32_t buffersize = *NumByteToRead;
-
- /* Set the pointer to the Number of data to be read. This pointer will be used
- by the DMA Transfer Completer interrupt Handler in order to reset the
- variable to 0. User should check on this variable in order to know if the
- DMA transfer has been complete or not. */
- EEPROMDataRead = *NumByteToRead;
-
- if(EEPROM_IO_ReadData(EEPROMAddress, ReadAddr, pBuffer, buffersize) != HAL_OK)
- {
- BSP_EEPROM_TIMEOUT_UserCallback();
- return EEPROM_FAIL;
- }
-
- /* If all operations OK, return EEPROM_OK (0) */
- return EEPROM_OK;
-}
-
-/**
- * @brief Writes more than one byte to the EEPROM with a single WRITE cycle.
- *
- * @note The number of bytes (combined to write start address) must not
- * cross the EEPROM page boundary. This function can only write into
- * the boundaries of an EEPROM page.
- * This function doesn't check on boundaries condition (in this driver
- * the function BSP_EEPROM_WriteBuffer() which calls BSP_EEPROM_WritePage() is
- * responsible of checking on Page boundaries).
- *
- * @param pBuffer: pointer to the buffer containing the data to be written to
- * the EEPROM.
- * @param WriteAddr: EEPROM's internal address to write to.
- * @param NumByteToWrite: pointer to the variable holding number of bytes to
- * be written into the EEPROM.
- *
- * @note The variable pointed by NumByteToWrite is reset to 0 when all the
- * data are written to the EEPROM. Application should monitor this
- * variable in order know when the transfer is complete.
- *
- * @note This function just configure the communication and enable the DMA
- * channel to transfer data. Meanwhile, the user application may perform
- * other tasks in parallel.
- *
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_WritePage(uint8_t* pBuffer, uint16_t WriteAddr, uint8_t* NumByteToWrite)
-{
- uint32_t buffersize = *NumByteToWrite;
- uint32_t status = EEPROM_OK;
-
- /* Set the pointer to the Number of data to be written. This pointer will be used
- by the DMA Transfer Completer interrupt Handler in order to reset the
- variable to 0. User should check on this variable in order to know if the
- DMA transfer has been complete or not. */
- EEPROMDataWrite = *NumByteToWrite;
-
- if(EEPROM_IO_WriteData(EEPROMAddress, WriteAddr, pBuffer, buffersize) != HAL_OK)
- {
- BSP_EEPROM_TIMEOUT_UserCallback();
- status = EEPROM_FAIL;
- }
-
- if(BSP_EEPROM_WaitEepromStandbyState() != EEPROM_OK)
- {
- return EEPROM_FAIL;
- }
-
- /* If all operations OK, return EEPROM_OK (0) */
- return status;
-}
-
-/**
- * @brief Writes buffer of data to the I2C EEPROM.
- * @param pBuffer: pointer to the buffer containing the data to be written
- * to the EEPROM.
- * @param WriteAddr: EEPROM's internal address to write to.
- * @param NumByteToWrite: number of bytes to write to the EEPROM.
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_WriteBuffer(uint8_t *pBuffer, uint16_t WriteAddr, uint16_t NumByteToWrite)
-{
- uint16_t numofpage = 0, numofsingle = 0, count = 0;
- uint16_t addr = 0;
- uint8_t dataindex = 0;
- uint32_t status = EEPROM_OK;
-
- addr = WriteAddr % EEPROM_PAGESIZE;
- count = EEPROM_PAGESIZE - addr;
- numofpage = NumByteToWrite / EEPROM_PAGESIZE;
- numofsingle = NumByteToWrite % EEPROM_PAGESIZE;
-
- /* If WriteAddr is EEPROM_PAGESIZE aligned */
- if(addr == 0)
- {
- /* If NumByteToWrite < EEPROM_PAGESIZE */
- if(numofpage == 0)
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- /* Start writing data */
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- /* If NumByteToWrite > EEPROM_PAGESIZE */
- else
- {
- while(numofpage--)
- {
- /* Store the number of data to be written */
- dataindex = EEPROM_PAGESIZE;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
-
- WriteAddr += EEPROM_PAGESIZE;
- pBuffer += EEPROM_PAGESIZE;
- }
-
- if(numofsingle!=0)
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- }
- }
- /* If WriteAddr is not EEPROM_PAGESIZE aligned */
- else
- {
- /* If NumByteToWrite < EEPROM_PAGESIZE */
- if(numofpage== 0)
- {
- /* If the number of data to be written is more than the remaining space
- in the current page: */
- if(NumByteToWrite > count)
- {
- /* Store the number of data to be written */
- dataindex = count;
- /* Write the data contained in same page */
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
-
- /* Store the number of data to be written */
- dataindex = (NumByteToWrite - count);
- /* Write the remaining data in the following page */
- status = BSP_EEPROM_WritePage((uint8_t*)(pBuffer + count), (WriteAddr + count), (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- else
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- }
- /* If NumByteToWrite > EEPROM_PAGESIZE */
- else
- {
- NumByteToWrite -= count;
- numofpage = NumByteToWrite / EEPROM_PAGESIZE;
- numofsingle = NumByteToWrite % EEPROM_PAGESIZE;
-
- if(count != 0)
- {
- /* Store the number of data to be written */
- dataindex = count;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- WriteAddr += count;
- pBuffer += count;
- }
-
- while(numofpage--)
- {
- /* Store the number of data to be written */
- dataindex = EEPROM_PAGESIZE;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- WriteAddr += EEPROM_PAGESIZE;
- pBuffer += EEPROM_PAGESIZE;
- }
- if(numofsingle != 0)
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- }
- }
-
- /* If all operations OK, return EEPROM_OK (0) */
- return EEPROM_OK;
-}
-
-/**
- * @brief Wait for EEPROM Standby state.
- *
- * @note This function allows to wait and check that EEPROM has finished the
- * last operation. It is mostly used after Write operation: after receiving
- * the buffer to be written, the EEPROM may need additional time to actually
- * perform the write operation. During this time, it doesn't answer to
- * I2C packets addressed to it. Once the write operation is complete
- * the EEPROM responds to its address.
- *
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_WaitEepromStandbyState(void)
-{
- /* Check if the maximum allowed number of trials has bee reached */
- if(EEPROM_IO_IsDeviceReady(EEPROMAddress, EEPROM_MAX_TRIALS) != HAL_OK)
- {
- /* If the maximum number of trials has been reached, exit the function */
- BSP_EEPROM_TIMEOUT_UserCallback();
- return EEPROM_TIMEOUT;
- }
- return EEPROM_OK;
-}
-
-/**
- * @brief Basic management of the timeout situation.
- */
-__weak void BSP_EEPROM_TIMEOUT_UserCallback(void)
-{
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_eeprom.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_eeprom.h
deleted file mode 100644
index 2470861eb7..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_eeprom.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_eeprom.h
- * @author MCD Application Team
- * @brief This file contains all the functions prototypes for
- * the stm32446e_eval_eeprom.c firmware driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F446E_EVAL_EEPROM_H
-#define __STM32F446E_EVAL_EEPROM_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM STM32446E EVAL EEPROM
- * @brief This file includes the I2C EEPROM driver of STM32446E-EVAL evaluation board.
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Exported_Types STM32446E EVAL EEPROM Exported Types
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Exported_Constants STM32446E EVAL EEPROM Exported Constants
- * @{
- */
-/* EEPROM hardware address and page size */
-#define EEPROM_PAGESIZE ((uint8_t)4)
-#define EEPROM_MAX_SIZE ((uint16_t)0x2000) /* 64Kbit */
-
-
-/* Maximum number of trials for EEPROM_WaitEepromStandbyState() function */
-#define EEPROM_MAX_TRIALS ((uint32_t)3000)
-
-#define EEPROM_OK ((uint32_t)0)
-#define EEPROM_FAIL ((uint32_t)1)
-#define EEPROM_TIMEOUT ((uint32_t)2)
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Exported_Macros STM32446E EVAL EEPROM Exported Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_EEPROM_Exported_Functions STM32446E EVAL EEPROM Exported Functions
- * @{
- */
-uint32_t BSP_EEPROM_Init(void);
-uint8_t BSP_EEPROM_DeInit(void);
-uint32_t BSP_EEPROM_ReadBuffer(uint8_t* pBuffer, uint16_t ReadAddr, uint16_t* NumByteToRead);
-uint32_t BSP_EEPROM_WritePage(uint8_t* pBuffer, uint16_t WriteAddr, uint8_t* NumByteToWrite);
-uint32_t BSP_EEPROM_WriteBuffer(uint8_t* pBuffer, uint16_t WriteAddr, uint16_t NumByteToWrite);
-uint32_t BSP_EEPROM_WaitEepromStandbyState(void);
-
-/* USER Callbacks: This function is declared as __weak in EEPROM driver and
- should be implemented into user application.
- BSP_EEPROM_TIMEOUT_UserCallback() function is called whenever a timeout condition
- occurs during communication (waiting on an event that doesn't occur, bus
- errors, busy devices ...). */
-void BSP_EEPROM_TIMEOUT_UserCallback(void);
-
-/* Link function for I2C EEPROM peripheral */
-void EEPROM_IO_Init(void);
-HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_EEPROM_H */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_io.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_io.c
deleted file mode 100644
index 77190cd26e..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_io.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_io.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage the IO pins
- * on STM32446E-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the IO module of the STM32446E-EVAL evaluation
- board.
- - The MFXSTM32L152 IO expander device component driver must be included with this
- driver in order to run the IO functionalities commanded by the IO expander (MFX)
- device mounted on the evaluation board.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the IO module using the BSP_IO_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- communication layer configuration to start the IO functionalities use.
-
- + IO functionalities use
- o The IO pin mode is configured when calling the function BSP_IO_ConfigPin(), you
- must specify the desired IO mode by choosing the "IO_ModeTypedef" parameter
- predefined value.
- o If an IO pin is used in interrupt mode, the function BSP_IO_ITGetStatus() is
- needed to get the interrupt status. To clear the IT pending bits, you should
- call the function BSP_IO_ITClear() with specifying the IO pending bit to clear.
- o The IT is handled using the corresponding external interrupt IRQ handler,
- the user IT callback treatment is implemented on the same external interrupt
- callback.
- o The IRQ_OUT pin (common for all functionalities: TS, JOY, SD, etc) can be
- configured using the function BSP_IO_ConfigIrqOutPin()
- o To get/set an IO pin combination state you can use the functions
- BSP_IO_ReadPin()/BSP_IO_WritePin() or the function BSP_IO_TogglePin() to toggle the pin
- state.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_io.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_IO STM32446E EVAL IO
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_IO_Private_Types_Definitions STM32446E EVAL IO Private Types Definitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_IO_Private_Defines STM32446E EVAL IO Private Defines
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_IO_Private_Macros STM32446E EVAL IO Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_IO_Private_Variables STM32446E EVAL IO Private Variables
- * @{
- */
-static IO_DrvTypeDef *IoDrv = NULL;
-static uint8_t mfxstm32l152Identifier;
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_IO_Private_Function_Prototypes STM32446E EVAL IO Private Function Prototypes
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_IO_Private_Functions STM32446E EVAL IO Private Functions
- * @{
- */
-
-/**
- * @brief Initializes and configures the IO functionalities and configures all
- * necessary hardware resources (MFX, ...).
- * @note BSP_IO_Init() is using HAL_Delay() function to ensure that MFXSTM32L152
- * IO Expander is correctly reset. HAL_Delay() function provides accurate
- * delay (in milliseconds) based on variable incremented in SysTick ISR.
- * This implies that if BSP_IO_Init() is called from a peripheral ISR process,
- * then the SysTick interrupt must have higher priority (numerically lower)
- * than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
- * @retval IO_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_IO_Init(void)
-{
- uint8_t ret = IO_OK;
-
- if ( IoDrv == NULL)
- {
- /* Read ID and verify the IO expander is ready */
- mfxstm32l152Identifier=0;
- mfxstm32l152Identifier = mfxstm32l152_io_drv.ReadID(IO_I2C_ADDRESS);
- if((mfxstm32l152Identifier == MFXSTM32L152_ID_1) || (mfxstm32l152Identifier == MFXSTM32L152_ID_2))
- {
- /* Initialize the IO driver structure */
- IoDrv = &mfxstm32l152_io_drv;
- }
- else
- {
- ret = IO_ERROR;
- }
-
- if(ret == IO_OK)
- {
- IoDrv->Init(IO_I2C_ADDRESS);
- IoDrv->Start(IO_I2C_ADDRESS, IO_PIN_ALL);
- }
- }
-
- return ret;
-}
-
-/**
- * @brief DeInit allows Mfx Initialization to be executed again
- * @note BSP_IO_Init() has no effect if the IoDrv is already initialized
- * BSP_IO_DeInit() allows to erase the pointer such to allow init to be effective
- * @retval IO_OK
- */
-uint8_t BSP_IO_DeInit(void)
-{
- IoDrv = NULL;
- return IO_OK;
-}
-
-/**
- * @brief Gets the selected pins IT status.
- * @param IoPin: Selected pins to check the status.
- * This parameter can be any combination of the IO pins.
- * @retval IO_OK if read status OK. Other value if error.
- */
-uint32_t BSP_IO_ITGetStatus(uint32_t IoPin)
-{
- /* Return the IO Pin IT status */
- return (IoDrv->ITStatus(IO_I2C_ADDRESS, IoPin));
-}
-
-/**
- * @brief Clears all the IO IT pending bits.
- */
-void BSP_IO_ITClear(void)
-{
- /* Clear all IO IT pending bits */
- IoDrv->ClearIT(IO_I2C_ADDRESS, MFXSTM32L152_GPIO_PINS_ALL);
-}
-
-/**
- * @brief Configures the IO pin(s) according to IO mode structure value.
- * @param IoPin: IO pin(s) to be configured.
- * This parameter can be one of the following values:
- * @arg MFXSTM32L152_GPIO_PIN_x: where x can be from 0 to 23.
- * @param IoMode: IO pin mode to configure
- * This parameter can be one of the following values:
- * @arg IO_MODE_INPUT
- * @arg IO_MODE_OUTPUT
- * @arg IO_MODE_IT_RISING_EDGE
- * @arg IO_MODE_IT_FALLING_EDGE
- * @arg IO_MODE_IT_LOW_LEVEL
- * @arg IO_MODE_IT_HIGH_LEVEL
- * @arg IO_MODE_ANALOG
- * @arg IO_MODE_OFF
- * @arg IO_MODE_INPUT_PU,
- * @arg IO_MODE_INPUT_PD,
- * @arg IO_MODE_OUTPUT_OD,
- * @arg IO_MODE_OUTPUT_OD_PU,
- * @arg IO_MODE_OUTPUT_OD_PD,
- * @arg IO_MODE_OUTPUT_PP,
- * @arg IO_MODE_OUTPUT_PP_PU,
- * @arg IO_MODE_OUTPUT_PP_PD,
- * @arg IO_MODE_IT_RISING_EDGE_PU
- * @arg IO_MODE_IT_FALLING_EDGE_PU
- * @arg IO_MODE_IT_LOW_LEVEL_PU
- * @arg IO_MODE_IT_HIGH_LEVEL_PU
- * @arg IO_MODE_IT_RISING_EDGE_PD
- * @arg IO_MODE_IT_FALLING_EDGE_PD
- * @arg IO_MODE_IT_LOW_LEVEL_PD
- * @arg IO_MODE_IT_HIGH_LEVEL_PD
- * @retval IO_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_IO_ConfigPin(uint32_t IoPin, IO_ModeTypedef IoMode)
-{
- /* Configure the selected IO pin(s) mode */
- IoDrv->Config(IO_I2C_ADDRESS, IoPin, IoMode);
-
- return IO_OK;
-}
-
-/**
- * @brief Sets the IRQ_OUT pin polarity and type
- * @param IoIrqOutPinPolarity: High/Low
- * @param IoIrqOutPinType: OpenDrain/PushPull
- * @retval OK
- */
-uint8_t BSP_IO_ConfigIrqOutPin(uint8_t IoIrqOutPinPolarity, uint8_t IoIrqOutPinType)
-{
- if((mfxstm32l152Identifier == MFXSTM32L152_ID_1) || (mfxstm32l152Identifier == MFXSTM32L152_ID_2))
- {
- /* Initialize the IO driver structure */
- mfxstm32l152_SetIrqOutPinPolarity(IO_I2C_ADDRESS, IoIrqOutPinPolarity);
- mfxstm32l152_SetIrqOutPinType(IO_I2C_ADDRESS, IoIrqOutPinType);
- }
-
- return IO_OK;
-}
-
-/**
- * @brief Sets the selected pins state.
- * @param IoPin: Selected pins to write.
- * This parameter can be any combination of the IO pins.
- * @param PinState: New pins state to write
- */
-void BSP_IO_WritePin(uint32_t IoPin, BSP_IO_PinStateTypeDef PinState)
-{
- /* Set the Pin state */
- IoDrv->WritePin(IO_I2C_ADDRESS, IoPin, PinState);
-}
-
-/**
- * @brief Gets the selected pins current state.
- * @param IoPin: Selected pins to read.
- * This parameter can be any combination of the IO pins.
- * @retval The current pins state
- */
-uint32_t BSP_IO_ReadPin(uint32_t IoPin)
-{
- return(IoDrv->ReadPin(IO_I2C_ADDRESS, IoPin));
-}
-
-/**
- * @brief Toggles the selected pins state.
- * @param IoPin: Selected pins to toggle.
- * This parameter can be any combination of the IO pins.
- * @note This function is only used to toggle one pin in the same time
- */
-void BSP_IO_TogglePin(uint32_t IoPin)
-{
- /* Toggle the current pin state */
- if(IoDrv->ReadPin(IO_I2C_ADDRESS, IoPin) != 0) /* Set */
- {
- IoDrv->WritePin(IO_I2C_ADDRESS, IoPin, 0); /* Reset */
- }
- else
- {
- IoDrv->WritePin(IO_I2C_ADDRESS, IoPin, 1); /* Set */
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_io.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_io.h
deleted file mode 100644
index e88f5d3e27..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_io.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_io.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm32446e_eval_io.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32446E_EVAL_IO_H
-#define __STM32446E_EVAL_IO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval.h"
-/* Include IO component driver */
-#include "../Components/mfxstm32l152/mfxstm32l152.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_IO STM32446E EVAL IO
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_IO_Exported_Types STM32446E EVAL IO Exported Types
- * @{
- */
-
-typedef enum
-{
- BSP_IO_PIN_RESET = 0,
- BSP_IO_PIN_SET = 1
-}BSP_IO_PinStateTypeDef;
-
-typedef enum
-{
- IO_OK = 0,
- IO_ERROR = 1,
- IO_TIMEOUT = 2
-}IO_StatusTypeDef;
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_IO_Exported_Constants STM32446E EVAL IO Exported Constants
- * @{
- */
-#define IO_PIN_0 ((uint32_t)0x0001)
-#define IO_PIN_1 ((uint32_t)0x0002)
-#define IO_PIN_2 ((uint32_t)0x0004)
-#define IO_PIN_3 ((uint32_t)0x0008)
-#define IO_PIN_4 ((uint32_t)0x0010)
-#define IO_PIN_5 ((uint32_t)0x0020)
-#define IO_PIN_6 ((uint32_t)0x0040)
-#define IO_PIN_7 ((uint32_t)0x0080)
-#define IO_PIN_8 ((uint32_t)0x0100)
-#define IO_PIN_9 ((uint32_t)0x0200)
-#define IO_PIN_10 ((uint32_t)0x0400)
-#define IO_PIN_11 ((uint32_t)0x0800)
-#define IO_PIN_12 ((uint32_t)0x1000)
-#define IO_PIN_13 ((uint32_t)0x2000)
-#define IO_PIN_14 ((uint32_t)0x4000)
-#define IO_PIN_15 ((uint32_t)0x8000)
-#define IO_PIN_16 ((uint32_t)0x010000)
-#define IO_PIN_17 ((uint32_t)0x020000)
-#define IO_PIN_18 ((uint32_t)0x040000)
-#define IO_PIN_19 ((uint32_t)0x080000)
-#define IO_PIN_20 ((uint32_t)0x100000)
-#define IO_PIN_21 ((uint32_t)0x200000)
-#define IO_PIN_22 ((uint32_t)0x400000)
-#define IO_PIN_23 ((uint32_t)0x800000)
-#define IO_PIN_ALL ((uint32_t)0xFFFFFF)
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_IO_Exported_Macro STM32446E EVAL IO Exported Macro
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_IO_Exported_Functions STM32446E EVAL IO Exported Functions
- * @{
- */
-uint8_t BSP_IO_Init(void);
-uint8_t BSP_IO_DeInit(void);
-uint8_t BSP_IO_ConfigIrqOutPin(uint8_t IoIrqOutPinPolarity, uint8_t IoIrqOutPinType);
-uint32_t BSP_IO_ITGetStatus(uint32_t IoPin);
-void BSP_IO_ITClear(void);
-uint8_t BSP_IO_ConfigPin(uint32_t IoPin, IO_ModeTypedef IoMode);
-void BSP_IO_WritePin(uint32_t IoPin, BSP_IO_PinStateTypeDef PinState);
-uint32_t BSP_IO_ReadPin(uint32_t IoPin);
-void BSP_IO_TogglePin(uint32_t IoPin);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_IO_H */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_lcd.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_lcd.c
deleted file mode 100644
index 902693984b..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_lcd.c
+++ /dev/null
@@ -1,1026 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_lcd.c
- * @author MCD Application Team
- * @brief This file includes the driver for Liquid Crystal Display (LCD) module
- * mounted on STM32446E-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive indirectly an LCD TFT.
- - This driver supports the ILI9325 LCD mounted on MB785 daughter board
- - The ILI9325 component driver MUST be included with this driver.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the LCD using the BSP_LCD_Init() function.
-
- + Display on LCD
- o Clear the hole LCD using BSP_LCD_Clear() function or only one specified string
- line using the BSP_LCD_ClearStringLine() function.
- o Display a character on the specified line and column using the BSP_LCD_DisplayChar()
- function or a complete string line using the BSP_LCD_DisplayStringAtLine() function.
- o Display a string line on the specified position (x,y in pixel) and align mode
- using the BSP_LCD_DisplayStringAtLine() function.
- o Draw and fill a basic shapes (dot, line, rectangle, circle, ellipse, .. bitmap)
- on LCD using the available set of functions.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_lcd.h"
-#include "../../../Utilities/Fonts/fonts.h"
-#include "../../../Utilities/Fonts/font24.c"
-#include "../../../Utilities/Fonts/font20.c"
-#include "../../../Utilities/Fonts/font16.c"
-#include "../../../Utilities/Fonts/font12.c"
-#include "../../../Utilities/Fonts/font8.c"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_LCD STM32446E EVAL LCD
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_LCD_Private_TypesDefinitions STM32446E EVAL LCD Private TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LCD_Private_Defines STM32446E EVAL LCD Private Defines
- * @{
- */
-#define POLY_X(Z) ((int32_t)((Points + Z)->X))
-#define POLY_Y(Z) ((int32_t)((Points + Z)->Y))
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LCD_Private_Macros STM32446E EVAL LCD Private Macros
- * @{
- */
-#define ABS(X) ((X) > 0 ? (X) : -(X))
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LCD_Private_Variables STM32446E EVAL LCD Private Variables
- * @{
- */
-LCD_DrawPropTypeDef DrawProp;
-static LCD_DrvTypeDef *LcdDrv;
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LCD_Private_FunctionPrototypes STM32446E EVAL LCD Private FunctionPrototypes
- * @{
- */
-static void DrawChar(uint16_t Xpos, uint16_t Ypos, const uint8_t *c);
-static void SetDisplayWindow(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-static void FillTriangle(uint16_t x1, uint16_t x2, uint16_t x3, uint16_t y1, uint16_t y2, uint16_t y3);
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LCD_Private_Functions STM32446E EVAL LCD Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the LCD.
- * @retval LCD state
- */
-uint8_t BSP_LCD_Init(void)
-{
- uint8_t ret = LCD_ERROR;
-
- /* Default value for draw propriety */
- DrawProp.BackColor = 0xFFFF;
- DrawProp.pFont = &Font24;
- DrawProp.TextColor = 0x0000;
-
- if(ili9325_drv.ReadID() == ILI9325_ID)
- {
- LcdDrv = &ili9325_drv;
-
- /* LCD Init */
- LcdDrv->Init();
-
- /* Initialize the font */
- BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
-
- ret = LCD_OK;
- }
-
- return ret;
-}
-
-/**
- * @brief DeInitializes the LCD.
- * @retval LCD state
- */
-uint8_t BSP_LCD_DeInit(void)
-{
- /* Actually LcdDrv does not provide a DeInit function */
- return LCD_OK;
-}
-
-/**
- * @brief Gets the LCD X size.
- * @retval Used LCD X size
- */
-uint32_t BSP_LCD_GetXSize(void)
-{
- return(LcdDrv->GetLcdPixelWidth());
-}
-
-/**
- * @brief Gets the LCD Y size.
- * @retval Used LCD Y size
- */
-uint32_t BSP_LCD_GetYSize(void)
-{
- return(LcdDrv->GetLcdPixelHeight());
-}
-
-/**
- * @brief Gets the LCD text color.
- * @retval Used text color.
- */
-uint16_t BSP_LCD_GetTextColor(void)
-{
- return DrawProp.TextColor;
-}
-
-/**
- * @brief Gets the LCD background color.
- * @retval Used background color
- */
-uint16_t BSP_LCD_GetBackColor(void)
-{
- return DrawProp.BackColor;
-}
-
-/**
- * @brief Sets the LCD text color.
- * @param Color: Text color code RGB(5-6-5)
- */
-void BSP_LCD_SetTextColor(uint16_t Color)
-{
- DrawProp.TextColor = Color;
-}
-
-/**
- * @brief Sets the LCD background color.
- * @param Color: Background color code RGB(5-6-5)
- */
-void BSP_LCD_SetBackColor(uint16_t Color)
-{
- DrawProp.BackColor = Color;
-}
-
-/**
- * @brief Sets the LCD text font.
- * @param fonts: Font to be used
- */
-void BSP_LCD_SetFont(sFONT *fonts)
-{
- DrawProp.pFont = fonts;
-}
-
-/**
- * @brief Gets the LCD text font.
- * @retval Used font
- */
-sFONT *BSP_LCD_GetFont(void)
-{
- return DrawProp.pFont;
-}
-
-/**
- * @brief Clears the hole LCD.
- * @param Color: Color of the background
- */
-void BSP_LCD_Clear(uint16_t Color)
-{
- uint32_t counter = 0;
- uint32_t y_size = 0;
- uint32_t color_backup = DrawProp.TextColor;
-
- DrawProp.TextColor = Color;
- y_size = BSP_LCD_GetYSize();
-
- for(counter = 0; counter < y_size; counter++)
- {
- BSP_LCD_DrawHLine(0, counter, BSP_LCD_GetXSize());
- }
- DrawProp.TextColor = color_backup;
- BSP_LCD_SetTextColor(DrawProp.TextColor);
-}
-
-/**
- * @brief Clears the selected line.
- * @param Line: Line to be cleared
- * This parameter can be one of the following values:
- * @arg 0..9: if the Current fonts is Font16x24
- * @arg 0..19: if the Current fonts is Font12x12 or Font8x12
- * @arg 0..29: if the Current fonts is Font8x8
- */
-void BSP_LCD_ClearStringLine(uint16_t Line)
-{
- uint32_t color_backup = DrawProp.TextColor;
-
- DrawProp.TextColor = DrawProp.BackColor;;
-
- /* Draw a rectangle with background color */
- BSP_LCD_FillRect(0, (Line * DrawProp.pFont->Height), BSP_LCD_GetXSize(), DrawProp.pFont->Height);
-
- DrawProp.TextColor = color_backup;
- BSP_LCD_SetTextColor(DrawProp.TextColor);
-}
-
-/**
- * @brief Displays one character.
- * @param Xpos: Start column address
- * @param Ypos: Line where to display the character shape.
- * @param Ascii: Character ascii code
- * This parameter must be a number between Min_Data = 0x20 and Max_Data = 0x7E
- */
-void BSP_LCD_DisplayChar(uint16_t Xpos, uint16_t Ypos, uint8_t Ascii)
-{
- DrawChar(Xpos, Ypos, &DrawProp.pFont->table[(Ascii-' ') *\
- DrawProp.pFont->Height * ((DrawProp.pFont->Width + 7) / 8)]);
-}
-
-/**
- * @brief Displays characters on the LCD.
- * @param Xpos: X position (in pixel)
- * @param Ypos: Y position (in pixel)
- * @param Text: Pointer to string to display on LCD
- * @param Mode: Display mode
- * This parameter can be one of the following values:
- * @arg CENTER_MODE
- * @arg RIGHT_MODE
- * @arg LEFT_MODE
- */
-void BSP_LCD_DisplayStringAt(uint16_t Xpos, uint16_t Ypos, uint8_t *Text, Line_ModeTypdef Mode)
-{
- uint16_t refcolumn = 1, i = 0;
- uint32_t size = 0, xsize = 0;
- uint8_t *ptr = Text;
-
- /* Get the text size */
- while (*ptr++) size ++ ;
-
- /* Characters number per line */
- xsize = (BSP_LCD_GetXSize()/DrawProp.pFont->Width);
-
- switch (Mode)
- {
- case CENTER_MODE:
- {
- refcolumn = Xpos + ((xsize - size)* DrawProp.pFont->Width) / 2;
- break;
- }
- case LEFT_MODE:
- {
- refcolumn = Xpos;
- break;
- }
- case RIGHT_MODE:
- {
- refcolumn = - Xpos + ((xsize - size)*DrawProp.pFont->Width);
- break;
- }
- default:
- {
- refcolumn = Xpos;
- break;
- }
- }
-
- /* Check that the Start column is located in the screen */
- if ((refcolumn < 1) || (refcolumn >= 0x8000))
- {
- refcolumn = 1;
- }
-
- /* Send the string character by character on lCD */
- while ((*Text != 0) & (((BSP_LCD_GetXSize() - (i*DrawProp.pFont->Width)) & 0xFFFF) >= DrawProp.pFont->Width))
- {
- /* Display one character on LCD */
- BSP_LCD_DisplayChar(refcolumn, Ypos, *Text);
- /* Decrement the column position by 16 */
- refcolumn += DrawProp.pFont->Width;
- /* Point on the next character */
- Text++;
- i++;
- }
-}
-
-/**
- * @brief Displays a character on the LCD.
- * @param Line: Line where to display the character shape
- * This parameter can be one of the following values:
- * @arg 0..9: if the Current fonts is Font16x24
- * @arg 0..19: if the Current fonts is Font12x12 or Font8x12
- * @arg 0..29: if the Current fonts is Font8x8
- * @param ptr: Pointer to string to display on LCD
- */
-void BSP_LCD_DisplayStringAtLine(uint16_t Line, uint8_t *ptr)
-{
- BSP_LCD_DisplayStringAt(0, LINE(Line), ptr, LEFT_MODE);
-}
-
-/**
- * @brief Reads an LCD pixel.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @retval RGB pixel color
- */
-uint16_t BSP_LCD_ReadPixel(uint16_t Xpos, uint16_t Ypos)
-{
- uint16_t ret = 0;
-
- if(LcdDrv->ReadPixel != NULL)
- {
- ret = LcdDrv->ReadPixel(Xpos, Ypos);
- }
-
- return ret;
-}
-
-/**
- * @brief Draws a pixel on LCD.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param RGB_Code: Pixel color in RGB mode (5-6-5)
- */
-void BSP_LCD_DrawPixel(uint16_t Xpos, uint16_t Ypos, uint16_t RGB_Code)
-{
- if(LcdDrv->WritePixel != NULL)
- {
- LcdDrv->WritePixel(Xpos, Ypos, RGB_Code);
- }
-}
-
-/**
- * @brief Draws an horizontal line.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Length: Line length
- */
-void BSP_LCD_DrawHLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length)
-{
- uint32_t index = 0;
-
- if(LcdDrv->DrawHLine != NULL)
- {
- LcdDrv->DrawHLine(DrawProp.TextColor, Xpos, Ypos, Length);
- }
- else
- {
- for(index = 0; index < Length; index++)
- {
- BSP_LCD_DrawPixel((Xpos + index), Ypos, DrawProp.TextColor);
- }
- }
-}
-
-/**
- * @brief Draws a vertical line.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Length: Line length
- */
-void BSP_LCD_DrawVLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length)
-{
- uint32_t index = 0;
-
- if(LcdDrv->DrawVLine != NULL)
- {
- LcdDrv->DrawVLine(DrawProp.TextColor, Xpos, Ypos, Length);
- }
- else
- {
- for(index = 0; index < Length; index++)
- {
- BSP_LCD_DrawPixel(Xpos, Ypos + index, DrawProp.TextColor);
- }
- }
-}
-
-/**
- * @brief Draws an uni-line (between two points).
- * @param x1: Point 1 X position
- * @param y1: Point 1 Y position
- * @param x2: Point 2 X position
- * @param y2: Point 2 Y position
- */
-void BSP_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
-{
- int16_t deltax = 0, deltay = 0, x = 0, y = 0, xinc1 = 0, xinc2 = 0,
- yinc1 = 0, yinc2 = 0, den = 0, num = 0, numadd = 0, numpixels = 0,
- curpixel = 0;
-
- deltax = ABS(x2 - x1); /* The difference between the x's */
- deltay = ABS(y2 - y1); /* The difference between the y's */
- x = x1; /* Start x off at the first pixel */
- y = y1; /* Start y off at the first pixel */
-
- if (x2 >= x1) /* The x-values are increasing */
- {
- xinc1 = 1;
- xinc2 = 1;
- }
- else /* The x-values are decreasing */
- {
- xinc1 = -1;
- xinc2 = -1;
- }
-
- if (y2 >= y1) /* The y-values are increasing */
- {
- yinc1 = 1;
- yinc2 = 1;
- }
- else /* The y-values are decreasing */
- {
- yinc1 = -1;
- yinc2 = -1;
- }
-
- if (deltax >= deltay) /* There is at least one x-value for every y-value */
- {
- xinc1 = 0; /* Don't change the x when numerator >= denominator */
- yinc2 = 0; /* Don't change the y for every iteration */
- den = deltax;
- num = deltax / 2;
- numadd = deltay;
- numpixels = deltax; /* There are more x-values than y-values */
- }
- else /* There is at least one y-value for every x-value */
- {
- xinc2 = 0; /* Don't change the x for every iteration */
- yinc1 = 0; /* Don't change the y when numerator >= denominator */
- den = deltay;
- num = deltay / 2;
- numadd = deltax;
- numpixels = deltay; /* There are more y-values than x-values */
- }
-
- for (curpixel = 0; curpixel <= numpixels; curpixel++)
- {
- BSP_LCD_DrawPixel(x, y, DrawProp.TextColor); /* Draw the current pixel */
- num += numadd; /* Increase the numerator by the top of the fraction */
- if (num >= den) /* Check if numerator >= denominator */
- {
- num -= den; /* Calculate the new numerator value */
- x += xinc1; /* Change the x as appropriate */
- y += yinc1; /* Change the y as appropriate */
- }
- x += xinc2; /* Change the x as appropriate */
- y += yinc2; /* Change the y as appropriate */
- }
-}
-
-/**
- * @brief Draws a rectangle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Width: Rectangle width
- * @param Height: Rectangle height
- */
-void BSP_LCD_DrawRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- /* Draw horizontal lines */
- BSP_LCD_DrawHLine(Xpos, Ypos, Width);
- BSP_LCD_DrawHLine(Xpos, (Ypos+ Height), Width);
-
- /* Draw vertical lines */
- BSP_LCD_DrawVLine(Xpos, Ypos, Height);
- BSP_LCD_DrawVLine((Xpos + Width), Ypos, Height);
-}
-
-/**
- * @brief Draws a circle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Radius: Circle radius
- */
-void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
-{
- int32_t decision; /* Decision Variable */
- uint32_t current_x; /* Current X Value */
- uint32_t current_y; /* Current Y Value */
-
- decision = 3 - (Radius << 1);
- current_x = 0;
- current_y = Radius;
-
- while (current_x <= current_y)
- {
- BSP_LCD_DrawPixel((Xpos + current_x), (Ypos - current_y), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos - current_x), (Ypos - current_y), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos + current_y), (Ypos - current_x), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos - current_y), (Ypos - current_x), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos + current_x), (Ypos + current_y), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos - current_x), (Ypos + current_y), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos + current_y), (Ypos + current_x), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos - current_y), (Ypos + current_x), DrawProp.TextColor);
-
- /* Initialize the font */
- BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
-
- if (decision < 0)
- {
- decision += (current_x << 2) + 6;
- }
- else
- {
- decision += ((current_x - current_y) << 2) + 10;
- current_y--;
- }
- current_x++;
- }
-}
-
-/**
- * @brief Draws an poly-line (between many points).
- * @param Points: Pointer to the points array
- * @param PointCount: Number of points
- */
-void BSP_LCD_DrawPolygon(pPoint Points, uint16_t PointCount)
-{
- int16_t x = 0, y = 0;
-
- if(PointCount < 2)
- {
- return;
- }
-
- BSP_LCD_DrawLine(Points->X, Points->Y, (Points+PointCount-1)->X, (Points+PointCount-1)->Y);
-
- while(--PointCount)
- {
- x = Points->X;
- y = Points->Y;
- Points++;
- BSP_LCD_DrawLine(x, y, Points->X, Points->Y);
- }
-}
-
-/**
- * @brief Draws an ellipse on LCD.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param XRadius: Ellipse X radius
- * @param YRadius: Ellipse Y radius
- */
-void BSP_LCD_DrawEllipse(int Xpos, int Ypos, int XRadius, int YRadius)
-{
- int x = 0, y = -YRadius, err = 2-2*XRadius, e2;
- float k = 0, rad1 = 0, rad2 = 0;
-
- rad1 = XRadius;
- rad2 = YRadius;
-
- k = (float)(rad2/rad1);
-
- do {
- BSP_LCD_DrawPixel((Xpos-(uint16_t)(x/k)), (Ypos+y), DrawProp.TextColor);
- BSP_LCD_DrawPixel((Xpos+(uint16_t)(x/k)), (Ypos+y), DrawProp.TextColor);
- BSP_LCD_DrawPixel((Xpos+(uint16_t)(x/k)), (Ypos-y), DrawProp.TextColor);
- BSP_LCD_DrawPixel((Xpos-(uint16_t)(x/k)), (Ypos-y), DrawProp.TextColor);
-
- e2 = err;
- if (e2 <= x) {
- err += ++x*2+1;
- if (-y == x && e2 <= y) e2 = 0;
- }
- if (e2 > y) err += ++y*2+1;
- }
- while (y <= 0);
-}
-
-/**
- * @brief Draws a bitmap picture (16 bpp).
- * @param Xpos: Bmp X position in the LCD
- * @param Ypos: Bmp Y position in the LCD
- * @param pbmp: Pointer to Bmp picture address.
- */
-void BSP_LCD_DrawBitmap(uint16_t Xpos, uint16_t Ypos, uint8_t *pbmp)
-{
- uint32_t height = 0;
- uint32_t width = 0;
-
- /* Read bitmap width */
- width = pbmp[18] + (pbmp[19] << 8) + (pbmp[20] << 16) + (pbmp[21] << 24);
-
- /* Read bitmap height */
- height = pbmp[22] + (pbmp[23] << 8) + (pbmp[24] << 16) + (pbmp[25] << 24);
-
- SetDisplayWindow(Xpos, Ypos, width, height);
-
- if(LcdDrv->DrawBitmap != NULL)
- {
- LcdDrv->DrawBitmap(Xpos, Ypos, pbmp);
- }
- SetDisplayWindow(0, 0, BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
-}
-
-/**
- * @brief Draws RGB Image (16 bpp).
- * @param Xpos: X position in the LCD
- * @param Ypos: Y position in the LCD
- * @param Xsize: X size in the LCD
- * @param Ysize: Y size in the LCD
- * @param pdata: Pointer to the RGB Image address.
- */
-void BSP_LCD_DrawRGBImage(uint16_t Xpos, uint16_t Ypos, uint16_t Xsize, uint16_t Ysize, uint8_t *pdata)
-{
-
- SetDisplayWindow(Xpos, Ypos, Xsize, Ysize);
-
- if(LcdDrv->DrawRGBImage != NULL)
- {
- LcdDrv->DrawRGBImage(Xpos, Ypos, Xsize, Ysize, pdata);
- }
- SetDisplayWindow(0, 0, BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
-}
-
-/**
- * @brief Draws a full rectangle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Width: Rectangle width
- * @param Height: Rectangle height
- */
-void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- BSP_LCD_SetTextColor(DrawProp.TextColor);
- do
- {
- BSP_LCD_DrawHLine(Xpos, Ypos++, Width);
- }
- while(Height--);
-}
-
-/**
- * @brief Draws a full circle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Radius: Circle radius
- */
-void BSP_LCD_FillCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
-{
- int32_t decision; /* Decision Variable */
- uint32_t current_x; /* Current X Value */
- uint32_t current_y; /* Current Y Value */
-
- decision = 3 - (Radius << 1);
-
- current_x = 0;
- current_y = Radius;
-
- BSP_LCD_SetTextColor(DrawProp.TextColor);
-
- while (current_x <= current_y)
- {
- if(current_y > 0)
- {
- BSP_LCD_DrawHLine(Xpos - current_y, Ypos + current_x, 2*current_y);
- BSP_LCD_DrawHLine(Xpos - current_y, Ypos - current_x, 2*current_y);
- }
-
- if(current_x > 0)
- {
- BSP_LCD_DrawHLine(Xpos - current_x, Ypos - current_y, 2*current_x);
- BSP_LCD_DrawHLine(Xpos - current_x, Ypos + current_y, 2*current_x);
- }
- if (decision < 0)
- {
- decision += (current_x << 2) + 6;
- }
- else
- {
- decision += ((current_x - current_y) << 2) + 10;
- current_y--;
- }
- current_x++;
- }
-
- BSP_LCD_SetTextColor(DrawProp.TextColor);
- BSP_LCD_DrawCircle(Xpos, Ypos, Radius);
-}
-
-/**
- * @brief Draws a full poly-line (between many points).
- * @param Points: Pointer to the points array
- * @param PointCount: Number of points
- */
-void BSP_LCD_FillPolygon(pPoint Points, uint16_t PointCount)
-{
- int16_t X = 0, Y = 0, X2 = 0, Y2 = 0, X_center = 0, Y_center = 0, X_first = 0, Y_first = 0, pixelX = 0, pixelY = 0, counter = 0;
- uint16_t IMAGE_LEFT = 0, IMAGE_RIGHT = 0, IMAGE_TOP = 0, IMAGE_BOTTOM = 0;
-
- IMAGE_LEFT = IMAGE_RIGHT = Points->X;
- IMAGE_TOP= IMAGE_BOTTOM = Points->Y;
-
- for(counter = 1; counter < PointCount; counter++)
- {
- pixelX = POLY_X(counter);
- if(pixelX < IMAGE_LEFT)
- {
- IMAGE_LEFT = pixelX;
- }
- if(pixelX > IMAGE_RIGHT)
- {
- IMAGE_RIGHT = pixelX;
- }
-
- pixelY = POLY_Y(counter);
- if(pixelY < IMAGE_TOP)
- {
- IMAGE_TOP = pixelY;
- }
- if(pixelY > IMAGE_BOTTOM)
- {
- IMAGE_BOTTOM = pixelY;
- }
- }
-
- if(PointCount < 2)
- {
- return;
- }
-
- X_center = (IMAGE_LEFT + IMAGE_RIGHT)/2;
- Y_center = (IMAGE_BOTTOM + IMAGE_TOP)/2;
-
- X_first = Points->X;
- Y_first = Points->Y;
-
- while(--PointCount)
- {
- X = Points->X;
- Y = Points->Y;
- Points++;
- X2 = Points->X;
- Y2 = Points->Y;
-
- FillTriangle(X, X2, X_center, Y, Y2, Y_center);
- FillTriangle(X, X_center, X2, Y, Y_center, Y2);
- FillTriangle(X_center, X2, X, Y_center, Y2, Y);
- }
-
- FillTriangle(X_first, X2, X_center, Y_first, Y2, Y_center);
- FillTriangle(X_first, X_center, X2, Y_first, Y_center, Y2);
- FillTriangle(X_center, X2, X_first, Y_center, Y2, Y_first);
-}
-
-/**
- * @brief Draws a full ellipse.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param XRadius: Ellipse X radius
- * @param YRadius: Ellipse Y radius
- */
-void BSP_LCD_FillEllipse(int Xpos, int Ypos, int XRadius, int YRadius)
-{
- int x = 0, y = -YRadius, err = 2-2*XRadius, e2;
- float k = 0, rad1 = 0, rad2 = 0;
-
- rad1 = XRadius;
- rad2 = YRadius;
-
- k = (float)(rad2/rad1);
-
- do
- {
- BSP_LCD_DrawHLine((Xpos-(uint16_t)(x/k)), (Ypos+y), (2*(uint16_t)(x/k) + 1));
- BSP_LCD_DrawHLine((Xpos-(uint16_t)(x/k)), (Ypos-y), (2*(uint16_t)(x/k) + 1));
-
- e2 = err;
- if (e2 <= x)
- {
- err += ++x*2+1;
- if (-y == x && e2 <= y) e2 = 0;
- }
- if (e2 > y) err += ++y*2+1;
- }
- while (y <= 0);
-}
-
-/**
- * @brief Enables the display.
- */
-void BSP_LCD_DisplayOn(void)
-{
- LcdDrv->DisplayOn();
-}
-
-/**
- * @brief Disables the display.
- */
-void BSP_LCD_DisplayOff(void)
-{
- LcdDrv->DisplayOff();
-}
-
-/******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Draws a character on LCD.
- * @param Xpos: Line where to display the character shape
- * @param Ypos: Start column address
- * @param c: Pointer to the character data
- */
-static void DrawChar(uint16_t Xpos, uint16_t Ypos, const uint8_t *c)
-{
- uint32_t i = 0, j = 0;
- uint16_t height, width;
- uint8_t offset;
- uint8_t *pchar;
- uint32_t line;
-
- height = DrawProp.pFont->Height;
- width = DrawProp.pFont->Width;
-
- offset = 8 *((width + 7)/8) - width ;
-
- for(i = 0; i < height; i++)
- {
- pchar = ((uint8_t *)c + (width + 7)/8 * i);
-
- switch(((width + 7)/8))
- {
- case 1:
- line = pchar[0];
- break;
-
- case 2:
- line = (pchar[0]<< 8) | pchar[1];
- break;
-
- case 3:
- default:
- line = (pchar[0]<< 16) | (pchar[1]<< 8) | pchar[2];
- break;
- }
-
- for (j = 0; j < width; j++)
- {
- if(line & (1 << (width- j + offset- 1)))
- {
- BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp.TextColor);
- }
- else
- {
- BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp.BackColor);
- }
- }
- Ypos++;
- }
-}
-
-/**
- * @brief Sets display window.
- * @param Xpos: LCD X position
- * @param Ypos: LCD Y position
- * @param Width: LCD window width
- * @param Height: LCD window height
- */
-static void SetDisplayWindow(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- if(LcdDrv->SetDisplayWindow != NULL)
- {
- LcdDrv->SetDisplayWindow(Xpos, Ypos, Width, Height);
- }
-}
-
-/**
- * @brief Fills a triangle (between 3 points).
- * @param x1: Point 1 X position
- * @param y1: Point 1 Y position
- * @param x2: Point 2 X position
- * @param y2: Point 2 Y position
- * @param x3: Point 3 X position
- * @param y3: Point 3 Y position
- */
-static void FillTriangle(uint16_t x1, uint16_t x2, uint16_t x3, uint16_t y1, uint16_t y2, uint16_t y3)
-{
- int16_t deltax = 0, deltay = 0, x = 0, y = 0, xinc1 = 0, xinc2 = 0,
- yinc1 = 0, yinc2 = 0, den = 0, num = 0, numadd = 0, numpixels = 0,
- curpixel = 0;
-
- deltax = ABS(x2 - x1); /* The difference between the x's */
- deltay = ABS(y2 - y1); /* The difference between the y's */
- x = x1; /* Start x off at the first pixel */
- y = y1; /* Start y off at the first pixel */
-
- if (x2 >= x1) /* The x-values are increasing */
- {
- xinc1 = 1;
- xinc2 = 1;
- }
- else /* The x-values are decreasing */
- {
- xinc1 = -1;
- xinc2 = -1;
- }
-
- if (y2 >= y1) /* The y-values are increasing */
- {
- yinc1 = 1;
- yinc2 = 1;
- }
- else /* The y-values are decreasing */
- {
- yinc1 = -1;
- yinc2 = -1;
- }
-
- if (deltax >= deltay) /* There is at least one x-value for every y-value */
- {
- xinc1 = 0; /* Don't change the x when numerator >= denominator */
- yinc2 = 0; /* Don't change the y for every iteration */
- den = deltax;
- num = deltax / 2;
- numadd = deltay;
- numpixels = deltax; /* There are more x-values than y-values */
- }
- else /* There is at least one y-value for every x-value */
- {
- xinc2 = 0; /* Don't change the x for every iteration */
- yinc1 = 0; /* Don't change the y when numerator >= denominator */
- den = deltay;
- num = deltay / 2;
- numadd = deltax;
- numpixels = deltay; /* There are more y-values than x-values */
- }
-
- for (curpixel = 0; curpixel <= numpixels; curpixel++)
- {
- BSP_LCD_DrawLine(x, y, x3, y3);
-
- num += numadd; /* Increase the numerator by the top of the fraction */
- if (num >= den) /* Check if numerator >= denominator */
- {
- num -= den; /* Calculate the new numerator value */
- x += xinc1; /* Change the x as appropriate */
- y += yinc1; /* Change the y as appropriate */
- }
- x += xinc2; /* Change the x as appropriate */
- y += yinc2; /* Change the y as appropriate */
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_lcd.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_lcd.h
deleted file mode 100644
index 4d79eb722f..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_lcd.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_lcd.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm32446e_eval_lcd.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32446E_EVAL_LCD_H
-#define __STM32446E_EVAL_LCD_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval.h"
-#include "../Components/ili9325/ili9325.h"
-#include "../../../Utilities/Fonts/fonts.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL_LCD
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_LCD_Exported_Types STM32446E EVAL LCD Exported Types
- * @{
- */
-typedef struct
-{
- uint32_t TextColor;
- uint32_t BackColor;
- sFONT *pFont;
-}LCD_DrawPropTypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LCD_Exported_Constants STM32446E EVAL LCD Exported Constants
- * @{
- */
-/**
- * @brief LCD status structure definition
- */
-#define LCD_OK ((uint8_t)0x00)
-#define LCD_ERROR ((uint8_t)0x01)
-#define LCD_TIMEOUT ((uint8_t)0x02)
-
-typedef struct
-{
- int16_t X;
- int16_t Y;
-}Point, * pPoint;
-
-/**
- * @brief Line mode structures definition
- */
-typedef enum
-{
- CENTER_MODE = 0x01, /* Center mode */
- RIGHT_MODE = 0x02, /* Right mode */
- LEFT_MODE = 0x03 /* Left mode */
-}Line_ModeTypdef;
-
-/**
- * @brief LCD color
- */
-#define LCD_COLOR_BLUE ((uint16_t)0x001F)
-#define LCD_COLOR_GREEN ((uint16_t)0x07E0)
-#define LCD_COLOR_RED ((uint16_t)0xF800)
-#define LCD_COLOR_CYAN ((uint16_t)0x07FF)
-#define LCD_COLOR_MAGENTA ((uint16_t)0xF81F)
-#define LCD_COLOR_YELLOW ((uint16_t)0xFFE0)
-#define LCD_COLOR_LIGHTBLUE ((uint16_t)0x841F)
-#define LCD_COLOR_LIGHTGREEN ((uint16_t)0x87F0)
-#define LCD_COLOR_LIGHTRED ((uint16_t)0xFC10)
-#define LCD_COLOR_LIGHTMAGENTA ((uint16_t)0xFC1F)
-#define LCD_COLOR_LIGHTYELLOW ((uint16_t)0xFFF0)
-#define LCD_COLOR_DARKBLUE ((uint16_t)0x0010)
-#define LCD_COLOR_DARKGREEN ((uint16_t)0x0400)
-#define LCD_COLOR_DARKRED ((uint16_t)0x8000)
-#define LCD_COLOR_DARKCYAN ((uint16_t)0x0410)
-#define LCD_COLOR_DARKMAGENTA ((uint16_t)0x8010)
-#define LCD_COLOR_DARKYELLOW ((uint16_t)0x8400)
-#define LCD_COLOR_WHITE ((uint16_t)0xFFFF)
-#define LCD_COLOR_LIGHTGRAY ((uint16_t)0xD69A)
-#define LCD_COLOR_GRAY ((uint16_t)0x8410)
-#define LCD_COLOR_DARKGRAY ((uint16_t)0x4208)
-#define LCD_COLOR_BLACK ((uint16_t)0x0000)
-#define LCD_COLOR_BROWN ((uint16_t)0xA145)
-#define LCD_COLOR_ORANGE ((uint16_t)0xFD20)
-
-/**
- * @brief LCD default font
- */
-#define LCD_DEFAULT_FONT Font24
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_LCD_Exported_Functions STM32446E EVAL LCD Exported Functions
- * @{
- */
-uint8_t BSP_LCD_Init(void);
-uint8_t BSP_LCD_DeInit(void);
-uint32_t BSP_LCD_GetXSize(void);
-uint32_t BSP_LCD_GetYSize(void);
-
-uint16_t BSP_LCD_GetTextColor(void);
-uint16_t BSP_LCD_GetBackColor(void);
-void BSP_LCD_SetTextColor(__IO uint16_t Color);
-void BSP_LCD_SetBackColor(__IO uint16_t Color);
-void BSP_LCD_SetFont(sFONT *fonts);
-sFONT *BSP_LCD_GetFont(void);
-
-void BSP_LCD_Clear(uint16_t Color);
-void BSP_LCD_ClearStringLine(uint16_t Line);
-void BSP_LCD_DisplayStringAtLine(uint16_t Line, uint8_t *ptr);
-void BSP_LCD_DisplayStringAt(uint16_t Xpos, uint16_t Ypos, uint8_t *Text, Line_ModeTypdef Mode);
-void BSP_LCD_DisplayChar(uint16_t Xpos, uint16_t Ypos, uint8_t Ascii);
-
-uint16_t BSP_LCD_ReadPixel(uint16_t Xpos, uint16_t Ypos);
-void BSP_LCD_DrawPixel(uint16_t Xpos, uint16_t Ypos, uint16_t RGB_Code);
-void BSP_LCD_DrawHLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length);
-void BSP_LCD_DrawVLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length);
-void BSP_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
-void BSP_LCD_DrawRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius);
-void BSP_LCD_DrawPolygon(pPoint Points, uint16_t PointCount);
-void BSP_LCD_DrawEllipse(int Xpos, int Ypos, int XRadius, int YRadius);
-void BSP_LCD_DrawBitmap(uint16_t Xpos, uint16_t Ypos, uint8_t *pbmp);
-void BSP_LCD_DrawRGBImage(uint16_t Xpos, uint16_t Ypos, uint16_t Xsize, uint16_t Ysize, uint8_t *pbmp);
-void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-void BSP_LCD_FillCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius);
-void BSP_LCD_FillPolygon(pPoint Points, uint16_t PointCount);
-void BSP_LCD_FillEllipse(int Xpos, int Ypos, int XRadius, int YRadius);
-
-void BSP_LCD_DisplayOff(void);
-void BSP_LCD_DisplayOn(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_LCD_H */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_qspi.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_qspi.c
deleted file mode 100644
index ed093d1a52..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_qspi.c
+++ /dev/null
@@ -1,810 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_qspi.c
- * @author MCD Application Team
- * @brief This file includes a standard driver for the N25Q256A QSPI
- * memory mounted on STM32446E-EVAL board.
- *
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- @verbatim
- ==============================================================================
- ##### How to use this driver #####
- ==============================================================================
- [..]
- (#) This driver is used to drive the N25Q256A QSPI external
- memory mounted on STM32446E-EVAL evaluation board.
-
- (#) This driver need a specific component driver (N25Q256A) to be included with.
-
- (#) Initialization steps:
- (++) Initialize the QPSI external memory using the BSP_QSPI_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- QSPI interface with the external memory.
-
- (#) QSPI memory operations
- (++) QSPI memory can be accessed with read/write operations once it is
- initialized.
- Read/write operation can be performed with AHB access using the functions
- BSP_QSPI_Read()/BSP_QSPI_Write().
- (++) The function BSP_QSPI_GetInfo() returns the configuration of the QSPI memory.
- (see the QSPI memory data sheet)
- (++) Perform erase block operation using the function BSP_QSPI_Erase_Block() and by
- specifying the block address. You can perform an erase operation of the whole
- chip by calling the function BSP_QSPI_Erase_Chip().
- (++) The function BSP_QSPI_GetStatus() returns the current status of the QSPI memory.
- (see the QSPI memory data sheet)
- @endverbatim
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_qspi.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_QSPI STM32446E EVAL QSPI
- * @{
- */
-
-
-/* Private variables ---------------------------------------------------------*/
-
-/** @defgroup STM32446E_EVAL_QSPI_Private_Variables STM32446E EVAL QSPI Private Variables
- * @{
- */
-QSPI_HandleTypeDef QSPIHandle;
-
-/**
- * @}
- */
-
-
-
-/* Private functions ---------------------------------------------------------*/
-
-/** @defgroup STM32446E_EVAL_QSPI_Private_Functions STM32446E EVAL QSPI Private Functions
- * @{
- */
-static uint8_t QSPI_ResetMemory (QSPI_HandleTypeDef *hqspi);
-static uint8_t QSPI_EnterFourBytesAddress(QSPI_HandleTypeDef *hqspi);
-static uint8_t QSPI_DummyCyclesCfg (QSPI_HandleTypeDef *hqspi);
-static uint8_t QSPI_WriteEnable (QSPI_HandleTypeDef *hqspi);
-static uint8_t QSPI_AutoPollingMemReady(QSPI_HandleTypeDef *hqspi, uint32_t Timeout);
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_QSPI_Exported_Functions STM32446E EVAL QSPI Exported Functions
- * @{
- */
-
-/**
- * @brief Initializes the QSPI interface.
- * @retval QSPI memory status
- */
-uint8_t BSP_QSPI_Init(void)
-{
- QSPIHandle.Instance = QUADSPI;
-
- /* Call the DeInit function to reset the driver */
- if (HAL_QSPI_DeInit(&QSPIHandle) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* System level initialization */
- BSP_QSPI_MspInit(&QSPIHandle, NULL);
-
- /* QSPI initialization */
- QSPIHandle.Init.ClockPrescaler = 1; /* QSPI freq = 180 MHz/(1+1) = 90 Mhz */
- QSPIHandle.Init.FifoThreshold = 4;
- QSPIHandle.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE;
- QSPIHandle.Init.FlashSize = POSITION_VAL(N25Q256A_FLASH_SIZE) - 1;
- QSPIHandle.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_5_CYCLE; /* Min 50ns for nonRead commands */
- QSPIHandle.Init.ClockMode = QSPI_CLOCK_MODE_0;
- QSPIHandle.Init.FlashID = QSPI_FLASH_ID_1;
- QSPIHandle.Init.DualFlash = QSPI_DUALFLASH_DISABLE;
-
- if (HAL_QSPI_Init(&QSPIHandle) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* QSPI memory reset */
- if (QSPI_ResetMemory(&QSPIHandle) != QSPI_OK)
- {
- return QSPI_NOT_SUPPORTED;
- }
-
- /* Set the QSPI memory in 4-bytes address mode */
- if (QSPI_EnterFourBytesAddress(&QSPIHandle) != QSPI_OK)
- {
- return QSPI_NOT_SUPPORTED;
- }
-
- /* Configuration of the dummy cycles on QSPI memory side */
- if (QSPI_DummyCyclesCfg(&QSPIHandle) != QSPI_OK)
- {
- return QSPI_NOT_SUPPORTED;
- }
-
- return QSPI_OK;
-}
-
-/**
- * @brief De-Initializes the QSPI interface.
- * @retval QSPI memory status
- */
-uint8_t BSP_QSPI_DeInit(void)
-{
- QSPIHandle.Instance = QUADSPI;
-
- /* Call the DeInit function to reset the driver */
- if (HAL_QSPI_DeInit(&QSPIHandle) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* System level De-initialization */
- BSP_QSPI_MspDeInit(&QSPIHandle, NULL);
-
- return QSPI_OK;
-}
-
-/**
- * @brief Reads an amount of data from the QSPI memory.
- * @param pData: Pointer to data to be read
- * @param ReadAddr: Read start address
- * @param Size: Size of data to read
- * @retval QSPI memory status
- */
-uint8_t BSP_QSPI_Read(uint8_t* pData, uint32_t ReadAddr, uint32_t Size)
-{
- QSPI_CommandTypeDef s_command;
-
- /* Initialize the read command */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = QUAD_INOUT_FAST_READ_CMD;
- s_command.AddressMode = QSPI_ADDRESS_4_LINES;
- s_command.AddressSize = QSPI_ADDRESS_32_BITS;
- s_command.Address = ReadAddr;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_4_LINES;
- s_command.DummyCycles = N25Q256A_DUMMY_CYCLES_READ_QUAD;
- s_command.NbData = Size;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- /* Configure the command */
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Set S# timing for Read command: Min 20ns for N25Q256A memory */
- MODIFY_REG(QSPIHandle.Instance->DCR, QUADSPI_DCR_CSHT, QSPI_CS_HIGH_TIME_2_CYCLE);
-
- /* Reception of the data */
- if (HAL_QSPI_Receive(&QSPIHandle, pData, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Restore S# timing for nonRead commands */
- MODIFY_REG(QSPIHandle.Instance->DCR, QUADSPI_DCR_CSHT, QSPI_CS_HIGH_TIME_5_CYCLE);
-
- return QSPI_OK;
-}
-
-/**
- * @brief Writes an amount of data to the QSPI memory.
- * @param pData: Pointer to data to be written
- * @param WriteAddr: Write start address
- * @param Size: Size of data to write
- * @retval QSPI memory status
- */
-uint8_t BSP_QSPI_Write(uint8_t* pData, uint32_t WriteAddr, uint32_t Size)
-{
- QSPI_CommandTypeDef s_command;
- uint32_t end_addr, current_size, current_addr;
-
- /* Calculation of the size between the write address and the end of the page */
- current_size = N25Q256A_PAGE_SIZE - (WriteAddr % N25Q256A_PAGE_SIZE);
-
- /* Check if the size of the data is less than the remaining place in the page */
- if (current_size > Size)
- {
- current_size = Size;
- }
-
- /* Initialize the address variables */
- current_addr = WriteAddr;
- end_addr = WriteAddr + Size;
-
- /* Initialize the program command */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = EXT_QUAD_IN_FAST_PROG_CMD;
- s_command.AddressMode = QSPI_ADDRESS_4_LINES;
- s_command.AddressSize = QSPI_ADDRESS_32_BITS;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_4_LINES;
- s_command.DummyCycles = 0;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- /* Perform the write page by page */
- do
- {
- s_command.Address = current_addr;
- s_command.NbData = current_size;
-
- /* Enable write operations */
- if (QSPI_WriteEnable(&QSPIHandle) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Configure the command */
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Transmission of the data */
- if (HAL_QSPI_Transmit(&QSPIHandle, pData, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Configure automatic polling mode to wait for end of program */
- if (QSPI_AutoPollingMemReady(&QSPIHandle, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Update the address and size variables for next page programming */
- current_addr += current_size;
- pData += current_size;
- current_size = ((current_addr + N25Q256A_PAGE_SIZE) > end_addr) ? (end_addr - current_addr) : N25Q256A_PAGE_SIZE;
- } while (current_addr < end_addr);
-
- return QSPI_OK;
-}
-
-/**
- * @brief Erases the specified block of the QSPI memory.
- * @param BlockAddress: Block address to erase
- * @retval QSPI memory status
- */
-uint8_t BSP_QSPI_Erase_Block(uint32_t BlockAddress)
-{
- QSPI_CommandTypeDef s_command;
-
- /* Initialize the erase command */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = SUBSECTOR_ERASE_CMD;
- s_command.AddressMode = QSPI_ADDRESS_1_LINE;
- s_command.AddressSize = QSPI_ADDRESS_32_BITS;
- s_command.Address = BlockAddress;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_NONE;
- s_command.DummyCycles = 0;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- /* Enable write operations */
- if (QSPI_WriteEnable(&QSPIHandle) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Send the command */
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Configure automatic polling mode to wait for end of erase */
- if (QSPI_AutoPollingMemReady(&QSPIHandle, N25Q256A_SUBSECTOR_ERASE_MAX_TIME) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- return QSPI_OK;
-}
-
-/**
- * @brief Erases the entire QSPI memory.
- * @retval QSPI memory status
- */
-uint8_t BSP_QSPI_Erase_Chip(void)
-{
- QSPI_CommandTypeDef s_command;
-
- /* Initialize the erase command */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = BULK_ERASE_CMD;
- s_command.AddressMode = QSPI_ADDRESS_NONE;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_NONE;
- s_command.DummyCycles = 0;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- /* Enable write operations */
- if (QSPI_WriteEnable(&QSPIHandle) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Send the command */
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Configure automatic polling mode to wait for end of erase */
- if (QSPI_AutoPollingMemReady(&QSPIHandle, N25Q256A_BULK_ERASE_MAX_TIME) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- return QSPI_OK;
-}
-
-/**
- * @brief Reads current status of the QSPI memory.
- * @retval QSPI memory status
- */
-uint8_t BSP_QSPI_GetStatus(void)
-{
- QSPI_CommandTypeDef s_command;
- uint8_t reg;
-
- /* Initialize the read flag status register command */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = READ_FLAG_STATUS_REG_CMD;
- s_command.AddressMode = QSPI_ADDRESS_NONE;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_1_LINE;
- s_command.DummyCycles = 0;
- s_command.NbData = 1;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- /* Configure the command */
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Reception of the data */
- if (HAL_QSPI_Receive(&QSPIHandle, ®, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Check the value of the register */
- if ((reg & (N25Q256A_FSR_PRERR | N25Q256A_FSR_VPPERR | N25Q256A_FSR_PGERR | N25Q256A_FSR_ERERR)) != 0)
- {
- return QSPI_ERROR;
- }
- else if ((reg & (N25Q256A_FSR_PGSUS | N25Q256A_FSR_ERSUS)) != 0)
- {
- return QSPI_SUSPENDED;
- }
- else if ((reg & N25Q256A_FSR_READY) != 0)
- {
- return QSPI_OK;
- }
- else
- {
- return QSPI_BUSY;
- }
-}
-
-/**
- * @brief Return the configuration of the QSPI memory.
- * @param pInfo: pointer on the configuration structure
- * @retval QSPI memory status
- */
-uint8_t BSP_QSPI_GetInfo(QSPI_Info* pInfo)
-{
- /* Configure the structure with the memory configuration */
- pInfo->FlashSize = N25Q256A_FLASH_SIZE;
- pInfo->EraseSectorSize = N25Q256A_SUBSECTOR_SIZE;
- pInfo->EraseSectorsNumber = (N25Q256A_FLASH_SIZE/N25Q256A_SUBSECTOR_SIZE);
- pInfo->ProgPageSize = N25Q256A_PAGE_SIZE;
- pInfo->ProgPagesNumber = (N25Q256A_FLASH_SIZE/N25Q256A_PAGE_SIZE);
-
- return QSPI_OK;
-}
-
-/**
- * @brief Configure the QSPI in memory-mapped mode
- * @retval QSPI memory status
- */
-uint8_t BSP_QSPI_EnableMemoryMappedMode(void)
-{
- QSPI_CommandTypeDef s_command;
- QSPI_MemoryMappedTypeDef s_mem_mapped_cfg;
-
- /* Configure the command for the read instruction */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = QUAD_INOUT_FAST_READ_CMD;
- s_command.AddressMode = QSPI_ADDRESS_4_LINES;
- s_command.AddressSize = QSPI_ADDRESS_32_BITS;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_4_LINES;
- s_command.DummyCycles = N25Q256A_DUMMY_CYCLES_READ_QUAD;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- /* Configure the memory mapped mode */
- s_mem_mapped_cfg.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
-
- if (HAL_QSPI_MemoryMapped(&QSPIHandle, &s_command, &s_mem_mapped_cfg) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- return QSPI_OK;
-}
-
-/**
- * @}
- */
-
-/** @addtogroup STM32446E_EVAL_QSPI_Private_Functions
- * @{
- */
-
-/**
- * @brief QSPI MSP Initialization
- * This function configures the hardware resources used in this example:
- * - Peripheral's clock enable
- * - Peripheral's GPIO Configuration
- * - NVIC configuration for QSPI interrupt
- * @retval None
- */
-__weak void BSP_QSPI_MspInit(QSPI_HandleTypeDef *hqspi, void *Params)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /*##-1- Enable peripherals and GPIO Clocks #################################*/
- /* Enable the QuadSPI memory interface clock */
- QSPI_CLK_ENABLE();
- /* Reset the QuadSPI memory interface */
- QSPI_FORCE_RESET();
- QSPI_RELEASE_RESET();
- /* Enable GPIO clocks */
- QSPI_CS_GPIO_CLK_ENABLE();
- QSPI_CLK_GPIO_CLK_ENABLE();
- QSPI_Dx_GPIO_CLK_ENABLE();
-
- /*##-2- Configure peripheral GPIO ##########################################*/
- /* QSPI CS GPIO pin configuration */
- gpio_init_structure.Pin = QSPI_CS_PIN;
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
- gpio_init_structure.Alternate = GPIO_AF10_QSPI;
- HAL_GPIO_Init(QSPI_CS_GPIO_PORT, &gpio_init_structure);
-
- /* QSPI CLK GPIO pin configuration */
- gpio_init_structure.Pin = QSPI_CLK_PIN;
- gpio_init_structure.Pull = GPIO_NOPULL;
- gpio_init_structure.Alternate = GPIO_AF9_QSPI;
- HAL_GPIO_Init(QSPI_CLK_GPIO_PORT, &gpio_init_structure);
-
- /* QSPI D0 GPIO pin configuration */
- gpio_init_structure.Pin = QSPI_D0_PIN;
- gpio_init_structure.Alternate = GPIO_AF10_QSPI;
- HAL_GPIO_Init(QSPI_D0_GPIO_PORT, &gpio_init_structure);
-
- /* QSPI D1 GPIO pin configuration */
- gpio_init_structure.Pin = QSPI_D1_PIN;
- gpio_init_structure.Alternate = GPIO_AF10_QSPI;
- HAL_GPIO_Init(QSPI_D1_GPIO_PORT, &gpio_init_structure);
-
- /* QSPI D2 GPIO pin configuration */
- gpio_init_structure.Pin = QSPI_D2_PIN;
- gpio_init_structure.Alternate = GPIO_AF9_QSPI;
- HAL_GPIO_Init(QSPI_D2_GPIO_PORT, &gpio_init_structure);
-
- /* QSPI D3 GPIO pin configuration */
- gpio_init_structure.Pin = QSPI_D3_PIN;
- gpio_init_structure.Alternate = GPIO_AF9_QSPI;
- HAL_GPIO_Init(QSPI_D3_GPIO_PORT, &gpio_init_structure);
-}
-
-
-/**
- * @brief QSPI MSP De-Initialization
- * This function frees the hardware resources used in this example:
- * - Disable the Peripheral's clock
- * - Revert GPIO and NVIC configuration to their default state
- * @retval None
- */
-__weak void BSP_QSPI_MspDeInit(QSPI_HandleTypeDef *hqspi, void *Params)
-{
- /*##-1- Disable the NVIC for QSPI ###########################################*/
- HAL_NVIC_DisableIRQ(QUADSPI_IRQn);
-
- /*##-2- Disable peripherals and GPIO Clocks ################################*/
- /* De-Configure QSPI specific pins (not common to any other blocks) */
- HAL_GPIO_DeInit(QSPI_D0_GPIO_PORT, QSPI_D0_PIN);
- HAL_GPIO_DeInit(QSPI_D1_GPIO_PORT, QSPI_D1_PIN);
- HAL_GPIO_DeInit(QSPI_D2_GPIO_PORT, QSPI_D2_PIN);
- HAL_GPIO_DeInit(QSPI_D3_GPIO_PORT, QSPI_D3_PIN);
-
- /*##-3- Reset peripherals ##################################################*/
- /* Reset the QuadSPI memory interface */
- QSPI_FORCE_RESET();
- QSPI_RELEASE_RESET();
-
- /* Disable the QuadSPI memory interface clock */
- QSPI_CLK_DISABLE();
-}
-
-/**
- * @brief This function reset the QSPI memory.
- * @param hqspi: QSPI handle
- * @retval None
- */
-static uint8_t QSPI_ResetMemory(QSPI_HandleTypeDef *hqspi)
-{
- QSPI_CommandTypeDef s_command;
-
- /* Initialize the reset enable command */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = RESET_ENABLE_CMD;
- s_command.AddressMode = QSPI_ADDRESS_NONE;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_NONE;
- s_command.DummyCycles = 0;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- /* Send the command */
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Send the reset memory command */
- s_command.Instruction = RESET_MEMORY_CMD;
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Configure automatic polling mode to wait the memory is ready */
- if (QSPI_AutoPollingMemReady(&QSPIHandle, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- return QSPI_OK;
-}
-
-/**
- * @brief This function set the QSPI memory in 4-byte address mode
- * @param hqspi: QSPI handle
- * @retval None
- */
-static uint8_t QSPI_EnterFourBytesAddress(QSPI_HandleTypeDef *hqspi)
-{
- QSPI_CommandTypeDef s_command;
-
- /* Initialize the command */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = ENTER_4_BYTE_ADDR_MODE_CMD;
- s_command.AddressMode = QSPI_ADDRESS_NONE;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_NONE;
- s_command.DummyCycles = 0;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- /* Enable write operations */
- if (QSPI_WriteEnable(&QSPIHandle) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Send the command */
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Configure automatic polling mode to wait the memory is ready */
- if (QSPI_AutoPollingMemReady(&QSPIHandle, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- return QSPI_OK;
-}
-
-/**
- * @brief This function configure the dummy cycles on memory side.
- * @param hqspi: QSPI handle
- * @retval None
- */
-static uint8_t QSPI_DummyCyclesCfg(QSPI_HandleTypeDef *hqspi)
-{
- QSPI_CommandTypeDef s_command;
- uint8_t reg;
-
- /* Initialize the read volatile configuration register command */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = READ_VOL_CFG_REG_CMD;
- s_command.AddressMode = QSPI_ADDRESS_NONE;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_1_LINE;
- s_command.DummyCycles = 0;
- s_command.NbData = 1;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- /* Configure the command */
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Reception of the data */
- if (HAL_QSPI_Receive(&QSPIHandle, ®, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Enable write operations */
- if (QSPI_WriteEnable(&QSPIHandle) != QSPI_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Update volatile configuration register (with new dummy cycles) */
- s_command.Instruction = WRITE_VOL_CFG_REG_CMD;
- MODIFY_REG(reg, N25Q256A_VCR_NB_DUMMY, (N25Q256A_DUMMY_CYCLES_READ_QUAD << POSITION_VAL(N25Q256A_VCR_NB_DUMMY)));
-
- /* Configure the write volatile configuration register command */
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Transmission of the data */
- if (HAL_QSPI_Transmit(&QSPIHandle, ®, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- return QSPI_OK;
-}
-
-/**
- * @brief This function send a Write Enable and wait it is effective.
- * @param hqspi: QSPI handle
- * @retval None
- */
-static uint8_t QSPI_WriteEnable(QSPI_HandleTypeDef *hqspi)
-{
- QSPI_CommandTypeDef s_command;
- QSPI_AutoPollingTypeDef s_config;
-
- /* Enable write operations */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = WRITE_ENABLE_CMD;
- s_command.AddressMode = QSPI_ADDRESS_NONE;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_NONE;
- s_command.DummyCycles = 0;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- if (HAL_QSPI_Command(&QSPIHandle, &s_command, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- /* Configure automatic polling mode to wait for write enabling */
- s_config.Match = N25Q256A_SR_WREN;
- s_config.Mask = N25Q256A_SR_WREN;
- s_config.MatchMode = QSPI_MATCH_MODE_AND;
- s_config.StatusBytesSize = 1;
- s_config.Interval = 0x10;
- s_config.AutomaticStop = QSPI_AUTOMATIC_STOP_ENABLE;
-
- s_command.Instruction = READ_STATUS_REG_CMD;
- s_command.DataMode = QSPI_DATA_1_LINE;
-
- if (HAL_QSPI_AutoPolling(&QSPIHandle, &s_command, &s_config, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- return QSPI_OK;
-}
-
-/**
- * @brief This function read the SR of the memory and wait the EOP.
- * @param hqspi: QSPI handle
- * @param Timeout: timeout value
- * @retval None
- */
-static uint8_t QSPI_AutoPollingMemReady(QSPI_HandleTypeDef *hqspi, uint32_t Timeout)
-{
- QSPI_CommandTypeDef s_command;
- QSPI_AutoPollingTypeDef s_config;
-
- /* Configure automatic polling mode to wait for memory ready */
- s_command.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- s_command.Instruction = READ_STATUS_REG_CMD;
- s_command.AddressMode = QSPI_ADDRESS_NONE;
- s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- s_command.DataMode = QSPI_DATA_1_LINE;
- s_command.DummyCycles = 0;
- s_command.DdrMode = QSPI_DDR_MODE_DISABLE;
- s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
-
- s_config.Match = 0;
- s_config.Mask = N25Q256A_SR_WIP;
- s_config.MatchMode = QSPI_MATCH_MODE_AND;
- s_config.StatusBytesSize = 1;
- s_config.Interval = 0x10;
- s_config.AutomaticStop = QSPI_AUTOMATIC_STOP_ENABLE;
-
- if (HAL_QSPI_AutoPolling(&QSPIHandle, &s_command, &s_config, Timeout) != HAL_OK)
- {
- return QSPI_ERROR;
- }
-
- return QSPI_OK;
-}
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_qspi.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_qspi.h
deleted file mode 100644
index 9bbc48263f..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_qspi.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_qspi.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm32446e_eval_qspi.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32446E_EVAL_QSPI_H
-#define __STM32446E_EVAL_QSPI_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-#include "../Components/n25q256a/n25q256a.h"
-
-/** @defgroup STM32446E_EVAL_QSPI STM32446E EVAL QSPI
- * @{
- */
-
-
-/* Exported constants --------------------------------------------------------*/
-/** @defgroup STM32446E_EVAL_QSPI_Exported_Constants STM32446E EVAL QSPI Exported Constants
- * @{
- */
-/* QSPI Error codes */
-#define QSPI_OK ((uint8_t)0x00)
-#define QSPI_ERROR ((uint8_t)0x01)
-#define QSPI_BUSY ((uint8_t)0x02)
-#define QSPI_NOT_SUPPORTED ((uint8_t)0x04)
-#define QSPI_SUSPENDED ((uint8_t)0x08)
-
-
-/* Definition for QSPI clock resources */
-#define QSPI_CLK_ENABLE() __HAL_RCC_QSPI_CLK_ENABLE()
-#define QSPI_CLK_DISABLE() __HAL_RCC_QSPI_CLK_DISABLE()
-#define QSPI_CS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
-#define QSPI_CS_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
-#if !defined(USE_STM32446E_EVAL_REVA)
-#define QSPI_CLK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define QSPI_CLK_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-#else
-#define QSPI_CLK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-#define QSPI_CLK_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
-#endif // !USE_STM32446E_EVAL_REVA
-#define QSPI_Dx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE()
-#define QSPI_Dx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOF_CLK_DISABLE()
-
-#define QSPI_FORCE_RESET() __HAL_RCC_QSPI_FORCE_RESET()
-#define QSPI_RELEASE_RESET() __HAL_RCC_QSPI_RELEASE_RESET()
-
-/* Definition for QSPI Pins */
-#define QSPI_CS_PIN GPIO_PIN_6
-#define QSPI_CS_GPIO_PORT GPIOG
-#if !defined(USE_STM32446E_EVAL_REVA)
-#define QSPI_CLK_PIN GPIO_PIN_3
-#define QSPI_CLK_GPIO_PORT GPIOD
-#else
-#define QSPI_CLK_PIN GPIO_PIN_2
-#define QSPI_CLK_GPIO_PORT GPIOB
-#endif // !USE_STM32446E_EVAL_REVA
-#define QSPI_D0_PIN GPIO_PIN_8
-#define QSPI_D0_GPIO_PORT GPIOF
-#define QSPI_D1_PIN GPIO_PIN_9
-#define QSPI_D1_GPIO_PORT GPIOF
-#define QSPI_D2_PIN GPIO_PIN_7
-#define QSPI_D2_GPIO_PORT GPIOF
-#define QSPI_D3_PIN GPIO_PIN_6
-#define QSPI_D3_GPIO_PORT GPIOF
-
-
-/**
- * @}
- */
-
-/* Exported types ------------------------------------------------------------*/
-/** @defgroup STM32446E_EVAL_QSPI_Exported_Types STM32446E EVAL QSPI Exported Types
- * @{
- */
-/* QSPI Info */
-typedef struct {
- uint32_t FlashSize; /*!< Size of the flash */
- uint32_t EraseSectorSize; /*!< Size of sectors for the erase operation */
- uint32_t EraseSectorsNumber; /*!< Number of sectors for the erase operation */
- uint32_t ProgPageSize; /*!< Size of pages for the program operation */
- uint32_t ProgPagesNumber; /*!< Number of pages for the program operation */
-} QSPI_Info;
-
-/**
- * @}
- */
-
-
-/* Exported functions --------------------------------------------------------*/
-/** @defgroup STM32446E_EVAL_QSPI_Exported_Functions STM32446E EVAL QSPI Exported Functions
- * @{
- */
-uint8_t BSP_QSPI_Init (void);
-uint8_t BSP_QSPI_DeInit (void);
-uint8_t BSP_QSPI_Read (uint8_t* pData, uint32_t ReadAddr, uint32_t Size);
-uint8_t BSP_QSPI_Write (uint8_t* pData, uint32_t WriteAddr, uint32_t Size);
-uint8_t BSP_QSPI_Erase_Block(uint32_t BlockAddress);
-uint8_t BSP_QSPI_Erase_Chip (void);
-uint8_t BSP_QSPI_GetStatus (void);
-uint8_t BSP_QSPI_GetInfo (QSPI_Info* pInfo);
-uint8_t BSP_QSPI_EnableMemoryMappedMode(void);
-/* BSP Aliased function maintained for legacy purpose */
-#define BSP_QSPI_MemoryMappedMode BSP_QSPI_EnableMemoryMappedMode
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_QSPI_MspInit(QSPI_HandleTypeDef *hqspi, void *Params);
-void BSP_QSPI_MspDeInit(QSPI_HandleTypeDef *hqspi, void *Params);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_QSPI_H */
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sd.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sd.c
deleted file mode 100644
index 297aba0ed1..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sd.c
+++ /dev/null
@@ -1,580 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_sd.c
- * @author MCD Application Team
- * @brief This file includes the uSD card driver mounted on STM32446E-EVAL
- * evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the micro SD external card mounted on STM32446E-EVAL
- evaluation board.
- - This driver does not need a specific component driver for the micro SD device
- to be included with.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the micro SD card using the BSP_SD_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- SDIO interface configuration to interface with the external micro SD. It
- also includes the micro SD initialization sequence.
- o To check the SD card presence you can use the function BSP_SD_IsDetected() which
- returns the detection status
- o If SD presence detection interrupt mode is desired, you must configure the
- SD detection interrupt mode by calling the function BSP_SD_ITConfig(). The interrupt
- is generated as an external interrupt whenever the micro SD card is
- plugged/unplugged in/from the evaluation board.
- o The function BSP_SD_GetCardInfo() is used to get the micro SD card information
- which is stored in the structure "HAL_SD_CardInfoTypeDef".
-
- + Micro SD card operations
- o The micro SD card can be accessed with read/write block(s) operations once
- it is ready for access. The access can be performed whether using the polling
- mode by calling the functions BSP_SD_ReadBlocks()/BSP_SD_WriteBlocks(), or by DMA
- transfer using the functions BSP_SD_ReadBlocks_DMA()/BSP_SD_WriteBlocks_DMA()
- o The DMA transfer complete is used with interrupt mode. Once the SD transfer
- is complete, the SD interrupt is handled using the function BSP_SD_IRQHandler(),
- the DMA Tx/Rx transfer complete are handled using the functions
- BSP_SD_DMA_Tx_IRQHandler()/BSP_SD_DMA_Rx_IRQHandler(). The corresponding user callbacks
- are implemented by the user at application level.
- o The SD erase block(s) is performed using the function BSP_SD_Erase() with specifying
- the number of blocks to erase.
- o The SD runtime status is returned when calling the function BSP_SD_GetCardState().
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_sd.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_SD STM32446E EVAL SD
- * @{
- */
-
-
-/** @defgroup STM32446E_EVAL_SD_Private_TypesDefinitions STM32446E EVAL SD Private TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SD_Private_Defines STM32446E EVAL SD Private Defines
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SD_Private_Macros STM32446E EVAL SD Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SD_Private_Variables STM32446E EVAL SD Private Variables
- * @{
- */
-SD_HandleTypeDef uSdHandle;
-static uint8_t UseExtiModeDetection = 0;
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SD_Private_FunctionPrototypes STM32446E EVAL SD Private FunctionPrototypes
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SD_Private_Functions STM32446E EVAL SD Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the SD card device.
- * @retval SD status
- */
-uint8_t BSP_SD_Init(void)
-{
- uint8_t sd_state = MSD_OK;
-
- /* uSD device interface configuration */
- uSdHandle.Instance = SDIO;
-
- uSdHandle.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
- uSdHandle.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
- uSdHandle.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
- uSdHandle.Init.BusWide = SDIO_BUS_WIDE_1B;
- uSdHandle.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE;
- uSdHandle.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV;
-
- /* Initialize IO functionalities (MFX) used by SD detect pin */
- BSP_IO_Init();
-
- /* Check if the SD card is plugged in the slot */
- BSP_IO_ConfigPin(SD_DETECT_PIN, IO_MODE_INPUT);
- if(BSP_SD_IsDetected() != SD_PRESENT)
- {
- return MSD_ERROR_SD_NOT_PRESENT;
- }
-
- /* Msp SD initialization */
- BSP_SD_MspInit(&uSdHandle, NULL);
-
- /* HAL SD initialization */
- if(HAL_SD_Init(&uSdHandle) != HAL_OK)
- {
- sd_state = MSD_ERROR;
- }
-
- /* Configure SD Bus width */
- if(sd_state == MSD_OK)
- {
- /* Enable wide operation */
- if(HAL_SD_ConfigWideBusOperation(&uSdHandle, SDIO_BUS_WIDE_4B) != HAL_OK)
- {
- sd_state = MSD_ERROR;
- }
- else
- {
- sd_state = MSD_OK;
- }
- }
-
- return sd_state;
-}
-
-/**
- * @brief DeInitializes the SD card device.
- * @retval SD status
- */
-uint8_t BSP_SD_DeInit(void)
-{
- uint8_t sd_state = MSD_OK;
-
- uSdHandle.Instance = SDIO;
-
- /* Set back Mfx pin to INPUT mode in case it was in exti */
- UseExtiModeDetection = 0;
- BSP_IO_ConfigPin(SD_DETECT_PIN, IO_MODE_INPUT);
-
- /* HAL SD deinitialization */
- if(HAL_SD_DeInit(&uSdHandle) != HAL_OK)
- {
- sd_state = MSD_ERROR;
- }
-
- /* Msp SD deinitialization */
- uSdHandle.Instance = SDIO;
- BSP_SD_MspDeInit(&uSdHandle, NULL);
-
- return sd_state;
-}
-
-/**
- * @brief Configures Interrupt mode for SD detection pin.
- * @retval Returns 0
- */
-uint8_t BSP_SD_ITConfig(void)
-{
- /* Configure Interrupt mode for SD detection pin */
- /* Note: disabling exti mode can be done calling SD_DeInit() */
- UseExtiModeDetection = 1;
- BSP_SD_IsDetected();
-
- return 0;
-}
-
-/**
- * @brief Detects if SD card is correctly plugged in the memory slot or not.
- * @retval Returns if SD is detected or not
- */
-uint8_t BSP_SD_IsDetected(void)
-{
- __IO uint8_t status = SD_PRESENT;
-
- /* Check SD card detect pin */
- if((BSP_IO_ReadPin(SD_DETECT_PIN)&SD_DETECT_PIN) != SD_DETECT_PIN)
- {
- if (UseExtiModeDetection)
- {
- BSP_IO_ConfigPin(SD_DETECT_PIN, IO_MODE_IT_RISING_EDGE);
- }
-
- }
- else
- {
- status = SD_NOT_PRESENT;
- if (UseExtiModeDetection)
- {
- BSP_IO_ConfigPin(SD_DETECT_PIN, IO_MODE_IT_FALLING_EDGE);
- }
- }
-
- return status;
-}
-
-/**
- * @brief Reads block(s) from a specified address in an SD card, in polling mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param ReadAddr: Address from where data is to be read
- * @param NumOfBlocks: Number of SD blocks to read
- * @param Timeout: Timeout for read operation
- * @retval SD status
- */
-uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout)
-{
- if(HAL_SD_ReadBlocks(&uSdHandle, (uint8_t *)pData, ReadAddr, NumOfBlocks, Timeout) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Writes block(s) to a specified address in an SD card, in polling mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param WriteAddr: Address from where data is to be written
- * @param NumOfBlocks: Number of SD blocks to write
- * @param Timeout: Timeout for write operation
- * @retval SD status
- */
-uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout)
-{
- if(HAL_SD_WriteBlocks(&uSdHandle, (uint8_t *)pData, WriteAddr, NumOfBlocks, Timeout) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Reads block(s) from a specified address in an SD card, in DMA mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param ReadAddr: Address from where data is to be read
- * @param NumOfBlocks: Number of SD blocks to read
- * @retval SD status
- */
-uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks)
-{
- /* Read block(s) in DMA transfer mode */
- if(HAL_SD_ReadBlocks_DMA(&uSdHandle, (uint8_t *)pData, ReadAddr, NumOfBlocks) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Writes block(s) to a specified address in an SD card, in DMA mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param WriteAddr: Address from where data is to be written
- * @param NumOfBlocks: Number of SD blocks to write
- * @retval SD status
- */
-uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks)
-{
- /* Write block(s) in DMA transfer mode */
- if(HAL_SD_WriteBlocks_DMA(&uSdHandle, (uint8_t *)pData, WriteAddr, NumOfBlocks) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Erases the specified memory area of the given SD card.
- * @param StartAddr: Start byte address
- * @param EndAddr: End byte address
- * @retval SD status
- */
-uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr)
-{
- if(HAL_SD_Erase(&uSdHandle, StartAddr, EndAddr) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Initializes the SD MSP.
- * @param hsd: SD handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_SD_MspInit(SD_HandleTypeDef *hsd, void *Params)
-{
- static DMA_HandleTypeDef dma_rx_handle;
- static DMA_HandleTypeDef dma_tx_handle;
- GPIO_InitTypeDef gpio_init_structure;
-
- /* SD pins are in conflict with Camera pins therefore Camera is power down */
- /* __weak function can be modified by the application */
- BSP_IO_ConfigPin(RSTI_PIN, IO_MODE_OUTPUT);
- BSP_IO_ConfigPin(XSDN_PIN, IO_MODE_OUTPUT);
- /* De-assert the camera STANDBY pin (active high) */
- BSP_IO_WritePin(XSDN_PIN, BSP_IO_PIN_RESET);
- /* Assert the camera RSTI pin (active low) */
- BSP_IO_WritePin(RSTI_PIN, BSP_IO_PIN_RESET);
- HAL_Delay(100);
-
- /* Enable SDIO clock */
- __HAL_RCC_SDIO_CLK_ENABLE();
-
- /* Enable DMA2 clocks */
- __DMAx_TxRx_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOD_CLK_ENABLE();
-
- /* Common GPIO configuration */
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Speed = GPIO_SPEED_HIGH;
- gpio_init_structure.Alternate = GPIO_AF12_SDIO;
-
- /* GPIOC configuration */
- gpio_init_structure.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12;
-
- HAL_GPIO_Init(GPIOC, &gpio_init_structure);
-
- /* GPIOD configuration */
- gpio_init_structure.Pin = GPIO_PIN_2;
- HAL_GPIO_Init(GPIOD, &gpio_init_structure);
-
- /* NVIC configuration for SDIO interrupts */
- HAL_NVIC_SetPriority(SDIO_IRQn, 0x0E, 0);
- HAL_NVIC_EnableIRQ(SDIO_IRQn);
-
- /* Configure DMA Rx parameters */
- dma_rx_handle.Init.Channel = SD_DMAx_Rx_CHANNEL;
- dma_rx_handle.Init.Direction = DMA_PERIPH_TO_MEMORY;
- dma_rx_handle.Init.PeriphInc = DMA_PINC_DISABLE;
- dma_rx_handle.Init.MemInc = DMA_MINC_ENABLE;
- dma_rx_handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- dma_rx_handle.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- dma_rx_handle.Init.Mode = DMA_PFCTRL;
- dma_rx_handle.Init.Priority = DMA_PRIORITY_VERY_HIGH;
- dma_rx_handle.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- dma_rx_handle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dma_rx_handle.Init.MemBurst = DMA_MBURST_INC4;
- dma_rx_handle.Init.PeriphBurst = DMA_PBURST_INC4;
-
- dma_rx_handle.Instance = SD_DMAx_Rx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsd, hdmarx, dma_rx_handle);
-
- /* Deinitialize the stream for new transfer */
- HAL_DMA_DeInit(&dma_rx_handle);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(&dma_rx_handle);
-
- /* Configure DMA Tx parameters */
- dma_tx_handle.Init.Channel = SD_DMAx_Tx_CHANNEL;
- dma_tx_handle.Init.Direction = DMA_MEMORY_TO_PERIPH;
- dma_tx_handle.Init.PeriphInc = DMA_PINC_DISABLE;
- dma_tx_handle.Init.MemInc = DMA_MINC_ENABLE;
- dma_tx_handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- dma_tx_handle.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- dma_tx_handle.Init.Mode = DMA_PFCTRL;
- dma_tx_handle.Init.Priority = DMA_PRIORITY_VERY_HIGH;
- dma_tx_handle.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- dma_tx_handle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dma_tx_handle.Init.MemBurst = DMA_MBURST_INC4;
- dma_tx_handle.Init.PeriphBurst = DMA_PBURST_INC4;
-
- dma_tx_handle.Instance = SD_DMAx_Tx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsd, hdmatx, dma_tx_handle);
-
- /* Deinitialize the stream for new transfer */
- HAL_DMA_DeInit(&dma_tx_handle);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(&dma_tx_handle);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SD_DMAx_Rx_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(SD_DMAx_Rx_IRQn);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SD_DMAx_Tx_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(SD_DMAx_Tx_IRQn);
-}
-
-/**
- * @brief DeInitializes the SD MSP.
- * @param hsd: SD handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_SD_MspDeInit(SD_HandleTypeDef *hsd, void *Params)
-{
- static DMA_HandleTypeDef dma_rx_handle;
- static DMA_HandleTypeDef dma_tx_handle;
-
- /* Disable NVIC for DMA transfer complete interrupts */
- HAL_NVIC_DisableIRQ(SD_DMAx_Rx_IRQn);
- HAL_NVIC_DisableIRQ(SD_DMAx_Tx_IRQn);
-
- /* Deinitialize the stream for new transfer */
- dma_rx_handle.Instance = SD_DMAx_Rx_STREAM;
- HAL_DMA_DeInit(&dma_rx_handle);
-
- /* Deinitialize the stream for new transfer */
- dma_tx_handle.Instance = SD_DMAx_Tx_STREAM;
- HAL_DMA_DeInit(&dma_tx_handle);
-
- /* Disable NVIC for SDIO interrupts */
- HAL_NVIC_DisableIRQ(SDIO_IRQn);
-
- /* DeInit GPIO pins can be done in the application
- (by surcharging this __weak function) */
-
- /* Disable SDIO clock */
- __HAL_RCC_SDIO_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clocks can be shut down in the application
- by surcharging this __weak function */
-}
-
-/**
- * @brief Gets the current SD card data status.
- * @retval Data transfer state.
- * This value can be one of the following values:
- * @arg SD_TRANSFER_OK: No data transfer is acting
- * @arg SD_TRANSFER_BUSY: Data transfer is acting
- */
-uint8_t BSP_SD_GetCardState(void)
-{
- return((HAL_SD_GetCardState(&uSdHandle) == HAL_SD_CARD_TRANSFER ) ? SD_TRANSFER_OK : SD_TRANSFER_BUSY);
-}
-
-
-/**
- * @brief Get SD information about specific SD card.
- * @param CardInfo: Pointer to HAL_SD_CardInfoTypedef structure
- * @retval None
- */
-void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo)
-{
- /* Get SD card Information */
- HAL_SD_GetCardInfo(&uSdHandle, CardInfo);
-}
-
-/**
- * @brief SD Abort callbacks
- * @param hsd: SD handle
- * @retval None
- */
-void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd)
-{
- BSP_SD_AbortCallback();
-}
-
-/**
- * @brief Tx Transfer completed callbacks
- * @param hsd: SD handle
- * @retval None
- */
-void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd)
-{
- BSP_SD_WriteCpltCallback();
-}
-
-/**
- * @brief Rx Transfer completed callbacks
- * @param hsd: SD handle
- * @retval None
- */
-void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd)
-{
- BSP_SD_ReadCpltCallback();
-}
-
-/**
- * @brief BSP SD Abort callbacks
- * @retval None
- */
-__weak void BSP_SD_AbortCallback(void)
-{
-
-}
-
-/**
- * @brief BSP Tx Transfer completed callbacks
- * @retval None
- */
-__weak void BSP_SD_WriteCpltCallback(void)
-{
-
-}
-
-/**
- * @brief BSP Rx Transfer completed callbacks
- * @retval None
- */
-__weak void BSP_SD_ReadCpltCallback(void)
-{
-
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sd.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sd.h
deleted file mode 100644
index cfb19b5b59..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sd.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_sd.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm32446e_eval_sd.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32446E_EVAL_SD_H
-#define __STM32446E_EVAL_SD_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval.h"
-#include "stm32446e_eval_io.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL_SD
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_SD_Exported_Types STM32446E EVAL SD Exported Types
- * @{
- */
-
-/**
- * @brief SD Card information structure
- */
-#define BSP_SD_CardInfo HAL_SD_CardInfoTypeDef
-/**
- * @}
- */
-
-/**
- * @brief SD status structure definition
- */
-#define MSD_OK ((uint8_t)0x00)
-#define MSD_ERROR ((uint8_t)0x01)
-#define MSD_ERROR_SD_NOT_PRESENT ((uint8_t)0x02)
-
-/**
- * @brief SD transfer state definition
- */
-#define SD_TRANSFER_OK ((uint8_t)0x00)
-#define SD_TRANSFER_BUSY ((uint8_t)0x01)
-
-/** @defgroup STM32446E_EVAL_SD_Exported_Constants STM32446E EVAL SD Exported Constants
- * @{
- */
-#define SD_PRESENT ((uint8_t)0x01)
-#define SD_NOT_PRESENT ((uint8_t)0x00)
-
-#define SD_DATATIMEOUT ((uint32_t)100000000)
-
-/* DMA definitions for SD DMA transfer */
-#define __DMAx_TxRx_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
-#define SD_DMAx_Tx_CHANNEL DMA_CHANNEL_4
-#define SD_DMAx_Rx_CHANNEL DMA_CHANNEL_4
-#define SD_DMAx_Tx_STREAM DMA2_Stream6
-#define SD_DMAx_Rx_STREAM DMA2_Stream3
-#define SD_DMAx_Tx_IRQn DMA2_Stream6_IRQn
-#define SD_DMAx_Rx_IRQn DMA2_Stream3_IRQn
-#define BSP_SD_IRQHandler SDIO_IRQHandler
-#define BSP_SD_DMA_Tx_IRQHandler DMA2_Stream6_IRQHandler
-#define BSP_SD_DMA_Rx_IRQHandler DMA2_Stream3_IRQHandler
-#define SD_DetectIRQHandler() HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8)
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SD_Exported_Macro STM32446E EVAL SD Exported Macro
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SD_Exported_Functions STM32446E EVAL SD Exported Functions
- * @{
- */
-uint8_t BSP_SD_Init(void);
-uint8_t BSP_SD_DeInit(void);
-uint8_t BSP_SD_ITConfig(void);
-uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout);
-uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout);
-uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks);
-uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks);
-uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr);
-uint8_t BSP_SD_GetCardState(void);
-void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo);
-uint8_t BSP_SD_IsDetected(void);
-
-/* These functions can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_SD_MspInit(SD_HandleTypeDef *hsd, void *Params);
-void BSP_SD_Detect_MspInit(SD_HandleTypeDef *hsd, void *Params);
-void BSP_SD_MspDeInit(SD_HandleTypeDef *hsd, void *Params);
-void BSP_SD_AbortCallback(void);
-void BSP_SD_WriteCpltCallback(void);
-void BSP_SD_ReadCpltCallback(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_SD_H */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sdram.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sdram.c
deleted file mode 100644
index 69e048b3e1..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sdram.c
+++ /dev/null
@@ -1,484 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_sdram.c
- * @author MCD Application Team
- * @brief This file includes the SDRAM driver for the MT48LC4M32B2B5-7 memory
- * device mounted on STM32446E-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the MT48LC4M32B2B5-7 SDRAM external memory mounted
- on STM32446E-EVAL evaluation board.
- - This driver does not need a specific component driver for the SDRAM device
- to be included with.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the SDRAM external memory using the BSP_SDRAM_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- FMC controller configuration to interface with the external SDRAM memory.
- o It contains the SDRAM initialization sequence to program the SDRAM external
- device using the function BSP_SDRAM_Initialization_sequence(). Note that this
- sequence is standard for all SDRAM devices, but can include some differences
- from a device to another. If it is the case, the right sequence should be
- implemented separately.
-
- + SDRAM read/write operations
- o SDRAM external memory can be accessed with read/write operations once it is
- initialized.
- Read/write operation can be performed with AHB access using the functions
- BSP_SDRAM_ReadData()/BSP_SDRAM_WriteData(), or by DMA transfer using the functions
- BSP_SDRAM_ReadData_DMA()/BSP_SDRAM_WriteData_DMA().
- o The AHB access is performed with 16-bit width transaction, the DMA transfer
- configuration is fixed at single (no burst) halfword transfer (see the
- BSP_SDRAM_MspInit() __weak function).
- o User can implement his own functions for read/write access with his desired
- configurations.
- o If interrupt mode is used for DMA transfer, the function BSP_SDRAM_DMA_IRQHandler()
- is called in IRQ handler file, to serve the generated interrupt once the DMA
- transfer is complete.
- o You can send a command to the SDRAM device in runtime using the function
- BSP_SDRAM_Sendcmd(), and giving the desired command as parameter chosen between
- the predefined commands of the "FMC_SDRAM_CommandTypeDef" structure.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_sdram.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM STM32446E EVAL SDRAM
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Private_Types_Definitions STM32446E EVAL SDRAM Private Types Definitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Private_Defines STM32446E EVAL SDRAM Private Defines
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Private_Macros STM32446E EVAL SDRAM Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Private_Variables STM32446E EVAL SDRAM Private Variables
- * @{
- */
-static SDRAM_HandleTypeDef sdramHandle;
-static FMC_SDRAM_TimingTypeDef Timing;
-static FMC_SDRAM_CommandTypeDef Command;
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Private_Function_Prototypes STM32446E EVAL SDRAM Private Function Prototypes
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Private_Functions STM32446E EVAL SDRAM Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the SDRAM device.
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_Init(void)
-{
- static uint8_t sdramstatus = SDRAM_ERROR;
- /* SDRAM device configuration */
- sdramHandle.Instance = FMC_SDRAM_DEVICE;
-
- /* Timing configuration for 90Mhz as SD clock frequency (System clock is up to 180Mhz */
- Timing.LoadToActiveDelay = 2;
- Timing.ExitSelfRefreshDelay = 7;
- Timing.SelfRefreshTime = 4;
- Timing.RowCycleDelay = 7;
- Timing.WriteRecoveryTime = 2;
- Timing.RPDelay = 2;
- Timing.RCDDelay = 2;
-
- sdramHandle.Init.SDBank = FMC_SDRAM_BANK1;
- sdramHandle.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8;
- sdramHandle.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12;
- sdramHandle.Init.MemoryDataWidth = SDRAM_MEMORY_WIDTH;
- sdramHandle.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4;
- sdramHandle.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_2;
- sdramHandle.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE;
- sdramHandle.Init.SDClockPeriod = SDCLOCK_PERIOD;
- sdramHandle.Init.ReadBurst = FMC_SDRAM_RBURST_ENABLE;
- sdramHandle.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_0;
-
- /* SDRAM controller initialization */
-
- BSP_SDRAM_MspInit(&sdramHandle, NULL); /* __weak function can be rewritten by the applic */
-
- if(HAL_SDRAM_Init(&sdramHandle, &Timing) != HAL_OK)
- {
- sdramstatus = SDRAM_ERROR;
- }
- else
- {
- sdramstatus = SDRAM_OK;
- }
-
- /* SDRAM initialization sequence */
- BSP_SDRAM_Initialization_sequence(REFRESH_COUNT);
-
- return sdramstatus;
-}
-
-/**
- * @brief DeInitializes the SDRAM device.
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_DeInit(void)
-{
- static uint8_t sdramstatus = SDRAM_ERROR;
- /* SDRAM device configuration */
- sdramHandle.Instance = FMC_SDRAM_DEVICE;
-
- if(HAL_SDRAM_DeInit(&sdramHandle) != HAL_OK)
- {
- sdramstatus = SDRAM_ERROR;
- }
- else
- {
- sdramstatus = SDRAM_OK;
- }
-
- /* SDRAM controller initialization */
- BSP_SDRAM_MspDeInit(&sdramHandle, NULL);
-
- return sdramstatus;
-}
-
-/**
- * @brief Programs the SDRAM device.
- * @param RefreshCount: SDRAM refresh counter value
- */
-void BSP_SDRAM_Initialization_sequence(uint32_t RefreshCount)
-{
- __IO uint32_t tmpmrd = 0;
-
- /* Step 1: Configure a clock configuration enable command */
- Command.CommandMode = FMC_SDRAM_CMD_CLK_ENABLE;
- Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
- Command.AutoRefreshNumber = 1;
- Command.ModeRegisterDefinition = 0;
-
- /* Send the command */
- HAL_SDRAM_SendCommand(&sdramHandle, &Command, SDRAM_TIMEOUT);
-
- /* Step 2: Insert 100 us minimum delay */
- /* Inserted delay is equal to 1 ms due to systick time base unit (ms) */
- HAL_Delay(1);
-
- /* Step 3: Configure a PALL (precharge all) command */
- Command.CommandMode = FMC_SDRAM_CMD_PALL;
- Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
- Command.AutoRefreshNumber = 1;
- Command.ModeRegisterDefinition = 0;
-
- /* Send the command */
- HAL_SDRAM_SendCommand(&sdramHandle, &Command, SDRAM_TIMEOUT);
-
- /* Step 4: Configure an Auto Refresh command */
- Command.CommandMode = FMC_SDRAM_CMD_AUTOREFRESH_MODE;
- Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
- Command.AutoRefreshNumber = 8;
- Command.ModeRegisterDefinition = 0;
-
- /* Send the command */
- HAL_SDRAM_SendCommand(&sdramHandle, &Command, SDRAM_TIMEOUT);
-
- /* Step 5: Program the external memory mode register */
- tmpmrd = (uint32_t)SDRAM_MODEREG_BURST_LENGTH_1 |\
- SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL |\
- SDRAM_MODEREG_CAS_LATENCY_2 |\
- SDRAM_MODEREG_OPERATING_MODE_STANDARD |\
- SDRAM_MODEREG_WRITEBURST_MODE_SINGLE;
-
- Command.CommandMode = FMC_SDRAM_CMD_LOAD_MODE;
- Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
- Command.AutoRefreshNumber = 1;
- Command.ModeRegisterDefinition = tmpmrd;
-
- /* Send the command */
- HAL_SDRAM_SendCommand(&sdramHandle, &Command, SDRAM_TIMEOUT);
-
- /* Step 6: Set the refresh rate counter */
- /* Set the device refresh rate */
- HAL_SDRAM_ProgramRefreshRate(&sdramHandle, RefreshCount);
-}
-
-/**
- * @brief Reads an mount of data from the SDRAM memory in polling mode.
- * @param uwStartAddress: Read start address
- * @param pData: Pointer to data to be read
- * @param uwDataSize: Size of read data from the memory
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_ReadData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SDRAM_Read_32b(&sdramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Reads an mount of data from the SDRAM memory in DMA mode.
- * @param uwStartAddress: Read start address
- * @param pData: Pointer to data to be read
- * @param uwDataSize: Size of read data from the memory
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_ReadData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SDRAM_Read_DMA(&sdramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Writes an mount of data to the SDRAM memory in polling mode.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of written data from the memory
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_WriteData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SDRAM_Write_32b(&sdramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Writes an mount of data to the SDRAM memory in DMA mode.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of written data from the memory
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_WriteData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SDRAM_Write_DMA(&sdramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Sends command to the SDRAM bank.
- * @param SdramCmd: Pointer to SDRAM command structure
- * @retval HAL status
- */
-uint8_t BSP_SDRAM_Sendcmd(FMC_SDRAM_CommandTypeDef *SdramCmd)
-{
- if(HAL_SDRAM_SendCommand(&sdramHandle, SdramCmd, SDRAM_TIMEOUT) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Handles SDRAM DMA transfer interrupt request.
- */
-void BSP_SDRAM_DMA_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(sdramHandle.hdma);
-}
-
-/**
- * @brief Initializes SDRAM MSP.
- * @param hsdram: SDRAM handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_SDRAM_MspInit(SDRAM_HandleTypeDef *hsdram, void *Params)
-{
- static DMA_HandleTypeDef dma_handle;
- GPIO_InitTypeDef gpio_init_structure;
-
- /* Enable FMC clock */
- __HAL_RCC_FMC_CLK_ENABLE();
-
- /* Enable chosen DMAx clock */
- __DMAx_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
- __HAL_RCC_GPIOF_CLK_ENABLE();
- __HAL_RCC_GPIOG_CLK_ENABLE();
-
- /* Common GPIO configuration */
- gpio_init_structure.Mode = GPIO_MODE_AF_PP;
- gpio_init_structure.Pull = GPIO_PULLUP;
- gpio_init_structure.Speed = GPIO_SPEED_FAST;
- gpio_init_structure.Alternate = GPIO_AF12_FMC;
-
- /* GPIOA configuration */
- gpio_init_structure.Pin = GPIO_PIN_7;
- HAL_GPIO_Init(GPIOA, &gpio_init_structure);
-
- /* GPIOC configuration */
- gpio_init_structure.Pin = GPIO_PIN_5 | GPIO_PIN_4;
- HAL_GPIO_Init(GPIOC, &gpio_init_structure);
-
- /* GPIOD configuration */
- gpio_init_structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8| GPIO_PIN_9 | GPIO_PIN_10 |\
- GPIO_PIN_14 | GPIO_PIN_15;
-
-
- HAL_GPIO_Init(GPIOD, &gpio_init_structure);
-
- /* GPIOE configuration */
- gpio_init_structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_7| GPIO_PIN_8 | GPIO_PIN_9 |\
- GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 |\
- GPIO_PIN_15;
-
- HAL_GPIO_Init(GPIOE, &gpio_init_structure);
-
- /* GPIOF configuration */
- gpio_init_structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 |\
- GPIO_PIN_15;
-
- HAL_GPIO_Init(GPIOF, &gpio_init_structure);
-
- /* GPIOG configuration */
- gpio_init_structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4| GPIO_PIN_5 | GPIO_PIN_8 |\
- GPIO_PIN_15 | GPIO_PIN_2;
- HAL_GPIO_Init(GPIOG, &gpio_init_structure);
-
- /* Configure common DMA parameters */
- dma_handle.Init.Channel = SDRAM_DMAx_CHANNEL;
- dma_handle.Init.Direction = DMA_MEMORY_TO_MEMORY;
- dma_handle.Init.PeriphInc = DMA_PINC_ENABLE;
- dma_handle.Init.MemInc = DMA_MINC_ENABLE;
- dma_handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- dma_handle.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- dma_handle.Init.Mode = DMA_NORMAL;
- dma_handle.Init.Priority = DMA_PRIORITY_HIGH;
- dma_handle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- dma_handle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dma_handle.Init.MemBurst = DMA_MBURST_SINGLE;
- dma_handle.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- dma_handle.Instance = SDRAM_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsdram, hdma, dma_handle);
-
- /* Deinitialize the stream for new transfer */
- HAL_DMA_DeInit(&dma_handle);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(&dma_handle);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SDRAM_DMAx_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(SDRAM_DMAx_IRQn);
-}
-
-
-/**
- * @brief DeInitializes SDRAM MSP.
- * @param hsdram: SDRAM handle
- * @param Params: pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_SDRAM_MspDeInit(SDRAM_HandleTypeDef *hsdram, void *Params)
-{
- static DMA_HandleTypeDef dma_handle;
-
- /* Disable NVIC configuration for DMA interrupt */
- HAL_NVIC_DisableIRQ(SDRAM_DMAx_IRQn);
-
- /* Deinitialize the stream for new transfer */
- dma_handle.Instance = SDRAM_DMAx_STREAM;
- HAL_DMA_DeInit(&dma_handle);
-
- /* DeInit GPIO pins can be done in the application
- (by surcharging this __weak function) */
-
- /* GPIO pins clock, FMC clock and DMA clock can be shut down in the application
- by surcharging this __weak function */
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sdram.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sdram.h
deleted file mode 100644
index 4b84180fe4..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sdram.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_sdram.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm32446e_eval_sdram.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32446E_EVAL_SDRAM_H
-#define __STM32446E_EVAL_SDRAM_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM STM32446E EVAL SDRAM
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Exported_Types STM32446E EVAL SDRAM Exported Types
- * @{
- */
-
-/**
- * @brief SDRAM status structure definition
- */
-#define SDRAM_OK ((uint8_t)0x00)
-#define SDRAM_ERROR ((uint8_t)0x01)
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Exported_Constants STM32446E EVAL SDRAM Exported Constants
- * @{
- */
-#define SDRAM_DEVICE_ADDR ((uint32_t)0xC0000000)
-#define SDRAM_DEVICE_SIZE ((uint32_t)0x800000) /* SDRAM device size in Bytes */
-
-/* #define SDRAM_MEMORY_WIDTH FMC_SDRAM_MEM_BUS_WIDTH_8 */
-#define SDRAM_MEMORY_WIDTH FMC_SDRAM_MEM_BUS_WIDTH_16
-
-#define SDCLOCK_PERIOD FMC_SDRAM_CLOCK_PERIOD_2
-/* #define SDCLOCK_PERIOD FMC_SDRAM_CLOCK_PERIOD_3 */
-
-#define REFRESH_COUNT ((uint32_t)0x0569) /* SDRAM refresh counter (90Mhz SD clock) */
-
-#define SDRAM_TIMEOUT ((uint32_t)0xFFFF)
-
-/* DMA definitions for SDRAM DMA transfer */
-#define __DMAx_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
-#define __DMAx_CLK_DISABLE __HAL_RCC_DMA2_CLK_DISABLE
-#define SDRAM_DMAx_CHANNEL DMA_CHANNEL_0
-#define SDRAM_DMAx_STREAM DMA2_Stream0
-#define SDRAM_DMAx_IRQn DMA2_Stream0_IRQn
-#define SDRAM_DMAx_IRQHandler DMA2_Stream0_IRQHandler
-
-
-/**
- * @brief FMC SDRAM Mode definition register defines
- */
-#define SDRAM_MODEREG_BURST_LENGTH_1 ((uint16_t)0x0000)
-#define SDRAM_MODEREG_BURST_LENGTH_2 ((uint16_t)0x0001)
-#define SDRAM_MODEREG_BURST_LENGTH_4 ((uint16_t)0x0002)
-#define SDRAM_MODEREG_BURST_LENGTH_8 ((uint16_t)0x0004)
-#define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL ((uint16_t)0x0000)
-#define SDRAM_MODEREG_BURST_TYPE_INTERLEAVED ((uint16_t)0x0008)
-#define SDRAM_MODEREG_CAS_LATENCY_2 ((uint16_t)0x0020)
-#define SDRAM_MODEREG_CAS_LATENCY_3 ((uint16_t)0x0030)
-#define SDRAM_MODEREG_OPERATING_MODE_STANDARD ((uint16_t)0x0000)
-#define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED ((uint16_t)0x0000)
-#define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE ((uint16_t)0x0200)
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Exported_Macro STM32446E EVAL SDRAM Exported Macro
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_SDRAM_Exported_Functions STM32446E EVAL SDRAM Exported Functions
- * @{
- */
-uint8_t BSP_SDRAM_Init(void);
-uint8_t BSP_SDRAM_DeInit(void);
-void BSP_SDRAM_Initialization_sequence(uint32_t RefreshCount);
-uint8_t BSP_SDRAM_ReadData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SDRAM_ReadData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SDRAM_WriteData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SDRAM_WriteData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SDRAM_Sendcmd(FMC_SDRAM_CommandTypeDef *SdramCmd);
-void BSP_SDRAM_DMA_IRQHandler(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_SDRAM_MspInit(SDRAM_HandleTypeDef *hsdram, void *Params);
-void BSP_SDRAM_MspDeInit(SDRAM_HandleTypeDef *hsdram, void *Params);
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_SDRAM_H */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_ts.c b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_ts.c
deleted file mode 100644
index b1cf8d6c62..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_ts.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_ts.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage the Touch
- * Screen on STM32446E-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the touch screen module of the STM32446E-EVAL
- evaluation board on AMPIRE 480x272 LCD mounted on MB1046 daughter board.
- - the MFXSTM32L152 IO expander device component
- driver must be included in order to run the TS module commanded by the IO
- expander device, the MFX IO expander device component driver must be
- also included in case of interrupt mode use of the TS.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the TS module using the BSP_TS_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- communication layer configuration to start the TS use. The LCD size properties
- (x and y) are passed as parameters.
- o If TS interrupt mode is desired, you must configure the TS interrupt mode
- by calling the function BSP_TS_ITConfig(). The TS interrupt mode is generated
- as an external interrupt whenever a touch is detected.
- The interrupt mode internally uses the IO functionalities driver driven by
- the IO expander, to configure the IT line.
-
- + Touch screen use
- o The touch screen state is captured whenever the function BSP_TS_GetState() is
- used. This function returns information about the last LCD touch occurred
- in the TS_StateTypeDef structure.
- o If TS interrupt mode is used, the function BSP_TS_ITGetStatus() is needed to get
- the interrupt status. To clear the IT pending bits, you should call the
- function BSP_TS_ITClear().
- o The IT is handled using the corresponding external interrupt IRQ handler,
- the user IT callback treatment is implemented on the same external interrupt
- callback.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_ts.h"
-#include "stm32446e_eval_io.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_TS STM32446E EVAL TS
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_TS_Private_Types_Definitions STM32446E EVAL TS Private Types Definitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_TS_Private_Defines STM32446E EVAL TS Private Defines
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_TS_Private_Macros STM32446E EVAL TS Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_TS_Private_Variables STM32446E EVAL TS Private Variables
- * @{
- */
-static TS_DrvTypeDef *ts_driver;
-static uint16_t tsBundaryX, tsBundaryY;
-static uint8_t tsOrientation;
-static uint8_t AddressI2C;
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_TS_Private_Function_Prototypes STM32446E EVAL TS Private Function Prototypes
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_TS_Private_Functions STM32446E EVAL TS Private Functions
- * @{
- */
-
-/**
- * @brief Initializes and configures the touch screen functionalities and
- * configures all necessary hardware resources (GPIOs, clocks..).
- * @param xSize: Maximum X size of the TS area on LCD
- * @param ySize: Maximum Y size of the TS area on LCD
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_Init(uint16_t xSize, uint16_t ySize)
-{
- uint8_t mfxstm32l152_id = 0;
-
- tsBundaryX = xSize;
- tsBundaryY = ySize;
-
- /* Initialize IO functionalities (MFX) used by TS */
- BSP_IO_Init();
-
- /* Read ID and verify if the IO expander is ready */
- mfxstm32l152_id = mfxstm32l152_io_drv.ReadID(IO_I2C_ADDRESS);
- if((mfxstm32l152_id == MFXSTM32L152_ID_1) || (mfxstm32l152_id == MFXSTM32L152_ID_2))
- {
- /* Initialize the TS driver structure */
- ts_driver = &mfxstm32l152_ts_drv;
- AddressI2C = TS_I2C_ADDRESS;
- tsOrientation = TS_SWAP_NONE;
- }
-
-
- /* Initialize the TS driver */
- ts_driver->Init(AddressI2C);
- ts_driver->Start(AddressI2C);
-
- return TS_OK;
-}
-
-/**
- * @brief DeInitializes the TouchScreen.
- * @retval TS state
- */
-uint8_t BSP_TS_DeInit(void)
-{
- /* Actually ts_driver does not provide a DeInit function */
- return TS_OK;
-}
-
-/**
- * @brief Enables the touch screen interrupts.
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_ITEnable(void)
-{
- /* Enable the TS ITs */
- ts_driver->EnableIT(AddressI2C);
- return TS_OK;
-}
-
-/**
- * @brief Disables the touch screen interrupts.
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_ITDisable(void)
-{
- /* Disable the TS ITs */
- ts_driver->DisableIT(AddressI2C);
- return TS_OK;
-}
-
-/**
- * @brief Configures and enables the touch screen interrupts.
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_ITConfig(void)
-{
- /* Initialize the IO */
- BSP_IO_Init();
-
- /* Enable the TS ITs */
- ts_driver->EnableIT(AddressI2C);
-
- return TS_OK;
-}
-
-/**
- * @brief Clears all touch screen interrupts.
- */
-void BSP_TS_ITClear(void)
-{
- /* Clear TS IT pending bits */
- ts_driver->ClearIT(AddressI2C);
-}
-
-/**
- * @brief Gets the touch screen interrupt status.
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_ITGetStatus(void)
-{
- /* Return the TS IT status */
- return (ts_driver->GetITStatus(AddressI2C));
-}
-
-/**
- * @brief Clears touch screen FIFO containing 128 x,y values.
- */
-void BSP_TS_FIFOClear(void)
-{
- /* ts.h does not foresee an API that allows clearing the FIFO */
- /* reading GetXY currently read one value from the FIFO */
- /* but the FIFO can contain up to 128 values ... */
- /* which would mean 128 I2C read. */
- /* Best is to modify ts.h (not done for compatibility with other families) */
-}
-
-/**
- * @brief Returns status and positions of the touch screen.
- * @param TS_State: Pointer to touch screen current state structure
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_GetState(TS_StateTypeDef *TS_State)
-{
- static uint32_t _x = 0, _y = 0;
- uint16_t x_diff, y_diff , x , y;
- uint16_t swap;
-
- TS_State->TouchDetected = ts_driver->DetectTouch(AddressI2C);
-
- if(TS_State->TouchDetected)
- {
- ts_driver->GetXY(AddressI2C, &x, &y);
-
- if(tsOrientation & TS_SWAP_X)
- {
- x = 4096 - x;
- }
-
- if(tsOrientation & TS_SWAP_Y)
- {
- y = 4096 - y;
- }
-
- if(tsOrientation & TS_SWAP_XY)
- {
- swap = y;
- y = x;
- x = swap;
- }
-
- x_diff = x > _x? (x - _x): (_x - x);
- y_diff = y > _y? (y - _y): (_y - y);
-
- if (x_diff + y_diff > 5)
- {
- _x = x;
- _y = y;
- }
-
- TS_State->x = (tsBundaryX * _x) >> 12;
- TS_State->y = (tsBundaryY * _y) >> 12;
- }
- return TS_OK;
-}
-
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_ts.h b/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_ts.h
deleted file mode 100644
index cda6e5292c..0000000000
--- a/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_ts.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32446e_eval_ts.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm32446e_eval_ts.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32446E_EVAL_TS_H
-#define __STM32446E_EVAL_TS_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval.h"
-/* Include IOExpander(MFX) component Driver */
-#include "../Components/mfxstm32l152/mfxstm32l152.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32446E_EVAL
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_TS STM32446E EVAL TS
- * @{
- */
-
-/** @defgroup STM32446E_EVAL_TS_Exported_Types STM32446E EVAL TS Exported Types
- * @{
- */
-typedef struct
-{
- uint16_t TouchDetected;
- uint16_t x;
- uint16_t y;
- uint16_t z;
-}TS_StateTypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_TS_Exported_Constants STM32446E EVAL TS Exported Constants
- * @{
- */
-#define TS_SWAP_NONE ((uint8_t)0x00)
-#define TS_SWAP_X ((uint8_t)0x01)
-#define TS_SWAP_Y ((uint8_t)0x02)
-#define TS_SWAP_XY ((uint8_t)0x04)
-
-typedef enum
-{
- TS_OK = 0x00,
- TS_ERROR = 0x01,
- TS_TIMEOUT = 0x02
-}TS_StatusTypeDef;
-
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_TS_Exported_Macros STM32446E EVAL TS Exported Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32446E_EVAL_TS_Exported_Functions STM32446E EVAL TS Exported Functions
- * @{
- */
-uint8_t BSP_TS_Init(uint16_t xSize, uint16_t ySize);
-uint8_t BSP_TS_DeInit(void);
-uint8_t BSP_TS_GetState(TS_StateTypeDef *TS_State);
-uint8_t BSP_TS_ITEnable(void);
-uint8_t BSP_TS_ITDisable(void);
-uint8_t BSP_TS_ITConfig(void);
-uint8_t BSP_TS_ITGetStatus(void);
-void BSP_TS_ITClear(void);
-void BSP_TS_FIFOClear(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32446E_EVAL_TS_H */
diff --git a/Drivers/BSP/STM32469I-Discovery b/Drivers/BSP/STM32469I-Discovery
new file mode 160000
index 0000000000..f79918e76d
--- /dev/null
+++ b/Drivers/BSP/STM32469I-Discovery
@@ -0,0 +1 @@
+Subproject commit f79918e76de5310aad28ebf33365f902f51df85b
diff --git a/Drivers/BSP/STM32469I-Discovery/LICENSE.md b/Drivers/BSP/STM32469I-Discovery/LICENSE.md
deleted file mode 100644
index 479c4f6826..0000000000
--- a/Drivers/BSP/STM32469I-Discovery/LICENSE.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright 2017 STMicroelectronics.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors
-may be used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Drivers/BSP/STM32469I-Discovery/README.md b/Drivers/BSP/STM32469I-Discovery/README.md
deleted file mode 100644
index 427e68a8dd..0000000000
--- a/Drivers/BSP/STM32469I-Discovery/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# BSP STM32469I-DISCOVERY Component
-
-![latest tag](https://img.shields.io/github/v/tag/STMicroelectronics/stm32469i-discovery.svg?color=brightgreen)
-
-## Overview
-
-**STM32Cube** is an STMicroelectronics original initiative to ease developers' life by reducing efforts, time and cost.
-
-**STM32Cube** covers the overall STM32 products portfolio. It includes a comprehensive embedded software platform delivered for each STM32 series.
- * The CMSIS modules (core and device) corresponding to the ARM(tm) core implemented in this STM32 product.
- * The STM32 HAL-LL drivers, an abstraction layer offering a set of APIs ensuring maximized portability across the STM32 portfolio.
- * The BSP drivers of each evaluation, demonstration or nucleo board provided for this STM32 series.
- * A consistent set of middleware libraries such as RTOS, USB, FatFS, graphics, touch sensing library...
- * A full set of software projects (basic examples, applications, and demonstrations) for each board provided for this STM32 series.
-
-Two models of publication are proposed for the STM32Cube embedded software:
- * The monolithic **MCU Package**: all STM32Cube software modules of one STM32 series are present (Drivers, Middleware, Projects, Utilities) in the repository (usual name **STM32Cubexx**, xx corresponding to the STM32 series).
- * The **MCU component**: each STM32Cube software module being part of the STM32Cube MCU Package, is delivered as an individual repository, allowing the user to select and get only the required software functions.
-
-## Description
-
-This **stm32469i-discovery** MCU component repository is one element of the **STM32CubeF4** MCU embedded software package, providing the **STM32469I-DISCOVERY** BSP BOARD component part.
-
-## Release note
-
-Details about the content of this release are available in the release note [here](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/stm32469i-discovery/blob/main/Release_Notes.html).
-
-## Compatibility information
-
-Below is the list of the BSP *component* drivers to be used with this BSP *board* driver. It is **crucial** that you use a consistent set of CMSIS - HAL - BSP versions, as mentioned in [this](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/STM32CubeF4/blob/master/Release_Notes.html) release note.
-
-* [stm32-bsp-common](https://github.com/STMicroelectronics/stm32-bsp-common)
-* [stm32-cs43l22](https://github.com/STMicroelectronics/stm32-cs43l22)
-* [stm32-ft6x06](https://github.com/STMicroelectronics/stm32-ft6x06)
-* [stm32-n25q128a](https://github.com/STMicroelectronics/stm32-n25q128a)
-* [stm32-nt35510](https://github.com/STMicroelectronics/stm32-nt35510)
-* [stm32-otm8009a](https://github.com/STMicroelectronics/stm32-otm8009a)
-
-## Troubleshooting
-
-Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) guide.
diff --git a/Drivers/BSP/STM32469I-Discovery/Release_Notes.html b/Drivers/BSP/STM32469I-Discovery/Release_Notes.html
deleted file mode 100644
index a47ba1e10d..0000000000
--- a/Drivers/BSP/STM32469I-Discovery/Release_Notes.html
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-
-
- Release Notes for STM32469I_Discovery Board Drivers
-
-
-
-
-
-
-
This directory contains the board drivers to demonstrate the capabilities of the STM324x9I_EVAL Evaluation Board.
-
-
-
Update History
-
-
-
-
Main Changes
-
-
Update Release_Notes.html to support new format
-
-
-
-
-
-
-
Main Changes
-
-
All source files: update disclaimer to add reference to the new license agreement.
-
-
-
-
-
-
-
Main Changes
-
-
Remove date & version
-
Add general description of BSP drivers
-
stm324x9i_eval_audio.c/.h:
-
-
Aligned with PDM library v3.0.0
-
-
stm324x9i_eval_lcd.c:
-
-
Update BSP_LCD_DrawBitmap() API to fix functional misbehaviour with SW4STM32 Toolchain
-
-
Notes:
-
-
This version must be used with v3.0.0 of PDM library
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval_sd.c/.h:
-
-
Update BSP SD APIs following new HAL SD drivers implementation
-
Fix BlockSize to 512 bytes
-
-
stm324x9i_eval_audio.c/.h:
-
-
Add BSP_AUDIO_OUT_MspInit, BSP_AUDIO_OUT_MspDeInit and BSP_AUDIO_OUT_ClockConfig APIs as weak
-
Add BSP_AUDIO_IN_MspInit, BSP_AUDIO_IN_MspDeInit and BSP_AUDIO_IN_ClockConfig APIs as weak
-
Add BSP_AUDIO_OUT_DeInit and BSP_AUDIO_IN_DeInit APIs
-
-
stm324x9i_eval_sram.c/.h:
-
-
Add BSP_SRAM_MspInit API as weak
-
-
stm324x9i_eval_sdram.c/.h:
-
-
Add BSP_SDRAM_MspInit API as weak
-
-
stm324x9i_eval_camera.c/.h:
-
-
Add BSP_CAMERA_MspInit API as weak
-
-
Notes:
-
-
These BSP drivers break the compatibility with previous versions.
-
If FatFs is required, “FatFS R0.11 ST modified 20161223†must be used with this version of BSP drivers.
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval.c/.h
-
-
Rework LCD initialization to ensure refresh rate of 60Hz.
-
-
Add new API “BSP_LCD_InitEx(uint32_t PclkConfig)†to propoerly manage LTCD pixel clock configuration.
-
Update “BSP_LCD_Init†to call new API BSP_LCD_InitEx().
-
Add LCD_MAX_PCLK/LCD_MIN_PCLK defines.
-
Add BSP_LCD_InitEx() function prototype.
-
-
Update VBP and HBP values used to calculate AccumulatedActiveH and AccumulatedActiveW for AMPIRE 480x272
-
-
stm324x9i_eval_ts.c:
-
-
Update BSP_TS_GetState() to return correct values of Touch Screen status and positions.
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval.c/.h
-
-
Add AUDIO_IO_DeInit() function to align with Common V4.0.0
-
-
stm324x9i _eval_audio.c
-
-
Remove CODEC_Reset() function
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval.c/.h
-
-
Update to support new 5.7" VGA LCD (AM640480FTNQW-T07H-A)
-
-
Update I2Cx_ReadMultiple() API to considers the multiple read of the exc7200 touch screen position
-
Add BSP_TS3510_IsDetected() API to detect which LCD is mounted on the board
-
In header file, add new defines for ts3510 and exc7200 touch screen components I2C addresses
-
-
-
stm324x9i _eval_ts.c/.h
-
-
Update to support new 5.7" VGA LCD (AM640480FTNQW-T07H-A)
-
-
Update BSP_TS_Init() API to initialize the connected LCD device
-
Update BSP_TS_GetState() API to calculate the (x,y) position for the mounted LCD device
-
In header file, update to include the new touch screen component driver (exc7200)
-
-
-
stm324x9i _eval_sdram.c/.h
-
-
Update BSP_SDRAM_Init() API to set the right column bits number configuration according to the IS42S32800(ISSI) component available on the board
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval.c/.h
-
-
Align to STM32F4xx HAL Driver V1.3.0 for __HAL_RCC_PPP_CLK_ENABLE()
-
-
stm324x9i _eval_audio.c/.h
-
-
BSP_AUDIO_OUT_Play()/BSP_AUDIO_OUT_ChangeBuffer() add cast uint8_t on data pointer: update according to the HAL SAI driver update to support companding mode which works only with data type on 8-bits.
-
-
stm324x9i _eval_lcd.c
-
-
BSP_LCD_Init() update to check if DATA_IN_ExtSDRAM is enabled or not to avoid the re-initialization for SDRAM interface.
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval.c/.h
-
-
Change I2C_SPEED used define by BSP_I2C_SPEED
-
-
stm324x9i_eval_camera.c
-
-
BSP_CAMERA_Init(): Update the Initialization and Stop APIs to set and reset the STANDBY pin (to avoid conflict with SDCard detect pin)
-
-
stm324x9i_eval_camera.h, stm324x9i_eval_audio.h, stm324x9i_eval_eeprom.h, stm324x9i_eval_io.h, stm324x9i_eval_ts.h and stm324x9i_eval_lcd.c/.h
-
-
Change “" byâ€/" in the include path to fix compilation issue under Linux
-
-
stm324x9i_eval_nor.c/.h
-
-
Change NOR status definition NOR_OK and NOR_ERROR by NOR_STATUS_OK and NOR_STATUS_ERROR, respectively
-
-
stm324x9i_eval_sdram.c
-
-
BSP_SDRAM_Initialization_sequence(): Fix wrong configuration of the burst length
-
-
Miscellaneous comments update
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval.c/.h
-
-
Add protection for double initialization of IO_Init within LCD_IO_Init()
-
Enhance BSP_PB_Init() function by removing the call of __SYSCFG_CLK_ENABLE() already enabled in the HAL_GPIO_Init()
-
-
stm324x9i _eval_audio.c/.h
-
-
Add note that only the audio stereo format is supported
-
-
stm324x9i_eval_sd.c/.h
-
-
Ensure compatibility with the updated version of FatFs sd_diskio driver (i.e. FatFs R0.10 ST modified 20140422) supporting SDIO/SPI to interface uSD
-
-
stm324x9i_eval_lcd.c/.h
-
-
Update LCD clock configuration of 5.7" screen to avoid flicker effect within BSP_LCD_Init()
-
Comments clean up and typo corrections
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval_sd.c/.h
-
-
Update SD_DATATIMEOUT value
-
-
stm324x9i_eval_eeprom.c/.h
-
-
Update usage of BSP_EEPROM_TIMEOUT_UserCallback() function
-
-
-
-
-
-
-
-
Main Changes
-
-
Major update based on STM32Cube specification: drivers architecture and APIs modified vs. V1.0.3, and thus the 2 versions are not compatible.
-
This version has to be used only with STM32CubeF4 based development
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval_ioe8.c/.h
-
-
Enhance the Touch panel detection in IOE_TS_GetState() function : Add a check on FIFO Threshold value before reading X and Y position
-
-
-
Known Limitations
-
-
stm324x9i_eval_audio_codec.c/.h
-
-
If 2 audio streams are played in TDM format (the first stream is configured in codec SLOT0 and second stream in codec SLOT1) the Pause/Resume, Volume Control and Mute action will apply on both streams.
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval_lcd.c
-
-
Update BUFFER_OFFSET define value from 0x130000 to 0x12C000 and comment to explain how to compute this value
-
LCD_DeInit() function: remove SDRAM pins configuration, this is done in SDRAM driver
-
LCD_Init() function: in case where AMPIRE 640x480 LCD is used, add a call to LCD_I2C_Config() to initialize I2C for touch panel usage
-
Update and optimize LCD_Clear() function
-
Update and optimize putPixel() function: write directly to the SDRAM instead of the use of LCD_DrawLine() function
-
GetPosition() function: add more comments in the header about the format of the data returned by this function
-
GetPosition() function: remove the I2C configuration (it’s already done in LCD_Init() function)
-
LCD_CheckDevice() function: replace LCD_I2C_Config() by IOE_Config()
-
LCD_I2C_Config() function: add a test, if I2C is already configured, then there is no need to reconfigure it again
-
-
stm324x9i_eval_ioe8.c/.h
-
-
Remove EXTI line configuration macros
-
Remove VERIFY_WRITTENDATA macro, and remove verify written data block from I2C_WriteDeviceRegister() function
-
-
stm324x9i_eval_ioe16.c/.h
-
-
Remove VERIFY_WRITTENDATA macro, and remove verify written data block from IOE16_I2C_WriteDeviceRegister() function
-
-
stm324x9i_eval_audio_codec.c/.h
-
-
In Audio_MAL_IRQHandler() Remove local variables pAddr and Size and replace them by existing global variables CurrentPos and AudioRemSize
-
-
-
Known Limitations
-
-
stm324x9i_eval_audio_codec.c/.h
-
-
If 2 audio streams are played in TDM format (the first stream is configured in codec SLOT0 and second stream in codec SLOT1) the Pause/Resume, Volume Control and Mute action will apply on both streams.
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324x9i_eval_lcd.c
-
-
Update LCD_DisplayOff() function : Remove GPIO PA8 and PC6 configuration in low level, as we don’t need to configure any more these GPIO w/ STM32x9I-EVAL Boards RevB
-
Add comments for LCD_GetPosition() and LCD_CheckDevice function
-
-
stm324x9i_eval_ioe8.c/.h
-
-
Update IOE_TS_GetState() function : Enhance the TS detection algorithm
-
Update IOE_TS_Config() function : Update IOE FIFO threshold register value to 0x01 instead of 0x0F and update touch screen operation mode register value to 0x01 instead of 0x03
-
Add condition in IOE_GPIO_Config() and IOE_I2C_Config() functions to prevent I2C and its GPIOs reconfiguration
-
Update I2C_ReadDataBuffer() function: remove check at “I2C_FLAG_BUSY†in the beginning of the function
-
-
stm324x9i_eval_ioe16.c/.h
-
-
Add condition in IOE16_GPIO_Config() and IOE16_I2C_Config() functions to prevent I2C and its GPIOs reconfiguration
-
-
-
Known Limitations
-
-
stm324x9i_eval_audio_codec.c/.h
-
-
If 2 audio streams are played in TDM format (the first stream is configured in codec SLOT0 and second stream in codec SLOT1) the Pause/Resume, Volume Control and Mute action will apply on both streams.
-
-
-
-
-
-
-
-
Main Changes
-
-
First official release for STM324x9I_EVAL board drivers.
-
-
Known Limitations
-
-
stm324x9i_eval_audio_codec.c/.h
-
-
If 2 audio streams are played in TDM format (the first stream is configured in codec SLOT0 and second stream in codec SLOT1) the Pause/Resume, Volume Control and Mute action will apply on both streams.
-
-
-
-
-
-
-
-
-
diff --git a/Drivers/BSP/STM324x9I_EVAL/_htmresc/favicon.png b/Drivers/BSP/STM324x9I_EVAL/_htmresc/favicon.png
deleted file mode 100644
index 06713eec49..0000000000
Binary files a/Drivers/BSP/STM324x9I_EVAL/_htmresc/favicon.png and /dev/null differ
diff --git a/Drivers/BSP/STM324x9I_EVAL/_htmresc/mini-st_2020.css b/Drivers/BSP/STM324x9I_EVAL/_htmresc/mini-st_2020.css
deleted file mode 100644
index 986f4d4205..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/_htmresc/mini-st_2020.css
+++ /dev/null
@@ -1,1711 +0,0 @@
-@charset "UTF-8";
-/*
- Flavor name: Custom (mini-custom)
- Generated online - https://minicss.org/flavors
- mini.css version: v3.0.1
-*/
-/*
- Browsers resets and base typography.
-*/
-/* Core module CSS variable definitions */
-:root {
- --fore-color: #03234b;
- --secondary-fore-color: #03234b;
- --back-color: #ffffff;
- --secondary-back-color: #ffffff;
- --blockquote-color: #e6007e;
- --pre-color: #e6007e;
- --border-color: #3cb4e6;
- --secondary-border-color: #3cb4e6;
- --heading-ratio: 1.2;
- --universal-margin: 0.5rem;
- --universal-padding: 0.25rem;
- --universal-border-radius: 0.075rem;
- --background-margin: 1.5%;
- --a-link-color: #3cb4e6;
- --a-visited-color: #8c0078; }
-
-html {
- font-size: 13.5px; }
-
-a, b, del, em, i, ins, q, span, strong, u {
- font-size: 1em; }
-
-html, * {
- font-family: -apple-system, BlinkMacSystemFont, Helvetica, arial, sans-serif;
- line-height: 1.25;
- -webkit-text-size-adjust: 100%; }
-
-* {
- font-size: 1rem; }
-
-body {
- margin: 0;
- color: var(--fore-color);
- @background: var(--back-color);
- background: var(--back-color) linear-gradient(#ffd200, #ffd200) repeat-y left top;
- background-size: var(--background-margin);
- }
-
-details {
- display: block; }
-
-summary {
- display: list-item; }
-
-abbr[title] {
- border-bottom: none;
- text-decoration: underline dotted; }
-
-input {
- overflow: visible; }
-
-img {
- max-width: 100%;
- height: auto; }
-
-h1, h2, h3, h4, h5, h6 {
- line-height: 1.25;
- margin: calc(1.5 * var(--universal-margin)) var(--universal-margin);
- font-weight: 400; }
- h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
- color: var(--secondary-fore-color);
- display: block;
- margin-top: -0.25rem; }
-
-h1 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio)); }
-
-h2 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) );
- border-style: none none solid none ;
- border-width: thin;
- border-color: var(--border-color); }
-h3 {
- font-size: calc(1rem * var(--heading-ratio) ); }
-
-h4 {
- font-size: calc(1rem * var(--heading-ratio)); }
-
-h5 {
- font-size: 1rem; }
-
-h6 {
- font-size: calc(1rem / var(--heading-ratio)); }
-
-p {
- margin: var(--universal-margin); }
-
-ol, ul {
- margin: var(--universal-margin);
- padding-left: calc(3 * var(--universal-margin)); }
-
-b, strong {
- font-weight: 700; }
-
-hr {
- box-sizing: content-box;
- border: 0;
- line-height: 1.25em;
- margin: var(--universal-margin);
- height: 0.0714285714rem;
- background: linear-gradient(to right, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent); }
-
-blockquote {
- display: block;
- position: relative;
- font-style: italic;
- color: var(--secondary-fore-color);
- margin: var(--universal-margin);
- padding: calc(3 * var(--universal-padding));
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.3rem solid var(--blockquote-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
- blockquote:before {
- position: absolute;
- top: calc(0rem - var(--universal-padding));
- left: 0;
- font-family: sans-serif;
- font-size: 2rem;
- font-weight: 800;
- content: "\201c";
- color: var(--blockquote-color); }
- blockquote[cite]:after {
- font-style: normal;
- font-size: 0.75em;
- font-weight: 700;
- content: "\a— " attr(cite);
- white-space: pre; }
-
-code, kbd, pre, samp {
- font-family: Menlo, Consolas, monospace;
- font-size: 0.85em; }
-
-code {
- background: var(--secondary-back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-kbd {
- background: var(--fore-color);
- color: var(--back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-pre {
- overflow: auto;
- background: var(--secondary-back-color);
- padding: calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.2857142857rem solid var(--pre-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
-
-sup, sub, code, kbd {
- line-height: 0;
- position: relative;
- vertical-align: baseline; }
-
-small, sup, sub, figcaption {
- font-size: 0.75em; }
-
-sup {
- top: -0.5em; }
-
-sub {
- bottom: -0.25em; }
-
-figure {
- margin: var(--universal-margin); }
-
-figcaption {
- color: var(--secondary-fore-color); }
-
-a {
- text-decoration: none; }
- a:link {
- color: var(--a-link-color); }
- a:visited {
- color: var(--a-visited-color); }
- a:hover, a:focus {
- text-decoration: underline; }
-
-/*
- Definitions for the grid system, cards and containers.
-*/
-.container {
- margin: 0 auto;
- padding: 0 calc(1.5 * var(--universal-padding)); }
-
-.row {
- box-sizing: border-box;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- margin: 0 0 0 var(--background-margin); }
-
-.col-sm,
-[class^='col-sm-'],
-[class^='col-sm-offset-'],
-.row[class*='cols-sm-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
-.col-sm,
-.row.cols-sm > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
-.col-sm-1,
-.row.cols-sm-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
-.col-sm-offset-0 {
- margin-left: 0; }
-
-.col-sm-2,
-.row.cols-sm-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
-.col-sm-offset-1 {
- margin-left: 8.3333333333%; }
-
-.col-sm-3,
-.row.cols-sm-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
-.col-sm-offset-2 {
- margin-left: 16.6666666667%; }
-
-.col-sm-4,
-.row.cols-sm-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
-.col-sm-offset-3 {
- margin-left: 25%; }
-
-.col-sm-5,
-.row.cols-sm-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
-.col-sm-offset-4 {
- margin-left: 33.3333333333%; }
-
-.col-sm-6,
-.row.cols-sm-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
-.col-sm-offset-5 {
- margin-left: 41.6666666667%; }
-
-.col-sm-7,
-.row.cols-sm-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
-.col-sm-offset-6 {
- margin-left: 50%; }
-
-.col-sm-8,
-.row.cols-sm-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
-.col-sm-offset-7 {
- margin-left: 58.3333333333%; }
-
-.col-sm-9,
-.row.cols-sm-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
-.col-sm-offset-8 {
- margin-left: 66.6666666667%; }
-
-.col-sm-10,
-.row.cols-sm-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
-.col-sm-offset-9 {
- margin-left: 75%; }
-
-.col-sm-11,
-.row.cols-sm-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
-.col-sm-offset-10 {
- margin-left: 83.3333333333%; }
-
-.col-sm-12,
-.row.cols-sm-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
-.col-sm-offset-11 {
- margin-left: 91.6666666667%; }
-
-.col-sm-normal {
- order: initial; }
-
-.col-sm-first {
- order: -999; }
-
-.col-sm-last {
- order: 999; }
-
-@media screen and (min-width: 500px) {
- .col-md,
- [class^='col-md-'],
- [class^='col-md-offset-'],
- .row[class*='cols-md-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-md,
- .row.cols-md > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-md-1,
- .row.cols-md-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-md-offset-0 {
- margin-left: 0; }
-
- .col-md-2,
- .row.cols-md-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-md-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-md-3,
- .row.cols-md-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-md-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-md-4,
- .row.cols-md-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-md-offset-3 {
- margin-left: 25%; }
-
- .col-md-5,
- .row.cols-md-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-md-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-md-6,
- .row.cols-md-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-md-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-md-7,
- .row.cols-md-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-md-offset-6 {
- margin-left: 50%; }
-
- .col-md-8,
- .row.cols-md-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-md-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-md-9,
- .row.cols-md-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-md-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-md-10,
- .row.cols-md-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-md-offset-9 {
- margin-left: 75%; }
-
- .col-md-11,
- .row.cols-md-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-md-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-md-12,
- .row.cols-md-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-md-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-md-normal {
- order: initial; }
-
- .col-md-first {
- order: -999; }
-
- .col-md-last {
- order: 999; } }
-@media screen and (min-width: 1280px) {
- .col-lg,
- [class^='col-lg-'],
- [class^='col-lg-offset-'],
- .row[class*='cols-lg-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-lg,
- .row.cols-lg > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-lg-1,
- .row.cols-lg-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-lg-offset-0 {
- margin-left: 0; }
-
- .col-lg-2,
- .row.cols-lg-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-lg-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-lg-3,
- .row.cols-lg-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-lg-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-lg-4,
- .row.cols-lg-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-lg-offset-3 {
- margin-left: 25%; }
-
- .col-lg-5,
- .row.cols-lg-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-lg-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-lg-6,
- .row.cols-lg-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-lg-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-lg-7,
- .row.cols-lg-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-lg-offset-6 {
- margin-left: 50%; }
-
- .col-lg-8,
- .row.cols-lg-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-lg-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-lg-9,
- .row.cols-lg-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-lg-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-lg-10,
- .row.cols-lg-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-lg-offset-9 {
- margin-left: 75%; }
-
- .col-lg-11,
- .row.cols-lg-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-lg-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-lg-12,
- .row.cols-lg-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-lg-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-lg-normal {
- order: initial; }
-
- .col-lg-first {
- order: -999; }
-
- .col-lg-last {
- order: 999; } }
-/* Card component CSS variable definitions */
-:root {
- --card-back-color: #3cb4e6;
- --card-fore-color: #03234b;
- --card-border-color: #03234b; }
-
-.card {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-self: center;
- position: relative;
- width: 100%;
- background: var(--card-back-color);
- color: var(--card-fore-color);
- border: 0.0714285714rem solid var(--card-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- overflow: hidden; }
- @media screen and (min-width: 320px) {
- .card {
- max-width: 320px; } }
- .card > .sectione {
- background: var(--card-back-color);
- color: var(--card-fore-color);
- box-sizing: border-box;
- margin: 0;
- border: 0;
- border-radius: 0;
- border-bottom: 0.0714285714rem solid var(--card-border-color);
- padding: var(--universal-padding);
- width: 100%; }
- .card > .sectione.media {
- height: 200px;
- padding: 0;
- -o-object-fit: cover;
- object-fit: cover; }
- .card > .sectione:last-child {
- border-bottom: 0; }
-
-/*
- Custom elements for card elements.
-*/
-@media screen and (min-width: 240px) {
- .card.small {
- max-width: 240px; } }
-@media screen and (min-width: 480px) {
- .card.large {
- max-width: 480px; } }
-.card.fluid {
- max-width: 100%;
- width: auto; }
-
-.card.warning {
- --card-back-color: #e5b8b7;
- --card-fore-color: #3b234b;
- --card-border-color: #8c0078; }
-
-.card.error {
- --card-back-color: #464650;
- --card-fore-color: #ffffff;
- --card-border-color: #8c0078; }
-
-.card > .sectione.dark {
- --card-back-color: #3b234b;
- --card-fore-color: #ffffff; }
-
-.card > .sectione.double-padded {
- padding: calc(1.5 * var(--universal-padding)); }
-
-/*
- Definitions for forms and input elements.
-*/
-/* Input_control module CSS variable definitions */
-:root {
- --form-back-color: #ffe97f;
- --form-fore-color: #03234b;
- --form-border-color: #3cb4e6;
- --input-back-color: #ffffff;
- --input-fore-color: #03234b;
- --input-border-color: #3cb4e6;
- --input-focus-color: #0288d1;
- --input-invalid-color: #d32f2f;
- --button-back-color: #e2e2e2;
- --button-hover-back-color: #dcdcdc;
- --button-fore-color: #212121;
- --button-border-color: transparent;
- --button-hover-border-color: transparent;
- --button-group-border-color: rgba(124, 124, 124, 0.54); }
-
-form {
- background: var(--form-back-color);
- color: var(--form-fore-color);
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding); }
-
-fieldset {
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 4);
- padding: var(--universal-padding); }
-
-legend {
- box-sizing: border-box;
- display: table;
- max-width: 100%;
- white-space: normal;
- font-weight: 500;
- padding: calc(var(--universal-padding) / 2); }
-
-label {
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-.input-group {
- display: inline-block; }
- .input-group.fluid {
- display: flex;
- align-items: center;
- justify-content: center; }
- .input-group.fluid > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
- @media screen and (max-width: 499px) {
- .input-group.fluid {
- align-items: stretch;
- flex-direction: column; } }
- .input-group.vertical {
- display: flex;
- align-items: stretch;
- flex-direction: column; }
- .input-group.vertical > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
-
-[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button {
- height: auto; }
-
-[type="search"] {
- -webkit-appearance: textfield;
- outline-offset: -2px; }
-
-[type="search"]::-webkit-search-cancel-button,
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none; }
-
-input:not([type]), [type="text"], [type="email"], [type="number"], [type="search"],
-[type="password"], [type="url"], [type="tel"], [type="checkbox"], [type="radio"], textarea, select {
- box-sizing: border-box;
- background: var(--input-back-color);
- color: var(--input-fore-color);
- border: 0.0714285714rem solid var(--input-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 2);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
-
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):hover, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus, textarea:hover, textarea:focus, select:hover, select:focus {
- border-color: var(--input-focus-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):invalid, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus:invalid, textarea:invalid, textarea:focus:invalid, select:invalid, select:focus:invalid {
- border-color: var(--input-invalid-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"])[readonly], textarea[readonly], select[readonly] {
- background: var(--secondary-back-color); }
-
-select {
- max-width: 100%; }
-
-option {
- overflow: hidden;
- text-overflow: ellipsis; }
-
-[type="checkbox"], [type="radio"] {
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- position: relative;
- height: calc(1rem + var(--universal-padding) / 2);
- width: calc(1rem + var(--universal-padding) / 2);
- vertical-align: text-bottom;
- padding: 0;
- flex-basis: calc(1rem + var(--universal-padding) / 2) !important;
- flex-grow: 0 !important; }
- [type="checkbox"]:checked:before, [type="radio"]:checked:before {
- position: absolute; }
-
-[type="checkbox"]:checked:before {
- content: '\2713';
- font-family: sans-serif;
- font-size: calc(1rem + var(--universal-padding) / 2);
- top: calc(0rem - var(--universal-padding));
- left: calc(var(--universal-padding) / 4); }
-
-[type="radio"] {
- border-radius: 100%; }
- [type="radio"]:checked:before {
- border-radius: 100%;
- content: '';
- top: calc(0.0714285714rem + var(--universal-padding) / 2);
- left: calc(0.0714285714rem + var(--universal-padding) / 2);
- background: var(--input-fore-color);
- width: 0.5rem;
- height: 0.5rem; }
-
-:placeholder-shown {
- color: var(--input-fore-color); }
-
-::-ms-placeholder {
- color: var(--input-fore-color);
- opacity: 0.54; }
-
-button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0; }
-
-button, html [type="button"], [type="reset"], [type="submit"] {
- -webkit-appearance: button; }
-
-button {
- overflow: visible;
- text-transform: none; }
-
-button, [type="button"], [type="submit"], [type="reset"],
-a.button, label.button, .button,
-a[role="button"], label[role="button"], [role="button"] {
- display: inline-block;
- background: var(--button-back-color);
- color: var(--button-fore-color);
- border: 0.0714285714rem solid var(--button-border-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- text-decoration: none;
- cursor: pointer;
- transition: background 0.3s; }
- button:hover, button:focus, [type="button"]:hover, [type="button"]:focus, [type="submit"]:hover, [type="submit"]:focus, [type="reset"]:hover, [type="reset"]:focus,
- a.button:hover,
- a.button:focus, label.button:hover, label.button:focus, .button:hover, .button:focus,
- a[role="button"]:hover,
- a[role="button"]:focus, label[role="button"]:hover, label[role="button"]:focus, [role="button"]:hover, [role="button"]:focus {
- background: var(--button-hover-back-color);
- border-color: var(--button-hover-border-color); }
-
-input:disabled, input[disabled], textarea:disabled, textarea[disabled], select:disabled, select[disabled], button:disabled, button[disabled], .button:disabled, .button[disabled], [role="button"]:disabled, [role="button"][disabled] {
- cursor: not-allowed;
- opacity: 0.75; }
-
-.button-group {
- display: flex;
- border: 0.0714285714rem solid var(--button-group-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- .button-group > button, .button-group [type="button"], .button-group > [type="submit"], .button-group > [type="reset"], .button-group > .button, .button-group > [role="button"] {
- margin: 0;
- max-width: 100%;
- flex: 1 1 auto;
- text-align: center;
- border: 0;
- border-radius: 0;
- box-shadow: none; }
- .button-group > :not(:first-child) {
- border-left: 0.0714285714rem solid var(--button-group-border-color); }
- @media screen and (max-width: 499px) {
- .button-group {
- flex-direction: column; }
- .button-group > :not(:first-child) {
- border: 0;
- border-top: 0.0714285714rem solid var(--button-group-border-color); } }
-
-/*
- Custom elements for forms and input elements.
-*/
-button.primary, [type="button"].primary, [type="submit"].primary, [type="reset"].primary, .button.primary, [role="button"].primary {
- --button-back-color: #1976d2;
- --button-fore-color: #f8f8f8; }
- button.primary:hover, button.primary:focus, [type="button"].primary:hover, [type="button"].primary:focus, [type="submit"].primary:hover, [type="submit"].primary:focus, [type="reset"].primary:hover, [type="reset"].primary:focus, .button.primary:hover, .button.primary:focus, [role="button"].primary:hover, [role="button"].primary:focus {
- --button-hover-back-color: #1565c0; }
-
-button.secondary, [type="button"].secondary, [type="submit"].secondary, [type="reset"].secondary, .button.secondary, [role="button"].secondary {
- --button-back-color: #d32f2f;
- --button-fore-color: #f8f8f8; }
- button.secondary:hover, button.secondary:focus, [type="button"].secondary:hover, [type="button"].secondary:focus, [type="submit"].secondary:hover, [type="submit"].secondary:focus, [type="reset"].secondary:hover, [type="reset"].secondary:focus, .button.secondary:hover, .button.secondary:focus, [role="button"].secondary:hover, [role="button"].secondary:focus {
- --button-hover-back-color: #c62828; }
-
-button.tertiary, [type="button"].tertiary, [type="submit"].tertiary, [type="reset"].tertiary, .button.tertiary, [role="button"].tertiary {
- --button-back-color: #308732;
- --button-fore-color: #f8f8f8; }
- button.tertiary:hover, button.tertiary:focus, [type="button"].tertiary:hover, [type="button"].tertiary:focus, [type="submit"].tertiary:hover, [type="submit"].tertiary:focus, [type="reset"].tertiary:hover, [type="reset"].tertiary:focus, .button.tertiary:hover, .button.tertiary:focus, [role="button"].tertiary:hover, [role="button"].tertiary:focus {
- --button-hover-back-color: #277529; }
-
-button.inverse, [type="button"].inverse, [type="submit"].inverse, [type="reset"].inverse, .button.inverse, [role="button"].inverse {
- --button-back-color: #212121;
- --button-fore-color: #f8f8f8; }
- button.inverse:hover, button.inverse:focus, [type="button"].inverse:hover, [type="button"].inverse:focus, [type="submit"].inverse:hover, [type="submit"].inverse:focus, [type="reset"].inverse:hover, [type="reset"].inverse:focus, .button.inverse:hover, .button.inverse:focus, [role="button"].inverse:hover, [role="button"].inverse:focus {
- --button-hover-back-color: #111; }
-
-button.small, [type="button"].small, [type="submit"].small, [type="reset"].small, .button.small, [role="button"].small {
- padding: calc(0.5 * var(--universal-padding)) calc(0.75 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-button.large, [type="button"].large, [type="submit"].large, [type="reset"].large, .button.large, [role="button"].large {
- padding: calc(1.5 * var(--universal-padding)) calc(2 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-/*
- Definitions for navigation elements.
-*/
-/* Navigation module CSS variable definitions */
-:root {
- --header-back-color: #03234b;
- --header-hover-back-color: #ffd200;
- --header-fore-color: #ffffff;
- --header-border-color: #3cb4e6;
- --nav-back-color: #ffffff;
- --nav-hover-back-color: #ffe97f;
- --nav-fore-color: #e6007e;
- --nav-border-color: #3cb4e6;
- --nav-link-color: #3cb4e6;
- --footer-fore-color: #ffffff;
- --footer-back-color: #03234b;
- --footer-border-color: #3cb4e6;
- --footer-link-color: #3cb4e6;
- --drawer-back-color: #ffffff;
- --drawer-hover-back-color: #ffe97f;
- --drawer-border-color: #3cb4e6;
- --drawer-close-color: #e6007e; }
-
-header {
- height: 2.75rem;
- background: var(--header-back-color);
- color: var(--header-fore-color);
- border-bottom: 0.0714285714rem solid var(--header-border-color);
- padding: calc(var(--universal-padding) / 4) 0;
- white-space: nowrap;
- overflow-x: auto;
- overflow-y: hidden; }
- header.row {
- box-sizing: content-box; }
- header .logo {
- color: var(--header-fore-color);
- font-size: 1.75rem;
- padding: var(--universal-padding) calc(2 * var(--universal-padding));
- text-decoration: none; }
- header button, header [type="button"], header .button, header [role="button"] {
- box-sizing: border-box;
- position: relative;
- top: calc(0rem - var(--universal-padding) / 4);
- height: calc(3.1875rem + var(--universal-padding) / 2);
- background: var(--header-back-color);
- line-height: calc(3.1875rem - var(--universal-padding) * 1.5);
- text-align: center;
- color: var(--header-fore-color);
- border: 0;
- border-radius: 0;
- margin: 0;
- text-transform: uppercase; }
- header button:hover, header button:focus, header [type="button"]:hover, header [type="button"]:focus, header .button:hover, header .button:focus, header [role="button"]:hover, header [role="button"]:focus {
- background: var(--header-hover-back-color); }
-
-nav {
- background: var(--nav-back-color);
- color: var(--nav-fore-color);
- border: 0.0714285714rem solid var(--nav-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- nav * {
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
- nav a, nav a:visited {
- display: block;
- color: var(--nav-link-color);
- border-radius: var(--universal-border-radius);
- transition: background 0.3s; }
- nav a:hover, nav a:focus, nav a:visited:hover, nav a:visited:focus {
- text-decoration: none;
- background: var(--nav-hover-back-color); }
- nav .sublink-1 {
- position: relative;
- margin-left: calc(2 * var(--universal-padding)); }
- nav .sublink-1:before {
- position: absolute;
- left: calc(var(--universal-padding) - 1 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
- nav .sublink-2 {
- position: relative;
- margin-left: calc(4 * var(--universal-padding)); }
- nav .sublink-2:before {
- position: absolute;
- left: calc(var(--universal-padding) - 3 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
-
-footer {
- background: var(--footer-back-color);
- color: var(--footer-fore-color);
- border-top: 0.0714285714rem solid var(--footer-border-color);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding);
- font-size: 0.875rem; }
- footer a, footer a:visited {
- color: var(--footer-link-color); }
-
-header.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- top: 0; }
-
-footer.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- bottom: 0; }
-
-.drawer-toggle:before {
- display: inline-block;
- position: relative;
- vertical-align: bottom;
- content: '\00a0\2261\00a0';
- font-family: sans-serif;
- font-size: 1.5em; }
-@media screen and (min-width: 500px) {
- .drawer-toggle:not(.persistent) {
- display: none; } }
-
-[type="checkbox"].drawer {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].drawer + * {
- display: block;
- box-sizing: border-box;
- position: fixed;
- top: 0;
- width: 320px;
- height: 100vh;
- overflow-y: auto;
- background: var(--drawer-back-color);
- border: 0.0714285714rem solid var(--drawer-border-color);
- border-radius: 0;
- margin: 0;
- z-index: 1110;
- right: -320px;
- transition: right 0.3s; }
- [type="checkbox"].drawer + * .drawer-close {
- position: absolute;
- top: var(--universal-margin);
- right: var(--universal-margin);
- z-index: 1111;
- width: 2rem;
- height: 2rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].drawer + * .drawer-close:before {
- display: block;
- content: '\00D7';
- color: var(--drawer-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 2rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].drawer + * .drawer-close:hover, [type="checkbox"].drawer + * .drawer-close:focus {
- background: var(--drawer-hover-back-color); }
- @media screen and (max-width: 320px) {
- [type="checkbox"].drawer + * {
- width: 100%; } }
- [type="checkbox"].drawer:checked + * {
- right: 0; }
- @media screen and (min-width: 500px) {
- [type="checkbox"].drawer:not(.persistent) + * {
- position: static;
- height: 100%;
- z-index: 1100; }
- [type="checkbox"].drawer:not(.persistent) + * .drawer-close {
- display: none; } }
-
-/*
- Definitions for the responsive table component.
-*/
-/* Table module CSS variable definitions. */
-:root {
- --table-border-color: #03234b;
- --table-border-separator-color: #03234b;
- --table-head-back-color: #03234b;
- --table-head-fore-color: #ffffff;
- --table-body-back-color: #ffffff;
- --table-body-fore-color: #03234b;
- --table-body-alt-back-color: #f4f4f4; }
-
-table {
- border-collapse: separate;
- border-spacing: 0;
- margin: 0;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- padding: var(--universal-padding);
- padding-top: 0; }
- table caption {
- font-size: 1rem;
- margin: calc(2 * var(--universal-margin)) 0;
- max-width: 100%;
- flex: 0 0 100%; }
- table thead, table tbody {
- display: flex;
- flex-flow: row wrap;
- border: 0.0714285714rem solid var(--table-border-color); }
- table thead {
- z-index: 999;
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0;
- border-bottom: 0.0714285714rem solid var(--table-border-separator-color); }
- table tbody {
- border-top: 0;
- margin-top: calc(0 - var(--universal-margin));
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- table tr {
- display: flex;
- padding: 0; }
- table th, table td {
- padding: calc(0.5 * var(--universal-padding));
- font-size: 0.9rem; }
- table th {
- text-align: left;
- background: var(--table-head-back-color);
- color: var(--table-head-fore-color); }
- table td {
- background: var(--table-body-back-color);
- color: var(--table-body-fore-color);
- border-top: 0.0714285714rem solid var(--table-border-color); }
-
-table:not(.horizontal) {
- overflow: auto;
- max-height: 100%; }
- table:not(.horizontal) thead, table:not(.horizontal) tbody {
- max-width: 100%;
- flex: 0 0 100%; }
- table:not(.horizontal) tr {
- flex-flow: row wrap;
- flex: 0 0 100%; }
- table:not(.horizontal) th, table:not(.horizontal) td {
- flex: 1 0 0%;
- overflow: hidden;
- text-overflow: ellipsis; }
- table:not(.horizontal) thead {
- position: sticky;
- top: 0; }
- table:not(.horizontal) tbody tr:first-child td {
- border-top: 0; }
-
-table.horizontal {
- border: 0; }
- table.horizontal thead, table.horizontal tbody {
- border: 0;
- flex: .2 0 0;
- flex-flow: row nowrap; }
- table.horizontal tbody {
- overflow: auto;
- justify-content: space-between;
- flex: .8 0 0;
- margin-left: 0;
- padding-bottom: calc(var(--universal-padding) / 4); }
- table.horizontal tr {
- flex-direction: column;
- flex: 1 0 auto; }
- table.horizontal th, table.horizontal td {
- width: auto;
- border: 0;
- border-bottom: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal th:not(:first-child), table.horizontal td:not(:first-child) {
- border-top: 0; }
- table.horizontal th {
- text-align: right;
- border-left: 0.0714285714rem solid var(--table-border-color);
- border-right: 0.0714285714rem solid var(--table-border-separator-color); }
- table.horizontal thead tr:first-child {
- padding-left: 0; }
- table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td {
- border-right: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td:first-child {
- border-top-right-radius: 0.25rem; }
- table.horizontal tbody tr:last-child td:last-child {
- border-bottom-right-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:first-child {
- border-top-left-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:last-child {
- border-bottom-left-radius: 0.25rem; }
-
-@media screen and (max-width: 499px) {
- table, table.horizontal {
- border-collapse: collapse;
- border: 0;
- width: 100%;
- display: table; }
- table thead, table th, table.horizontal thead, table.horizontal th {
- border: 0;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- table tbody, table.horizontal tbody {
- border: 0;
- display: table-row-group; }
- table tr, table.horizontal tr {
- display: block;
- border: 0.0714285714rem solid var(--table-border-color);
- border-radius: var(--universal-border-radius);
- background: #ffffff;
- padding: var(--universal-padding);
- margin: var(--universal-margin);
- margin-bottom: calc(1 * var(--universal-margin)); }
- table th, table td, table.horizontal th, table.horizontal td {
- width: auto; }
- table td, table.horizontal td {
- display: block;
- border: 0;
- text-align: right; }
- table td:before, table.horizontal td:before {
- content: attr(data-label);
- float: left;
- font-weight: 600; }
- table th:first-child, table td:first-child, table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0; }
- table tbody tr:last-child td, table.horizontal tbody tr:last-child td {
- border-right: 0; } }
-table tr:nth-of-type(2n) > td {
- background: var(--table-body-alt-back-color); }
-
-@media screen and (max-width: 500px) {
- table tr:nth-of-type(2n) {
- background: var(--table-body-alt-back-color); } }
-:root {
- --table-body-hover-back-color: #90caf9; }
-
-table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); }
-
-@media screen and (max-width: 500px) {
- table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); } }
-/*
- Definitions for contextual background elements, toasts and tooltips.
-*/
-/* Contextual module CSS variable definitions */
-:root {
- --mark-back-color: #3cb4e6;
- --mark-fore-color: #ffffff; }
-
-mark {
- background: var(--mark-back-color);
- color: var(--mark-fore-color);
- font-size: 0.95em;
- line-height: 1em;
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) var(--universal-padding); }
- mark.inline-block {
- display: inline-block;
- font-size: 1em;
- line-height: 1.4;
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-:root {
- --toast-back-color: #424242;
- --toast-fore-color: #fafafa; }
-
-.toast {
- position: fixed;
- bottom: calc(var(--universal-margin) * 3);
- left: 50%;
- transform: translate(-50%, -50%);
- z-index: 1111;
- color: var(--toast-fore-color);
- background: var(--toast-back-color);
- border-radius: calc(var(--universal-border-radius) * 16);
- padding: var(--universal-padding) calc(var(--universal-padding) * 3); }
-
-:root {
- --tooltip-back-color: #212121;
- --tooltip-fore-color: #fafafa; }
-
-.tooltip {
- position: relative;
- display: inline-block; }
- .tooltip:before, .tooltip:after {
- position: absolute;
- opacity: 0;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: all 0.3s;
- z-index: 1010;
- left: 50%; }
- .tooltip:not(.bottom):before, .tooltip:not(.bottom):after {
- bottom: 75%; }
- .tooltip.bottom:before, .tooltip.bottom:after {
- top: 75%; }
- .tooltip:hover:before, .tooltip:hover:after, .tooltip:focus:before, .tooltip:focus:after {
- opacity: 1;
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%); }
- .tooltip:before {
- content: '';
- background: transparent;
- border: var(--universal-margin) solid transparent;
- left: calc(50% - var(--universal-margin)); }
- .tooltip:not(.bottom):before {
- border-top-color: #212121; }
- .tooltip.bottom:before {
- border-bottom-color: #212121; }
- .tooltip:after {
- content: attr(aria-label);
- color: var(--tooltip-fore-color);
- background: var(--tooltip-back-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- white-space: nowrap;
- transform: translateX(-50%); }
- .tooltip:not(.bottom):after {
- margin-bottom: calc(2 * var(--universal-margin)); }
- .tooltip.bottom:after {
- margin-top: calc(2 * var(--universal-margin)); }
-
-:root {
- --modal-overlay-color: rgba(0, 0, 0, 0.45);
- --modal-close-color: #e6007e;
- --modal-close-hover-color: #ffe97f; }
-
-[type="checkbox"].modal {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].modal + div {
- position: fixed;
- top: 0;
- left: 0;
- display: none;
- width: 100vw;
- height: 100vh;
- background: var(--modal-overlay-color); }
- [type="checkbox"].modal + div .card {
- margin: 0 auto;
- max-height: 50vh;
- overflow: auto; }
- [type="checkbox"].modal + div .card .modal-close {
- position: absolute;
- top: 0;
- right: 0;
- width: 1.75rem;
- height: 1.75rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].modal + div .card .modal-close:before {
- display: block;
- content: '\00D7';
- color: var(--modal-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 1.75rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].modal + div .card .modal-close:hover, [type="checkbox"].modal + div .card .modal-close:focus {
- background: var(--modal-close-hover-color); }
- [type="checkbox"].modal:checked + div {
- display: flex;
- flex: 0 1 auto;
- z-index: 1200; }
- [type="checkbox"].modal:checked + div .card .modal-close {
- z-index: 1211; }
-
-:root {
- --collapse-label-back-color: #03234b;
- --collapse-label-fore-color: #ffffff;
- --collapse-label-hover-back-color: #3cb4e6;
- --collapse-selected-label-back-color: #3cb4e6;
- --collapse-border-color: var(--collapse-label-back-color);
- --collapse-selected-border-color: #ceecf8;
- --collapse-content-back-color: #ffffff;
- --collapse-selected-label-border-color: #3cb4e6; }
-
-.collapse {
- width: calc(100% - 2 * var(--universal-margin));
- opacity: 1;
- display: flex;
- flex-direction: column;
- margin: var(--universal-margin);
- border-radius: var(--universal-border-radius); }
- .collapse > [type="radio"], .collapse > [type="checkbox"] {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- .collapse > label {
- flex-grow: 1;
- display: inline-block;
- height: 1.25rem;
- cursor: pointer;
- transition: background 0.2s;
- color: var(--collapse-label-fore-color);
- background: var(--collapse-label-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- padding: calc(1.25 * var(--universal-padding)); }
- .collapse > label:hover, .collapse > label:focus {
- background: var(--collapse-label-hover-back-color); }
- .collapse > label + div {
- flex-basis: auto;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: max-height 0.3s;
- max-height: 1px; }
- .collapse > :checked + label {
- background: var(--collapse-selected-label-back-color);
- border-color: var(--collapse-selected-label-border-color); }
- .collapse > :checked + label + div {
- box-sizing: border-box;
- position: relative;
- width: 100%;
- height: auto;
- overflow: auto;
- margin: 0;
- background: var(--collapse-content-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- border-top: 0;
- padding: var(--universal-padding);
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%);
- max-height: 100%; }
- .collapse > label:not(:first-of-type) {
- border-top: 0; }
- .collapse > label:first-of-type {
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0; }
- .collapse > label:last-of-type:not(:first-of-type) {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- .collapse > label:last-of-type:first-of-type {
- border-radius: var(--universal-border-radius); }
- .collapse > :checked:last-of-type:not(:first-of-type) + label {
- border-radius: 0; }
- .collapse > :checked:last-of-type + label + div {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
-
-/*
- Custom elements for contextual background elements, toasts and tooltips.
-*/
-mark.tertiary {
- --mark-back-color: #3cb4e6; }
-
-mark.tag {
- padding: calc(var(--universal-padding)/2) var(--universal-padding);
- border-radius: 1em; }
-
-/*
- Definitions for progress elements and spinners.
-*/
-/* Progress module CSS variable definitions */
-:root {
- --progress-back-color: #3cb4e6;
- --progress-fore-color: #555; }
-
-progress {
- display: block;
- vertical-align: baseline;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- height: 0.75rem;
- width: calc(100% - 2 * var(--universal-margin));
- margin: var(--universal-margin);
- border: 0;
- border-radius: calc(2 * var(--universal-border-radius));
- background: var(--progress-back-color);
- color: var(--progress-fore-color); }
- progress::-webkit-progress-value {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress::-webkit-progress-bar {
- background: var(--progress-back-color); }
- progress::-moz-progress-bar {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-webkit-progress-value {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-moz-progress-bar {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress.inline {
- display: inline-block;
- vertical-align: middle;
- width: 60%; }
-
-:root {
- --spinner-back-color: #ddd;
- --spinner-fore-color: #555; }
-
-@keyframes spinner-donut-anim {
- 0% {
- transform: rotate(0deg); }
- 100% {
- transform: rotate(360deg); } }
-.spinner {
- display: inline-block;
- margin: var(--universal-margin);
- border: 0.25rem solid var(--spinner-back-color);
- border-left: 0.25rem solid var(--spinner-fore-color);
- border-radius: 50%;
- width: 1.25rem;
- height: 1.25rem;
- animation: spinner-donut-anim 1.2s linear infinite; }
-
-/*
- Custom elements for progress bars and spinners.
-*/
-progress.primary {
- --progress-fore-color: #1976d2; }
-
-progress.secondary {
- --progress-fore-color: #d32f2f; }
-
-progress.tertiary {
- --progress-fore-color: #308732; }
-
-.spinner.primary {
- --spinner-fore-color: #1976d2; }
-
-.spinner.secondary {
- --spinner-fore-color: #d32f2f; }
-
-.spinner.tertiary {
- --spinner-fore-color: #308732; }
-
-/*
- Definitions for icons - powered by Feather (https://feathericons.com/).
-*/
-span[class^='icon-'] {
- display: inline-block;
- height: 1em;
- width: 1em;
- vertical-align: -0.125em;
- background-size: contain;
- margin: 0 calc(var(--universal-margin) / 4); }
- span[class^='icon-'].secondary {
- -webkit-filter: invert(25%);
- filter: invert(25%); }
- span[class^='icon-'].inverse {
- -webkit-filter: invert(100%);
- filter: invert(100%); }
-
-span.icon-alert {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-bookmark {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-calendar {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-credit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-edit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); }
-span.icon-link {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-help {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-home {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-info {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-lock {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-mail {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-location {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-phone {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-rss {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-search {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-settings {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-share {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-cart {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-upload {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-user {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E"); }
-
-/*
- Definitions for STMicroelectronics icons (https://brandportal.st.com/document/26).
-*/
-span.icon-st-update {
- background-image: url("Update.svg"); }
-span.icon-st-add {
- background-image: url("Add button.svg"); }
-
-/*
- Definitions for utilities and helper classes.
-*/
-/* Utility module CSS variable definitions */
-:root {
- --generic-border-color: rgba(0, 0, 0, 0.3);
- --generic-box-shadow: 0 0.2857142857rem 0.2857142857rem 0 rgba(0, 0, 0, 0.125), 0 0.1428571429rem 0.1428571429rem -0.1428571429rem rgba(0, 0, 0, 0.125); }
-
-.hidden {
- display: none !important; }
-
-.visually-hidden {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; }
-
-.bordered {
- border: 0.0714285714rem solid var(--generic-border-color) !important; }
-
-.rounded {
- border-radius: var(--universal-border-radius) !important; }
-
-.circular {
- border-radius: 50% !important; }
-
-.shadowed {
- box-shadow: var(--generic-box-shadow) !important; }
-
-.responsive-margin {
- margin: calc(var(--universal-margin) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-margin {
- margin: calc(var(--universal-margin) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-margin {
- margin: var(--universal-margin) !important; } }
-
-.responsive-padding {
- padding: calc(var(--universal-padding) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-padding {
- padding: calc(var(--universal-padding) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-padding {
- padding: var(--universal-padding) !important; } }
-
-@media screen and (max-width: 499px) {
- .hidden-sm {
- display: none !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .hidden-md {
- display: none !important; } }
-@media screen and (min-width: 1280px) {
- .hidden-lg {
- display: none !important; } }
-@media screen and (max-width: 499px) {
- .visually-hidden-sm {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .visually-hidden-md {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 1280px) {
- .visually-hidden-lg {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-
-/*# sourceMappingURL=mini-custom.css.map */
-
-img[alt="ST logo"] { display: block; margin: auto; width: 75%; max-width: 250px; min-width: 71px; }
-img[alt="Cube logo"] { float: right; width: 30%; max-width: 10rem; min-width: 8rem; padding-right: 1rem;}
-
-.figure {
- display: block;
- margin-left: auto;
- margin-right: auto;
- text-align: center;
-}
\ No newline at end of file
diff --git a/Drivers/BSP/STM324x9I_EVAL/_htmresc/st_logo_2020.png b/Drivers/BSP/STM324x9I_EVAL/_htmresc/st_logo_2020.png
deleted file mode 100644
index d6cebb5ac7..0000000000
Binary files a/Drivers/BSP/STM324x9I_EVAL/_htmresc/st_logo_2020.png and /dev/null differ
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval.c
deleted file mode 100644
index a96870e08c..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval.c
+++ /dev/null
@@ -1,911 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval.c
- * @author MCD Application Team
- * @brief This file provides a set of firmware functions to manage LEDs,
- * push-buttons and COM ports available on STM324x9I-EVAL evaluation
- * board(MB1045) RevB from STMicroelectronics.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info: ------------------------------------------------------------------
- User NOTE
-
- This driver requires the stm324x9i_eval_io to manage the joystick
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval.h"
-#include "stm324x9i_eval_io.h"
-
-/** @defgroup BSP BSP
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL STM324x9I EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_LOW_LEVEL STM324x9I EVAL LOW LEVEL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_LOW_LEVEL_Private_Defines STM324x9I EVAL LOW LEVEL Private Defines
- * @{
- */
-/**
- * @brief STM324x9I EVAL BSP Driver version number V3.0.3
- */
-#define __STM324x9I_EVAL_BSP_VERSION_MAIN (0x03) /*!< [31:24] main version */
-#define __STM324x9I_EVAL_BSP_VERSION_SUB1 (0x00) /*!< [23:16] sub1 version */
-#define __STM324x9I_EVAL_BSP_VERSION_SUB2 (0x03) /*!< [15:8] sub2 version */
-#define __STM324x9I_EVAL_BSP_VERSION_RC (0x00) /*!< [7:0] release candidate */
-#define __STM324x9I_EVAL_BSP_VERSION ((__STM324x9I_EVAL_BSP_VERSION_MAIN << 24)\
- |(__STM324x9I_EVAL_BSP_VERSION_SUB1 << 16)\
- |(__STM324x9I_EVAL_BSP_VERSION_SUB2 << 8 )\
- |(__STM324x9I_EVAL_BSP_VERSION_RC))
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LOW_LEVEL_Private_Variables STM324x9I EVAL LOW LEVEL Private Variables
- * @{
- */
-GPIO_TypeDef* GPIO_PORT[LEDn] = {LED1_GPIO_PORT,
- LED2_GPIO_PORT,
- LED3_GPIO_PORT,
- LED4_GPIO_PORT};
-
-const uint16_t GPIO_PIN[LEDn] = {LED1_PIN,
- LED2_PIN,
- LED3_PIN,
- LED4_PIN};
-
-GPIO_TypeDef* BUTTON_PORT[BUTTONn] = {WAKEUP_BUTTON_GPIO_PORT,
- TAMPER_BUTTON_GPIO_PORT,
- KEY_BUTTON_GPIO_PORT};
-
-const uint16_t BUTTON_PIN[BUTTONn] = {WAKEUP_BUTTON_PIN,
- TAMPER_BUTTON_PIN,
- KEY_BUTTON_PIN};
-
-const uint16_t BUTTON_IRQn[BUTTONn] = {WAKEUP_BUTTON_EXTI_IRQn,
- TAMPER_BUTTON_EXTI_IRQn,
- KEY_BUTTON_EXTI_IRQn};
-
-USART_TypeDef* COM_USART[COMn] = {EVAL_COM1};
-
-GPIO_TypeDef* COM_TX_PORT[COMn] = {EVAL_COM1_TX_GPIO_PORT};
-
-GPIO_TypeDef* COM_RX_PORT[COMn] = {EVAL_COM1_RX_GPIO_PORT};
-
-const uint16_t COM_TX_PIN[COMn] = {EVAL_COM1_TX_PIN};
-
-const uint16_t COM_RX_PIN[COMn] = {EVAL_COM1_RX_PIN};
-
-const uint16_t COM_TX_AF[COMn] = {EVAL_COM1_TX_AF};
-
-const uint16_t COM_RX_AF[COMn] = {EVAL_COM1_RX_AF};
-
-static I2C_HandleTypeDef heval_I2c;
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LOW_LEVEL_Private_FunctionPrototypes STM324x9I EVAL LOW LEVEL Private FunctionPrototypes
- * @{
- */
-static void I2Cx_MspInit(void);
-static void I2Cx_Init(void);
-static void I2Cx_ITConfig(void);
-static void I2Cx_Write(uint8_t Addr, uint8_t Reg, uint8_t Value);
-static uint8_t I2Cx_Read(uint8_t Addr, uint8_t Reg);
-static HAL_StatusTypeDef I2Cx_ReadMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length);
-static HAL_StatusTypeDef I2Cx_WriteMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length);
-static HAL_StatusTypeDef I2Cx_IsDeviceReady(uint16_t DevAddress, uint32_t Trials);
-static void I2Cx_Error(uint8_t Addr);
-
-/* IOExpander IO functions */
-void IOE_Init(void);
-void IOE_ITConfig(void);
-void IOE_Delay(uint32_t Delay);
-void IOE_Write(uint8_t Addr, uint8_t Reg, uint8_t Value);
-uint8_t IOE_Read(uint8_t Addr, uint8_t Reg);
-uint16_t IOE_ReadMultiple(uint8_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length);
-void IOE_WriteMultiple(uint8_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length);
-
-/* AUDIO IO functions */
-void AUDIO_IO_Init(void);
-void AUDIO_IO_DeInit(void);
-void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value);
-uint16_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg);
-void AUDIO_IO_Delay(uint32_t Delay);
-
-/* CAMERA IO functions */
-void CAMERA_IO_Init(void);
-void CAMERA_Delay(uint32_t Delay);
-void CAMERA_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value);
-uint8_t CAMERA_IO_Read(uint8_t Addr, uint8_t Reg);
-
-/* I2C EEPROM IO function */
-void EEPROM_IO_Init(void);
-HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials);
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LOW_LEVEL_Private_Functions STM324x9I EVAL LOW LEVEL Private Functions
- * @{
- */
-
- /**
- * @brief This method returns the STM324x9I EVAL BSP Driver revision
- * @retval version: 0xXYZR (8bits for each decimal, R for RC)
- */
-uint32_t BSP_GetVersion(void)
-{
- return __STM324x9I_EVAL_BSP_VERSION;
-}
-
-/**
- * @brief Configures LED GPIO.
- * @param Led: LED to be configured.
- * This parameter can be one of the following values:
- * @arg LED1
- * @arg LED2
- * @arg LED3
- * @arg LED4
- */
-void BSP_LED_Init(Led_TypeDef Led)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable the GPIO_LED clock */
- LEDx_GPIO_CLK_ENABLE(Led);
-
- /* Configure the GPIO_LED pin */
- GPIO_InitStruct.Pin = GPIO_PIN[Led];
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
-
- HAL_GPIO_Init(GPIO_PORT[Led], &GPIO_InitStruct);
-
- HAL_GPIO_WritePin(GPIO_PORT[Led], GPIO_PIN[Led], GPIO_PIN_SET);
-}
-
-/**
- * @brief Turns selected LED On.
- * @param Led: LED to be set on
- * This parameter can be one of the following values:
- * @arg LED1
- * @arg LED2
- * @arg LED3
- * @arg LED4
- */
-void BSP_LED_On(Led_TypeDef Led)
-{
- HAL_GPIO_WritePin(GPIO_PORT[Led], GPIO_PIN[Led], GPIO_PIN_RESET);
-}
-
-/**
- * @brief Turns selected LED Off.
- * @param Led: LED to be set off
- * This parameter can be one of the following values:
- * @arg LED1
- * @arg LED2
- * @arg LED3
- * @arg LED4
- */
-void BSP_LED_Off(Led_TypeDef Led)
-{
- HAL_GPIO_WritePin(GPIO_PORT[Led], GPIO_PIN[Led], GPIO_PIN_SET);
-}
-
-/**
- * @brief Toggles the selected LED.
- * @param Led: LED to be toggled
- * This parameter can be one of the following values:
- * @arg LED1
- * @arg LED2
- * @arg LED3
- * @arg LED4
- */
-void BSP_LED_Toggle(Led_TypeDef Led)
-{
- HAL_GPIO_TogglePin(GPIO_PORT[Led], GPIO_PIN[Led]);
-}
-
-/**
- * @brief Configures button GPIO and EXTI Line.
- * @param Button: Button to be configured
- * This parameter can be one of the following values:
- * @arg BUTTON_WAKEUP: Wakeup Push Button
- * @arg BUTTON_TAMPER: Tamper Push Button
- * @param Button_Mode: Button mode
- * This parameter can be one of the following values:
- * @arg BUTTON_MODE_GPIO: Button will be used as simple IO
- * @arg BUTTON_MODE_EXTI: Button will be connected to EXTI line
- * with interrupt generation capability
- */
-void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef Button_Mode)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable the BUTTON clock */
- BUTTONx_GPIO_CLK_ENABLE(Button);
-
- if(Button_Mode == BUTTON_MODE_GPIO)
- {
- /* Configure Button pin as input */
- GPIO_InitStruct.Pin = BUTTON_PIN[Button];
- GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- HAL_GPIO_Init(BUTTON_PORT[Button], &GPIO_InitStruct);
- }
-
- if(Button_Mode == BUTTON_MODE_EXTI)
- {
- /* Configure Button pin as input with External interrupt */
- GPIO_InitStruct.Pin = BUTTON_PIN[Button];
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
-
- if(Button != BUTTON_WAKEUP)
- {
- GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
- }
- else
- {
- GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
- }
-
- HAL_GPIO_Init(BUTTON_PORT[Button], &GPIO_InitStruct);
-
- /* Enable and set Button EXTI Interrupt to the lowest priority */
- HAL_NVIC_SetPriority((IRQn_Type)(BUTTON_IRQn[Button]), 0x0F, 0x00);
- HAL_NVIC_EnableIRQ((IRQn_Type)(BUTTON_IRQn[Button]));
- }
-}
-
-/**
- * @brief Returns the selected button state.
- * @param Button: Button to be checked
- * This parameter can be one of the following values:
- * @arg BUTTON_WAKEUP: Wakeup Push Button
- * @arg BUTTON_TAMPER: Tamper Push Button
- * @arg BUTTON_KEY: Key Push Button
- * @retval The Button GPIO pin value
- */
-uint32_t BSP_PB_GetState(Button_TypeDef Button)
-{
- return HAL_GPIO_ReadPin(BUTTON_PORT[Button], BUTTON_PIN[Button]);
-}
-
-/**
- * @brief Configures COM port.
- * @param COM: COM port to be configured.
- * This parameter can be one of the following values:
- * @arg COM1
- * @arg COM2
- * @param huart: Pointer to a UART_HandleTypeDef structure that contains the
- * configuration information for the specified USART peripheral.
- */
-void BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef *huart)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable GPIO clock */
- EVAL_COMx_TX_GPIO_CLK_ENABLE(COM);
- EVAL_COMx_RX_GPIO_CLK_ENABLE(COM);
-
- /* Enable USART clock */
- EVAL_COMx_CLK_ENABLE(COM);
-
- /* Configure USART Tx as alternate function */
- GPIO_InitStruct.Pin = COM_TX_PIN[COM];
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- GPIO_InitStruct.Alternate = COM_TX_AF[COM];
- HAL_GPIO_Init(COM_TX_PORT[COM], &GPIO_InitStruct);
-
- /* Configure USART Rx as alternate function */
- GPIO_InitStruct.Pin = COM_RX_PIN[COM];
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Alternate = COM_RX_AF[COM];
- HAL_GPIO_Init(COM_RX_PORT[COM], &GPIO_InitStruct);
-
- /* USART configuration */
- huart->Instance = COM_USART[COM];
- HAL_UART_Init(huart);
-}
-
-/**
- * @brief Configures joystick GPIO and EXTI modes.
- * @param Joy_Mode: Button mode.
- * This parameter can be one of the following values:
- * @arg JOY_MODE_GPIO: Joystick pins will be used as simple IOs
- * @arg JOY_MODE_EXTI: Joystick pins will be connected to EXTI line
- * with interrupt generation capability
- * @retval IO_OK: if all initializations are OK. Other value if error.
- */
-uint8_t BSP_JOY_Init(JOYMode_TypeDef Joy_Mode)
-{
- uint8_t ret = 0;
-
- /* Initialize the IO functionalities */
- ret = BSP_IO_Init();
-
- /* Configure joystick pins in IT mode */
- if(Joy_Mode == JOY_MODE_EXTI)
- {
- /* Configure IO interrupt acquisition mode */
- BSP_IO_ConfigPin(JOY_ALL_PINS, IO_MODE_IT_FALLING_EDGE);
- }
-
- return ret;
-}
-
-/**
- * @brief Returns the current joystick status.
- * @retval Code of the joystick key pressed
- * This code can be one of the following values:
- * @arg JOY_NONE
- * @arg JOY_SEL
- * @arg JOY_DOWN
- * @arg JOY_LEFT
- * @arg JOY_RIGHT
- * @arg JOY_UP
- */
-JOYState_TypeDef BSP_JOY_GetState(void)
-{
- uint16_t tmp = 0;
-
- /* Read the status joystick pins */
- tmp = BSP_IO_ReadPin(JOY_ALL_PINS);
-
- /* Check the pressed keys */
- if((tmp & JOY_NONE_PIN) == JOY_NONE)
- {
- return(JOYState_TypeDef) JOY_NONE;
- }
- else if(!(tmp & JOY_SEL_PIN))
- {
- return(JOYState_TypeDef) JOY_SEL;
- }
- else if(!(tmp & JOY_DOWN_PIN))
- {
- return(JOYState_TypeDef) JOY_DOWN;
- }
- else if(!(tmp & JOY_LEFT_PIN))
- {
- return(JOYState_TypeDef) JOY_LEFT;
- }
- else if(!(tmp & JOY_RIGHT_PIN))
- {
- return(JOYState_TypeDef) JOY_RIGHT;
- }
- else if(!(tmp & JOY_UP_PIN))
- {
- return(JOYState_TypeDef) JOY_UP;
- }
- else
- {
- return(JOYState_TypeDef) JOY_NONE;
- }
-}
-
-/**
- * @brief Check TS3510 touch screen presence
- * @retval Return 0 if TS3510 is detected, return 1 if not detected
- */
-uint8_t BSP_TS3510_IsDetected(void)
-{
- HAL_StatusTypeDef status = HAL_OK;
- uint32_t error = 0;
- uint8_t a_buffer;
-
- uint8_t tmp_buffer[2] = {0x81, 0x08};
-
- /* Prepare for LCD read data */
- IOE_WriteMultiple(TS3510_I2C_ADDRESS, 0x8A, tmp_buffer, 2);
-
- status = HAL_I2C_Mem_Read(&heval_I2c, TS3510_I2C_ADDRESS, 0x8A, I2C_MEMADD_SIZE_8BIT, &a_buffer, 1, 1000);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- error = (uint32_t)HAL_I2C_GetError(&heval_I2c);
-
- /* I2C error occurred */
- I2Cx_Error(TS3510_I2C_ADDRESS);
-
- if(error == HAL_I2C_ERROR_AF)
- {
- return 1;
- }
- }
- return 0;
-}
-/*******************************************************************************
- BUS OPERATIONS
-*******************************************************************************/
-
-/******************************* I2C Routines *********************************/
-/**
- * @brief Initializes I2C MSP.
- */
-static void I2Cx_MspInit(void)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /*** Configure the GPIOs ***/
- /* Enable GPIO clock */
- EVAL_I2Cx_SCL_SDA_GPIO_CLK_ENABLE();
-
- /* Configure I2C Tx as alternate function */
- GPIO_InitStruct.Pin = EVAL_I2Cx_SCL_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Alternate = EVAL_I2Cx_SCL_SDA_AF;
- HAL_GPIO_Init(EVAL_I2Cx_SCL_SDA_GPIO_PORT, &GPIO_InitStruct);
-
- /* Configure I2C Rx as alternate function */
- GPIO_InitStruct.Pin = EVAL_I2Cx_SDA_PIN;
- HAL_GPIO_Init(EVAL_I2Cx_SCL_SDA_GPIO_PORT, &GPIO_InitStruct);
-
- /*** Configure the I2C peripheral ***/
- /* Enable I2C clock */
- EVAL_I2Cx_CLK_ENABLE();
-
- /* Force the I2C peripheral clock reset */
- EVAL_I2Cx_FORCE_RESET();
-
- /* Release the I2C peripheral clock reset */
- EVAL_I2Cx_RELEASE_RESET();
-
- /* Enable and set I2Cx Interrupt to a lower priority */
- HAL_NVIC_SetPriority(EVAL_I2Cx_EV_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(EVAL_I2Cx_EV_IRQn);
-
- /* Enable and set I2Cx Interrupt to a lower priority */
- HAL_NVIC_SetPriority(EVAL_I2Cx_ER_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(EVAL_I2Cx_ER_IRQn);
-}
-
-/**
- * @brief Initializes I2C HAL.
- */
-static void I2Cx_Init(void)
-{
- if(HAL_I2C_GetState(&heval_I2c) == HAL_I2C_STATE_RESET)
- {
- heval_I2c.Instance = I2C1;
- heval_I2c.Init.ClockSpeed = BSP_I2C_SPEED;
- heval_I2c.Init.DutyCycle = I2C_DUTYCYCLE_2;
- heval_I2c.Init.OwnAddress1 = 0;
- heval_I2c.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
- heval_I2c.Init.DualAddressMode = I2C_DUALADDRESS_DISABLED;
- heval_I2c.Init.OwnAddress2 = 0;
- heval_I2c.Init.GeneralCallMode = I2C_GENERALCALL_DISABLED;
- heval_I2c.Init.NoStretchMode = I2C_NOSTRETCH_DISABLED;
-
- /* Init the I2C */
- I2Cx_MspInit();
- HAL_I2C_Init(&heval_I2c);
- }
-}
-
-/**
- * @brief Configures I2C Interrupt.
- */
-static void I2Cx_ITConfig(void)
-{
- static uint8_t I2C_IT_Enabled = 0;
- GPIO_InitTypeDef GPIO_InitStruct;
-
- if(I2C_IT_Enabled == 0)
- {
- I2C_IT_Enabled = 1;
- /* Enable the GPIO EXTI clock */
- __GPIOI_CLK_ENABLE();
- __SYSCFG_CLK_ENABLE();
-
- GPIO_InitStruct.Pin = GPIO_PIN_8;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
- GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
- HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
-
- /* Enable and set GPIO EXTI Interrupt to the lowest priority */
- HAL_NVIC_SetPriority((IRQn_Type)(EXTI9_5_IRQn), 0x0F, 0x0F);
- HAL_NVIC_EnableIRQ((IRQn_Type)(EXTI9_5_IRQn));
- }
-}
-
-/**
- * @brief Writes a single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @param Value: Data to be written
- */
-static void I2Cx_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- HAL_StatusTypeDef status = HAL_OK;
-
- status = HAL_I2C_Mem_Write(&heval_I2c, Addr, (uint16_t)Reg, I2C_MEMADD_SIZE_8BIT, &Value, 1, 100);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* Execute user timeout callback */
- I2Cx_Error(Addr);
- }
-}
-
-/**
- * @brief Reads a single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @retval Read data
- */
-static uint8_t I2Cx_Read(uint8_t Addr, uint8_t Reg)
-{
- HAL_StatusTypeDef status = HAL_OK;
- uint8_t Value = 0;
-
- status = HAL_I2C_Mem_Read(&heval_I2c, Addr, Reg, I2C_MEMADD_SIZE_8BIT, &Value, 1, 1000);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* Execute user timeout callback */
- I2Cx_Error(Addr);
- }
- return Value;
-}
-
-/**
- * @brief Reads multiple data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param MemAddress: Internal memory address
- * @param Buffer: Pointer to data buffer
- * @param Length: Length of the data
- * @retval Number of read data
- */
-static HAL_StatusTypeDef I2Cx_ReadMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddress, uint8_t *Buffer, uint16_t Length)
-{
- HAL_StatusTypeDef status = HAL_OK;
-
- if(Addr == EXC7200_I2C_ADDRESS)
- {
- status = HAL_I2C_Master_Receive(&heval_I2c, Addr, Buffer, Length, 1000);
- }
- else
- {
- status = HAL_I2C_Mem_Read(&heval_I2c, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, 1000);
- }
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* I2C error occurred */
- I2Cx_Error(Addr);
- }
- return status;
-}
-
-/**
- * @brief Writes a value in a register of the device through BUS in using DMA mode.
- * @param Addr: Device address on BUS Bus.
- * @param Reg: The target register address to write
- * @param MemAddress: Internal memory address
- * @param Buffer: The target register value to be written
- * @param Length: buffer size to be written
- * @retval HAL status
- */
-static HAL_StatusTypeDef I2Cx_WriteMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddress, uint8_t *Buffer, uint16_t Length)
-{
- HAL_StatusTypeDef status = HAL_OK;
-
- status = HAL_I2C_Mem_Write(&heval_I2c, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, 1000);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* Re-Initialize the I2C Bus */
- I2Cx_Error(Addr);
- }
- return status;
-}
-
-/**
- * @brief Checks if target device is ready for communication.
- * @note This function is used with Memory devices
- * @param DevAddress: Target device address
- * @param Trials: Number of trials
- * @retval HAL status
- */
-static HAL_StatusTypeDef I2Cx_IsDeviceReady(uint16_t DevAddress, uint32_t Trials)
-{
- return (HAL_I2C_IsDeviceReady(&heval_I2c, DevAddress, Trials, 1000));
-}
-
-/**
- * @brief Manages error callback by re-initializing I2C.
- * @param Addr: I2C Address
- */
-static void I2Cx_Error(uint8_t Addr)
-{
- /* De-initialize the I2C communication bus */
- HAL_I2C_DeInit(&heval_I2c);
-
- /* Re-Initialize the I2C communication bus */
- I2Cx_Init();
-}
-
-/*******************************************************************************
- LINK OPERATIONS
-*******************************************************************************/
-
-/********************************* LINK IOE ***********************************/
-
-/**
- * @brief Initializes IOE low level.
- */
-void IOE_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief Configures IOE low level interrupt.
- */
-void IOE_ITConfig(void)
-{
- I2Cx_ITConfig();
-}
-
-/**
- * @brief IOE writes single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @param Value: Data to be written
- */
-void IOE_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- I2Cx_Write(Addr, Reg, Value);
-}
-
-/**
- * @brief IOE reads single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @retval Read data
- */
-uint8_t IOE_Read(uint8_t Addr, uint8_t Reg)
-{
- return I2Cx_Read(Addr, Reg);
-}
-
-/**
- * @brief IOE reads multiple data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @param Buffer: Pointer to data buffer
- * @param Length: Length of the data
- * @retval Number of read data
- */
-uint16_t IOE_ReadMultiple(uint8_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length)
-{
- return I2Cx_ReadMultiple(Addr, (uint16_t)Reg, I2C_MEMADD_SIZE_8BIT, Buffer, Length);
-}
-
-/**
- * @brief IOE writes multiple data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @param Buffer: Pointer to data buffer
- * @param Length: Length of the data
- */
-void IOE_WriteMultiple(uint8_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length)
-{
- I2Cx_WriteMultiple(Addr, (uint16_t)Reg, I2C_MEMADD_SIZE_8BIT, Buffer, Length);
-}
-
-/**
- * @brief IOE delay
- * @param Delay: Delay in ms
- */
-void IOE_Delay(uint32_t Delay)
-{
- HAL_Delay(Delay);
-}
-
-/********************************* LINK AUDIO *********************************/
-
-/**
- * @brief Initializes Audio low level.
- */
-void AUDIO_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief DeInitializes Audio low level.
- */
-void AUDIO_IO_DeInit(void)
-{
-
-}
-
-/**
- * @brief Writes a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param Value: Data to be written
- */
-void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value)
-{
- uint16_t tmp = Value;
-
- Value = ((uint16_t)(tmp >> 8) & 0x00FF);
-
- Value |= ((uint16_t)(tmp << 8)& 0xFF00);
-
- I2Cx_WriteMultiple(Addr, Reg, I2C_MEMADD_SIZE_16BIT,(uint8_t*)&Value, 2);
-}
-
-/**
- * @brief Reads a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @retval Data to be read
- */
-uint16_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg)
-{
- uint16_t Read_Value = 0, tmp = 0;
-
- I2Cx_ReadMultiple(Addr, Reg, I2C_MEMADD_SIZE_16BIT, (uint8_t*)&Read_Value, 2);
-
- tmp = ((uint16_t)(Read_Value >> 8) & 0x00FF);
-
- tmp |= ((uint16_t)(Read_Value << 8)& 0xFF00);
-
- Read_Value = tmp;
-
- return Read_Value;
-}
-
-/**
- * @brief AUDIO Codec delay
- * @param Delay: Delay in ms
- */
-void AUDIO_IO_Delay(uint32_t Delay)
-{
- HAL_Delay(Delay);
-}
-
-/********************************* LINK CAMERA ********************************/
-
-/**
- * @brief Initializes Camera low level.
- */
-void CAMERA_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief Camera writes single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @param Value: Data to be written
- */
-void CAMERA_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- I2Cx_Write(Addr, Reg, Value);
-}
-
-/**
- * @brief Camera reads single data.
- * @param Addr: I2C address
- * @param Reg: Register address
- * @retval Read data
- */
-uint8_t CAMERA_IO_Read(uint8_t Addr, uint8_t Reg)
-{
- return I2Cx_Read(Addr, Reg);
-}
-
-/**
- * @brief Camera delay
- * @param Delay: Delay in ms
- */
-void CAMERA_Delay(uint32_t Delay)
-{
- HAL_Delay(Delay);
-}
-
-/******************************** LINK I2C EEPROM *****************************/
-
-/**
- * @brief Initializes peripherals used by the I2C EEPROM driver.
- */
-void EEPROM_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief Write data to I2C EEPROM driver in using DMA channel.
- * @param DevAddress: Target device address
- * @param MemAddress: Internal memory address
- * @param pBuffer: Pointer to data buffer
- * @param BufferSize: Amount of data to be sent
- * @retval HAL status
- */
-HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
-{
- return (I2Cx_WriteMultiple(DevAddress, MemAddress, I2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize));
-}
-
-/**
- * @brief Read data from I2C EEPROM driver in using DMA channel.
- * @param DevAddress: Target device address
- * @param MemAddress: Internal memory address
- * @param pBuffer: Pointer to data buffer
- * @param BufferSize: Amount of data to be read
- * @retval HAL status
- */
-HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
-{
- return (I2Cx_ReadMultiple(DevAddress, MemAddress, I2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize));
-}
-
-/**
- * @brief Checks if target device is ready for communication.
- * @note This function is used with Memory devices
- * @param DevAddress: Target device address
- * @param Trials: Number of trials
- * @retval HAL status
- */
-HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials)
-{
- return (I2Cx_IsDeviceReady(DevAddress, Trials));
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval.h
deleted file mode 100644
index ebcf3fdf6d..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval.h
+++ /dev/null
@@ -1,318 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval.h
- * @author MCD Application Team
- * @brief This file contains definitions for STM324x9I_EVAL's LEDs,
- * push-buttons and COM ports hardware resources.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324X9I_EVAL_H
-#define __STM324X9I_EVAL_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_LOW_LEVEL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_LOW_LEVEL_Exported_Types STM324x9I EVAL LOW LEVEL Exported Types
- * @{
- */
-typedef enum
-{
- LED1 = 0,
- LED2 = 1,
- LED3 = 2,
- LED4 = 3
-}Led_TypeDef;
-
-typedef enum
-{
- BUTTON_WAKEUP = 0,
- BUTTON_TAMPER = 1,
- BUTTON_KEY = 2
-}Button_TypeDef;
-
-typedef enum
-{
- BUTTON_MODE_GPIO = 0,
- BUTTON_MODE_EXTI = 1
-}ButtonMode_TypeDef;
-
-typedef enum
-{
- JOY_MODE_GPIO = 0,
- JOY_MODE_EXTI = 1
-}JOYMode_TypeDef;
-
-typedef enum
-{
- JOY_NONE = 0,
- JOY_SEL = 1,
- JOY_DOWN = 2,
- JOY_LEFT = 3,
- JOY_RIGHT = 4,
- JOY_UP = 5
-}JOYState_TypeDef;
-
-typedef enum
-{
- COM1 = 0,
- COM2 = 1
-}COM_TypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LOW_LEVEL_Exported_Constants STM324x9I EVAL LOW LEVEL Exported Constants
- * @{
- */
-
-/**
- * @brief Define for STM324x9I_EVAL board
- */
-#if !defined (USE_STM324x9I_EVAL)
- #define USE_STM324x9I_EVAL
-#endif
-
-#define LEDn 4
-
-#define LED1_PIN GPIO_PIN_6
-#define LED1_GPIO_PORT GPIOG
-#define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
-#define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
-
-
-#define LED2_PIN GPIO_PIN_7
-#define LED2_GPIO_PORT GPIOG
-#define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
-#define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
-
-#define LED3_PIN GPIO_PIN_10
-#define LED3_GPIO_PORT GPIOG
-#define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
-#define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
-
-#define LED4_PIN GPIO_PIN_12
-#define LED4_GPIO_PORT GPIOG
-#define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
-#define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
-
-#define LEDx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) LED1_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 1) LED2_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 2) LED3_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 3) LED4_GPIO_CLK_ENABLE(); \
- }while(0)
-
-#define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) LED1_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 1) LED2_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 2) LED3_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 3) LED4_GPIO_CLK_DISABLE(); \
- }while(0)
-
-/* Joystick pins are connected to IO Expander (accessible through I2C1 interface) */
-#define BUTTONn 3
-
-/**
- * @brief Joystick Pins definition
- */
-#define JOY_SEL_PIN IO_PIN_14
-#define JOY_DOWN_PIN IO_PIN_13
-#define JOY_LEFT_PIN IO_PIN_12
-#define JOY_RIGHT_PIN IO_PIN_11
-#define JOY_UP_PIN IO_PIN_10
-#define JOY_NONE_PIN JOY_ALL_PINS
-#define JOY_ALL_PINS (IO_PIN_10 | IO_PIN_11 | IO_PIN_12 | IO_PIN_13 | IO_PIN_14)
-
-/**
- * @brief Wakeup push-button
- */
-#define WAKEUP_BUTTON_PIN GPIO_PIN_0
-#define WAKEUP_BUTTON_GPIO_PORT GPIOA
-#define WAKEUP_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define WAKEUP_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define WAKEUP_BUTTON_EXTI_IRQn EXTI0_IRQn
-
-/**
- * @brief Tamper push-button
- */
-#define TAMPER_BUTTON_PIN GPIO_PIN_13
-#define TAMPER_BUTTON_GPIO_PORT GPIOC
-#define TAMPER_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define TAMPER_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-#define TAMPER_BUTTON_EXTI_IRQn EXTI15_10_IRQn
-
-/**
- * @brief Key push-button
- */
-#define KEY_BUTTON_PIN GPIO_PIN_13
-#define KEY_BUTTON_GPIO_PORT GPIOC
-#define KEY_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-#define KEY_BUTTON_EXTI_IRQn EXTI15_10_IRQn
-
-#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) WAKEUP_BUTTON_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 1) TAMPER_BUTTON_GPIO_CLK_ENABLE(); else \
- if ((__INDEX__) == 2) KEY_BUTTON_GPIO_CLK_ENABLE(); \
- }while(0)
-#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) WAKEUP_BUTTON_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 1) TAMPER_BUTTON_GPIO_CLK_DISABLE(); else \
- if ((__INDEX__) == 2) KEY_BUTTON_GPIO_CLK_DISABLE(); \
- }while(0)
-
-#define COMn 1
-
-/**
- * @brief Definition for COM port1, connected to USART1
- */
-#define EVAL_COM1 USART1
-#define EVAL_COM1_CLK_ENABLE() __HAL_RCC_USART1_CLK_ENABLE()
-#define EVAL_COM1_CLK_DISABLE() __HAL_RCC_USART1_CLK_DISABLE()
-
-#define EVAL_COM1_TX_PIN GPIO_PIN_9
-#define EVAL_COM1_TX_GPIO_PORT GPIOA
-#define EVAL_COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define EVAL_COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define EVAL_COM1_TX_AF GPIO_AF7_USART1
-
-#define EVAL_COM1_RX_PIN GPIO_PIN_10
-#define EVAL_COM1_RX_GPIO_PORT GPIOA
-#define EVAL_COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define EVAL_COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define EVAL_COM1_RX_AF GPIO_AF7_USART1
-
-#define EVAL_COM1_IRQn USART1_IRQn
-
-#define EVAL_COMx_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_CLK_ENABLE(); \
- }while(0)
-#define EVAL_COMx_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_CLK_DISABLE(); \
- }while(0)
-
-#define EVAL_COMx_TX_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_TX_GPIO_CLK_ENABLE(); \
- }while(0)
-#define EVAL_COMx_TX_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_TX_GPIO_CLK_DISABLE(); \
- }while(0)
-
-#define EVAL_COMx_RX_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_RX_GPIO_CLK_ENABLE(); \
- }while(0)
-#define EVAL_COMx_RX_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_RX_GPIO_CLK_DISABLE(); \
- }while(0)
-
-/**
- * @brief Eval Pins definition
- */
-#define XSDN_PIN IO_PIN_0
-#define MII_INT_PIN IO_PIN_1
-#define RSTI_PIN IO_PIN_2
-#define CAM_PLUG_PIN IO_PIN_3
-#define LCD_INT_PIN IO_PIN_4
-#define AUDIO_INT_PIN IO_PIN_5
-#define OTG_FS1_OVER_CURRENT_PIN IO_PIN_6
-#define OTG_FS1_POWER_SWITCH_PIN IO_PIN_7
-#define OTG_FS2_OVER_CURRENT_PIN IO_PIN_8
-#define OTG_FS2_POWER_SWITCH_PIN IO_PIN_9
-#define SD_DETECT_PIN IO_PIN_15
-
-/* Exported constant IO ------------------------------------------------------*/
-#define IO_I2C_ADDRESS 0x84
-#define TS_I2C_ADDRESS 0x82
-#define TS3510_I2C_ADDRESS 0x80
-#define EXC7200_I2C_ADDRESS 0x08
-#define CAMERA_I2C_ADDRESS 0x60
-#define AUDIO_I2C_ADDRESS 0x34
-#define EEPROM_I2C_ADDRESS_A01 0xA0
-#define EEPROM_I2C_ADDRESS_A02 0xA6
-/* I2C clock speed configuration (in Hz)
- WARNING:
- Make sure that this define is not already declared in other files (ie.
- stm324x9I_eval.h file). It can be used in parallel by other modules. */
-#ifndef BSP_I2C_SPEED
- #define BSP_I2C_SPEED 100000
-#endif /* BSP_I2C_SPEED */
-
-/* User can use this section to tailor I2Cx/I2Cx instance used and associated
- resources */
-/* Definition for I2Cx clock resources */
-#define EVAL_I2Cx I2C1
-#define EVAL_I2Cx_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE()
-#define EVAL_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define EVAL_I2Cx_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-
-#define EVAL_I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
-#define EVAL_I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
-
-/* Definition for I2Cx Pins */
-#define EVAL_I2Cx_SCL_PIN GPIO_PIN_6
-#define EVAL_I2Cx_SCL_SDA_GPIO_PORT GPIOB
-#define EVAL_I2Cx_SCL_SDA_AF GPIO_AF4_I2C1
-#define EVAL_I2Cx_SDA_PIN GPIO_PIN_9
-
-/* I2C interrupt requests */
-#define EVAL_I2Cx_EV_IRQn I2C1_EV_IRQn
-#define EVAL_I2Cx_ER_IRQn I2C1_ER_IRQn
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LOW_LEVEL_Exported_Functions STM324x9I EVAL LOW LEVEL Exported Functions
- * @{
- */
-uint32_t BSP_GetVersion(void);
-void BSP_LED_Init(Led_TypeDef Led);
-void BSP_LED_On(Led_TypeDef Led);
-void BSP_LED_Off(Led_TypeDef Led);
-void BSP_LED_Toggle(Led_TypeDef Led);
-void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef Button_Mode);
-uint32_t BSP_PB_GetState(Button_TypeDef Button);
-void BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef *husart);
-uint8_t BSP_JOY_Init(JOYMode_TypeDef Joy_Mode);
-JOYState_TypeDef BSP_JOY_GetState(void);
-uint8_t BSP_TS3510_IsDetected(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324X9I_EVAL_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_audio.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_audio.c
deleted file mode 100644
index 70305fae61..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_audio.c
+++ /dev/null
@@ -1,1268 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_audio.c
- * @author MCD Application Team
- * @brief This file provides the Audio driver for the STM324x9I-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/*==============================================================================
- User NOTES
-
-How To use this driver:
------------------------
- + This driver supports STM32F4xx devices on STM324x9I-EVAL (MB1045) Evaluation boards.
- + Call the function BSP_AUDIO_OUT_Init(
- OutputDevice: physical output mode (OUTPUT_DEVICE_SPEAKER,
- OUTPUT_DEVICE_HEADPHONE or OUTPUT_DEVICE_BOTH)
- Volume : Initial volume to be set (0 is min (mute), 100 is max (100%)
- AudioFreq : Audio frequency in Hz (8000, 16000, 22500, 32000...)
- this parameter is relative to the audio file/stream type.
- )
- This function configures all the hardware required for the audio application (codec, I2C, SAI,
- GPIOs, DMA and interrupt if needed). This function returns AUDIO_OK if configuration is OK.
- If the returned value is different from AUDIO_OK or the function is stuck then the communication with
- the codec or the IOExpander has failed (try to un-plug the power or reset device in this case).
- - OUTPUT_DEVICE_SPEAKER : only speaker will be set as output for the audio stream.
- - OUTPUT_DEVICE_HEADPHONE: only headphones will be set as output for the audio stream.
- - OUTPUT_DEVICE_BOTH : both Speaker and Headphone are used as outputs for the audio stream
- at the same time.
- + Call the function BSP_EVAL_AUDIO_OUT_Play(
- pBuffer: pointer to the audio data file address
- Size : size of the buffer to be sent in Bytes
- )
- to start playing (for the first time) from the audio file/stream.
- + Call the function BSP_AUDIO_OUT_Pause() to pause playing
- + Call the function BSP_AUDIO_OUT_Resume() to resume playing.
- Note. After calling BSP_AUDIO_OUT_Pause() function for pause, only BSP_AUDIO_OUT_Resume() should be called
- for resume (it is not allowed to call BSP_AUDIO_OUT_Play() in this case).
- Note. This function should be called only when the audio file is played or paused (not stopped).
- + For each mode, you may need to implement the relative callback functions into your code.
- The Callback functions are named AUDIO_OUT_XXX_CallBack() and only their prototypes are declared in
- the stm324x9i_eval_audio.h file. (refer to the example for more details on the callbacks implementations)
- + To Stop playing, to modify the volume level, the frequency, the audio frame slot,
- the device output mode the mute or the stop, use the functions: BSP_AUDIO_OUT_SetVolume(),
- AUDIO_OUT_SetFrequency(), BSP_AUDIO_OUT_SetAudioFrameSlot(), BSP_AUDIO_OUT_SetOutputMode(),
- BSP_AUDIO_OUT_SetMute() and BSP_AUDIO_OUT_Stop().
- + The driver API and the callback functions are at the end of the stm324x9i_eval_audio.h file.
-
-Driver architecture:
---------------------
- + This driver provide the High Audio Layer: consists of the function API exported in the stm324x9i_eval_audio.h file
- (BSP_AUDIO_OUT_Init(), BSP_AUDIO_OUT_Play() ...)
- + This driver provide also the Media Access Layer (MAL): which consists of functions allowing to access the media containing/
- providing the audio file/stream.
-
-Known Limitations:
-------------------
- 1- If the TDM Format used to paly in parallel 2 audio Stream (the first Stream is configured in codec SLOT0 and second
- Stream in SLOT1) the Pause/Resume, volume and mute feature will control the both streams.
- 2- Parsing of audio file is not implemented (in order to determine audio file properties: Mono/Stereo, Data size,
- File size, Audio Frequency, Audio Data header size ...). The configuration is fixed for the given audio file.
- 3- Supports only Stereo audio streaming.
- 4- Supports only 16-bits audio data size.
-==============================================================================*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_audio.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO STM324x9I EVAL AUDIO
- * @brief This file includes the low layer driver for wm8994 Audio Codec
- * available on STM324x9I-EVAL evaluation board(MB1045).
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO_Private_Variables STM324x9I EVAL AUDIO Private Variables
- * @{
- */
-AUDIO_DrvTypeDef *audio_drv;
-SAI_HandleTypeDef haudio_out_sai;
-I2S_HandleTypeDef haudio_in_i2s;
-TIM_HandleTypeDef haudio_tim;
-
-/* PDM filters params */
-PDM_Filter_Handler_t PDM_FilterHandler[2];
-PDM_Filter_Config_t PDM_FilterConfig[2];
-
-uint8_t Channel_Demux[128] = {
- 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
- 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
- 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
- 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
- 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
- 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03,
- 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
- 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
- 0x08, 0x09, 0x08, 0x09, 0x0a, 0x0b, 0x0a, 0x0b,
- 0x08, 0x09, 0x08, 0x09, 0x0a, 0x0b, 0x0a, 0x0b,
- 0x0c, 0x0d, 0x0c, 0x0d, 0x0e, 0x0f, 0x0e, 0x0f,
- 0x0c, 0x0d, 0x0c, 0x0d, 0x0e, 0x0f, 0x0e, 0x0f,
- 0x08, 0x09, 0x08, 0x09, 0x0a, 0x0b, 0x0a, 0x0b,
- 0x08, 0x09, 0x08, 0x09, 0x0a, 0x0b, 0x0a, 0x0b,
- 0x0c, 0x0d, 0x0c, 0x0d, 0x0e, 0x0f, 0x0e, 0x0f,
- 0x0c, 0x0d, 0x0c, 0x0d, 0x0e, 0x0f, 0x0e, 0x0f
-};
-
-uint16_t __IO AudioInVolume = DEFAULT_AUDIO_IN_VOLUME;
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO_Private_Function_Prototypes STM324x9I EVAL AUDIO Private Function Prototypes
- * @{
- */
-static void SAIx_Init(uint32_t AudioFreq);
-static void SAIx_DeInit(void);
-static void I2Sx_Init(uint32_t AudioFreq);
-static void I2Sx_DeInit(void);
-static void TIMx_IC_MspInit(TIM_HandleTypeDef *htim);
-static void TIMx_IC_MspDeInit(TIM_HandleTypeDef *htim);
-static void TIMx_Init(void);
-static void TIMx_DeInit(void);
-static void PDMDecoder_Init(uint32_t AudioFreq, uint32_t ChnlNbrIn, uint32_t ChnlNbrOut);
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO_out_Private_Functions STM324x9I EVAL AUDIO OUT Private Functions
- * @{
- */
-
-/**
- * @brief Configures the audio peripherals.
- * @param OutputDevice: OUTPUT_DEVICE_SPEAKER, OUTPUT_DEVICE_HEADPHONE,
- * or OUTPUT_DEVICE_BOTH.
- * @param Volume: Initial volume level (from 0 (Mute) to 100 (Max))
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @note The I2S PLL input clock must be done in the user application.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
-{
- uint8_t ret = AUDIO_ERROR;
-
- /* Disable SAI */
- SAIx_DeInit();
-
- /* PLL clock is set depending by the AudioFreq (44.1khz vs 48khz groups) */
- BSP_AUDIO_OUT_ClockConfig(&haudio_out_sai, AudioFreq, NULL);
-
- /* SAI data transfer preparation:
- Prepare the Media to be used for the audio transfer from memory to SAI peripheral */
- haudio_out_sai.Instance = AUDIO_SAIx;
- if(HAL_SAI_GetState(&haudio_out_sai) == HAL_SAI_STATE_RESET)
- {
- /* Init the SAI MSP: this __weak function can be redefined by the application*/
- BSP_AUDIO_OUT_MspInit(&haudio_out_sai, NULL);
- }
- SAIx_Init(AudioFreq);
-
- /* wm8994 codec initialization */
- if((wm8994_drv.ReadID(AUDIO_I2C_ADDRESS)) == WM8994_ID)
- {
- /* Initialize the audio driver structure */
- audio_drv = &wm8994_drv;
- ret = AUDIO_OK;
- }
- else
- {
- ret = AUDIO_ERROR;
- }
-
- if(ret == AUDIO_OK)
- {
- /* Initialize the codec internal registers */
- audio_drv->Init(AUDIO_I2C_ADDRESS, OutputDevice, Volume, AudioFreq);
- }
-
- return ret;
-}
-
-/**
- * @brief De-initialize the audio peripherals.
- * @retval None
- */
-void BSP_AUDIO_OUT_DeInit(void)
-{
- SAIx_DeInit();
- /* DeInit the SAI MSP : this __weak function can be rewritten by the application */
- BSP_AUDIO_OUT_MspDeInit(&haudio_out_sai, NULL);
-}
-
-/**
- * @brief Starts playing audio stream from a data buffer for a determined size.
- * @param pBuffer: Pointer to the buffer
- * @param Size: Number of audio data BYTES.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size)
-{
- /* Call the audio Codec Play function */
- if(audio_drv->Play(AUDIO_I2C_ADDRESS, pBuffer, Size) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Update the Media layer and enable it for play */
- HAL_SAI_Transmit_DMA(&haudio_out_sai, (uint8_t*)pBuffer, DMA_MAX(Size / AUDIODATA_SIZE));
-
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Sends n-Bytes on the SAI interface.
- * @param pData: pointer on data address
- * @param Size: number of data to be written
- */
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
-{
- HAL_SAI_Transmit_DMA(&haudio_out_sai, (uint8_t*)pData, Size);
-}
-
-/**
- * @brief This function Pauses the audio file stream. In case
- * of using DMA, the DMA Pause feature is used.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Pause(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(audio_drv->Pause(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer pause function */
- HAL_SAI_DMAPause(&haudio_out_sai);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief This function Resumes the audio file stream.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Resume(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(audio_drv->Resume(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer pause/resume function */
- HAL_SAI_DMAResume(&haudio_out_sai);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Stops audio playing and Power down the Audio Codec.
- * @param Option: could be one of the following parameters
- * - CODEC_PDWN_SW: for software power off (by writing registers).
- * Then no need to reconfigure the Codec after power on.
- * - CODEC_PDWN_HW: completely shut down the codec (physically).
- * Then need to reconfigure the Codec after power on.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
-{
- /* Call the Media layer stop function */
- HAL_SAI_DMAStop(&haudio_out_sai);
-
- /* Call Audio Codec Stop function */
- if(audio_drv->Stop(AUDIO_I2C_ADDRESS, Option) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- if(Option == CODEC_PDWN_HW)
- {
- /* Wait at least 100us */
- HAL_Delay(1);
- }
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Controls the current audio volume level.
- * @param Volume: Volume level to be set in percentage from 0% to 100% (0 for
- * Mute and 100 for Max volume level).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
-{
- /* Call the codec volume control function with converted volume value */
- if(audio_drv->SetVolume(AUDIO_I2C_ADDRESS, Volume) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Enables or disables the MUTE mode by software
- * @param Cmd: Could be AUDIO_MUTE_ON to mute sound or AUDIO_MUTE_OFF to
- * unmute the codec and restore previous volume level.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
-{
- /* Call the Codec Mute function */
- if(audio_drv->SetMute(AUDIO_I2C_ADDRESS, Cmd) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Switch dynamically (while audio file is played) the output target
- * (speaker or headphone).
- * @param Output: The audio output target: OUTPUT_DEVICE_SPEAKER,
- * OUTPUT_DEVICE_HEADPHONE or OUTPUT_DEVICE_BOTH
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output)
-{
- /* Call the Codec output device function */
- if(audio_drv->SetOutputMode(AUDIO_I2C_ADDRESS, Output) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Updates the audio frequency.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @note This API should be called after the BSP_AUDIO_OUT_Init() to adjust the
- * audio frequency.
- */
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
-{
- /* PLL clock is set depending by the AudioFreq (44.1khz vs 48khz groups) */
- BSP_AUDIO_OUT_ClockConfig(&haudio_out_sai, AudioFreq, NULL);
-
- /* Disable SAI peripheral to allow access to SAI internal registers */
- __HAL_SAI_DISABLE(&haudio_out_sai);
-
- /* Update the SAI audio frequency configuration */
- haudio_out_sai.Init.AudioFrequency = AudioFreq;
- HAL_SAI_Init(&haudio_out_sai);
-
- /* Enable SAI peripheral to generate MCLK */
- __HAL_SAI_ENABLE(&haudio_out_sai);
-}
-
-/**
- * @brief Updates the Audio frame slot configuration.
- * @param AudioFrameSlot: specifies the audio Frame slot
- * @note This API should be called after the BSP_AUDIO_OUT_Init() to adjust the
- * audio frame slot.
- */
-void BSP_AUDIO_OUT_SetAudioFrameSlot(uint32_t AudioFrameSlot)
-{
- /* Disable SAI peripheral to allow access to SAI internal registers */
- __HAL_SAI_DISABLE(&haudio_out_sai);
-
- /* Update the SAI audio frame slot configuration */
- haudio_out_sai.SlotInit.SlotActive = AudioFrameSlot;
- HAL_SAI_Init(&haudio_out_sai);
-
- /* Enable SAI peripheral to generate MCLK */
- __HAL_SAI_ENABLE(&haudio_out_sai);
-}
-
-
-/**
- * @brief Clock Config.
- * @param hsai: might be required to set audio peripheral predivider if any.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @param Params : pointer on additional configuration parameters, can be NULL.
- * @note This API is called by BSP_AUDIO_OUT_Init() and BSP_AUDIO_OUT_SetFrequency()
- * Being __weak it can be overwritten by the application
- * @retval None
- */
-__weak void BSP_AUDIO_OUT_ClockConfig(SAI_HandleTypeDef *hsai, uint32_t AudioFreq, void *Params)
-{
- RCC_PeriphCLKInitTypeDef RCC_ExCLKInitStruct;
-
- HAL_RCCEx_GetPeriphCLKConfig(&RCC_ExCLKInitStruct);
-
- /* Set the PLL configuration according to the audio frequency */
- if((AudioFreq == AUDIO_FREQUENCY_11K) || (AudioFreq == AUDIO_FREQUENCY_22K) || (AudioFreq == AUDIO_FREQUENCY_44K))
- {
- /* Configure PLLSAI prescalers */
- /* PLLI2S_VCO: VCO_429M
- SAI_CLK(first level) = PLLI2S_VCO/PLLI2SQ = 429/2 = 214.5 Mhz
- SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ = 214.5/19 = 11.289 Mhz */
- RCC_ExCLKInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SAI_PLLI2S;
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SN = 429;
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SQ = 2;
- RCC_ExCLKInitStruct.PLLI2SDivQ = 19;
- HAL_RCCEx_PeriphCLKConfig(&RCC_ExCLKInitStruct);
- }
- else /* AUDIO_FREQUENCY_8K, AUDIO_FREQUENCY_16K, AUDIO_FREQUENCY_48K), AUDIO_FREQUENCY_96K */
- {
- /* SAI clock config
- PLLI2S_VCO: VCO_344M
- SAI_CLK(first level) = PLLI2S_VCO/PLLI2SQ = 344/7 = 49.142 Mhz
- SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ = 49.142/1 = 49.142 Mhz */
- RCC_ExCLKInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SAI_PLLI2S;
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SN = 344;
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SQ = 7;
- RCC_ExCLKInitStruct.PLLI2SDivQ = 1;
- HAL_RCCEx_PeriphCLKConfig(&RCC_ExCLKInitStruct);
- }
-}
-
-/**
- * @brief Initialize BSP_AUDIO_OUT MSP.
- * @param hsai: SAI handle
- * @param Params : pointer on additional configuration parameters, can be NULL.
- * @retval None
- */
-__weak void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params)
-{
- static DMA_HandleTypeDef hdma_saiTx;
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable SAI clock */
- AUDIO_SAIx_CLK_ENABLE();
-
- /* Enable GPIO clock */
- AUDIO_SAIx_MCLK_SCK_SD_FS_ENABLE();
-
- /* CODEC_SAI pins configuration: FS, SCK, MCK and SD pins ------------------*/
- GPIO_InitStruct.Pin = AUDIO_SAIx_FS_PIN | AUDIO_SAIx_SCK_PIN | AUDIO_SAIx_SD_PIN | AUDIO_SAIx_MCK_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
- GPIO_InitStruct.Alternate = AUDIO_SAIx_MCLK_SCK_SD_FS_AF;
- HAL_GPIO_Init(AUDIO_SAIx_MCLK_SCK_SD_FS_GPIO_PORT, &GPIO_InitStruct);
-
- /* Enable the DMA clock */
- AUDIO_SAIx_DMAx_CLK_ENABLE();
-
- if(hsai->Instance == AUDIO_SAIx)
- {
- /* Configure the hdma_saiTx handle parameters */
- hdma_saiTx.Init.Channel = AUDIO_SAIx_DMAx_CHANNEL;
- hdma_saiTx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_saiTx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_saiTx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_saiTx.Init.PeriphDataAlignment = AUDIO_SAIx_DMAx_PERIPH_DATA_SIZE;
- hdma_saiTx.Init.MemDataAlignment = AUDIO_SAIx_DMAx_MEM_DATA_SIZE;
- hdma_saiTx.Init.Mode = DMA_NORMAL;
- hdma_saiTx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_saiTx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- hdma_saiTx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_saiTx.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_saiTx.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- hdma_saiTx.Instance = AUDIO_SAIx_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsai, hdmatx, hdma_saiTx);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_saiTx);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&hdma_saiTx);
- }
-
- /* SAI DMA IRQ Channel configuration */
- HAL_NVIC_SetPriority(AUDIO_SAIx_DMAx_IRQ, AUDIO_OUT_IRQ_PREPRIO, 0);
- HAL_NVIC_EnableIRQ(AUDIO_SAIx_DMAx_IRQ);
-}
-
-/**
- * @brief Deinitialize SAI MSP.
- * @param hsai: SAI handle
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_OUT_MspDeInit(SAI_HandleTypeDef *hsai, void *Params)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* SAI DMA IRQ Channel deactivation */
- HAL_NVIC_DisableIRQ(AUDIO_SAIx_DMAx_IRQ);
-
- if(hsai->Instance == AUDIO_SAIx)
- {
- /* Deinitialize the DMA stream */
- HAL_DMA_DeInit(hsai->hdmatx);
- }
-
- /* Disable SAI peripheral */
- __HAL_SAI_DISABLE(hsai);
-
- /* Deactivates CODEC_SAI pins FS, SCK, MCK and SD by putting them in input mode */
- gpio_init_structure.Pin = AUDIO_SAIx_FS_PIN | AUDIO_SAIx_SCK_PIN | AUDIO_SAIx_SD_PIN | AUDIO_SAIx_MCK_PIN;
- HAL_GPIO_DeInit(AUDIO_SAIx_MCLK_SCK_SD_FS_GPIO_PORT, gpio_init_structure.Pin);
-
- /* Disable SAI clock */
- AUDIO_SAIx_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the applic
- by surcharging this __weak function */
-}
-
-/**
- * @brief Tx Transfer completed callbacks.
- * @param hsai: SAI handle
- */
-void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai)
-{
- /* Manage the remaining file size and new address offset: This function
- should be coded by user (its prototype is already declared in stm324x9i_eval_audio.h) */
- BSP_AUDIO_OUT_TransferComplete_CallBack();
-}
-
-/**
- * @brief Tx Half Transfer completed callbacks.
- * @param hsai: SAI handle
- */
-void HAL_SAI_TxHalfCpltCallback(SAI_HandleTypeDef *hsai)
-{
- /* Manage the remaining file size and new address offset: This function
- should be coded by user (its prototype is already declared in stm324x9i_eval_audio.h) */
- BSP_AUDIO_OUT_HalfTransfer_CallBack();
-}
-
-/**
- * @brief SAI error callbacks.
- * @param hsai: SAI handle
- */
-void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai)
-{
- BSP_AUDIO_OUT_Error_CallBack();
-}
-
-/**
- * @brief Manages the DMA full Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA FIFO error event.
- */
-__weak void BSP_AUDIO_OUT_Error_CallBack(void)
-{
-}
-
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Initializes the Audio Codec audio interface (SAI).
- * @param AudioFreq: Audio frequency to be configured for the SAI peripheral.
- * @note The default SlotActive configuration is set to CODEC_AUDIOFRAME_SLOT_0123
- * and user can update this configuration using
- */
-static void SAIx_Init(uint32_t AudioFreq)
-{
- /* Initialize the haudio_out_sai Instance parameter */
- haudio_out_sai.Instance = AUDIO_SAIx;
-
- /* Disable SAI peripheral to allow access to SAI internal registers */
- __HAL_SAI_DISABLE(&haudio_out_sai);
-
- /* Configure SAI_Block_x
- LSBFirst: Disabled
- DataSize: 16 */
- haudio_out_sai.Init.AudioFrequency = AudioFreq;
- haudio_out_sai.Init.ClockSource = SAI_CLKSOURCE_PLLI2S;
- haudio_out_sai.Init.AudioMode = SAI_MODEMASTER_TX;
- haudio_out_sai.Init.NoDivider = SAI_MASTERDIVIDER_ENABLED;
- haudio_out_sai.Init.Protocol = SAI_FREE_PROTOCOL;
- haudio_out_sai.Init.DataSize = SAI_DATASIZE_16;
- haudio_out_sai.Init.FirstBit = SAI_FIRSTBIT_MSB;
- haudio_out_sai.Init.ClockStrobing = SAI_CLOCKSTROBING_FALLINGEDGE;
- haudio_out_sai.Init.Synchro = SAI_ASYNCHRONOUS;
- haudio_out_sai.Init.OutputDrive = SAI_OUTPUTDRIVE_ENABLED;
- haudio_out_sai.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_1QF;
-
- /* Configure SAI_Block_x Frame
- Frame Length: 64
- Frame active Length: 32
- FS Definition: Start frame + Channel Side identification
- FS Polarity: FS active Low
- FS Offset: FS asserted one bit before the first bit of slot 0 */
- haudio_out_sai.FrameInit.FrameLength = 64;
- haudio_out_sai.FrameInit.ActiveFrameLength = 32;
- haudio_out_sai.FrameInit.FSDefinition = SAI_FS_CHANNEL_IDENTIFICATION;
- haudio_out_sai.FrameInit.FSPolarity = SAI_FS_ACTIVE_LOW;
- haudio_out_sai.FrameInit.FSOffset = SAI_FS_BEFOREFIRSTBIT;
-
- /* Configure SAI Block_x Slot
- Slot First Bit Offset: 0
- Slot Size : 16
- Slot Number: 4
- Slot Active: All slot actives */
- haudio_out_sai.SlotInit.FirstBitOffset = 0;
- haudio_out_sai.SlotInit.SlotSize = SAI_SLOTSIZE_DATASIZE;
- haudio_out_sai.SlotInit.SlotNumber = 4;
- haudio_out_sai.SlotInit.SlotActive = CODEC_AUDIOFRAME_SLOT_0123;
-
- HAL_SAI_Init(&haudio_out_sai);
-
- /* Enable SAI peripheral to generate MCLK */
- __HAL_SAI_ENABLE(&haudio_out_sai);
-}
-
-/**
- * @brief Deinitialize the Audio Codec audio interface (SAI).
- */
-static void SAIx_DeInit(void)
-{
- /* Initialize the haudio_out_sai Instance parameter */
- haudio_out_sai.Instance = AUDIO_SAIx;
-
- /* Disable SAI peripheral */
- __HAL_SAI_DISABLE(&haudio_out_sai);
-
- HAL_SAI_DeInit(&haudio_out_sai);
-}
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO_IN_Private_Functions STM324x9I EVAL AUDIO IN Private Functions
- * @{
- */
-/**
- * @brief Initializes wave recording.
- * @note This function assumes that the I2S input clock (through PLL_R in
- * Devices RevA/Z and through dedicated PLLI2S_R in Devices RevB/Y)
- * is already configured and ready to be used.
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- * @param BitRes: Audio frequency to be configured for the I2S peripheral.
- * @param ChnlNbr: Audio frequency to be configured for the I2S peripheral.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
-{
- /* DeInit the I2S */
- I2Sx_DeInit();
-
- /* Configure PLL clock */
- BSP_AUDIO_IN_ClockConfig(&haudio_in_i2s, NULL);
-
- /* Configure the PDM library */
- PDMDecoder_Init(AudioFreq, ChnlNbr, ChnlNbr);
-
- /* Configure the I2S peripheral */
- haudio_in_i2s.Instance = AUDIO_I2Sx;
- if(HAL_I2S_GetState(&haudio_in_i2s) == HAL_I2S_STATE_RESET)
- {
- /* Initialize the I2S Msp: this __weak function can be rewritten by the application */
- BSP_AUDIO_IN_MspInit(&haudio_in_i2s, NULL);
- }
-
- /* Configure the I2S peripheral */
- I2Sx_Init(AudioFreq);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Deinit the audio IN peripherals.
- */
-void BSP_AUDIO_IN_DeInit(void)
-{
- /* DeInit the I2S */
- I2Sx_DeInit();
- /* DeInit the I2S MSP : this __weak function can be rewritten by the applic */
- BSP_AUDIO_IN_MspDeInit(&haudio_in_i2s, NULL);
- /* DeInit the Timer */
- TIMx_DeInit();
-}
-
-/**
- * @brief Starts audio recording.
- * @param pbuf: Main buffer pointer for the recorded data storing
- * @param size: Current size of the recorded buffer
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Record(uint16_t* pbuf, uint32_t size)
-{
- uint32_t ret = AUDIO_ERROR;
-
- /* Start the process receive DMA */
- HAL_I2S_Receive_DMA(&haudio_in_i2s, pbuf, size);
-
- /* Return AUDIO_OK when all operations are correctly done */
- ret = AUDIO_OK;
-
- return ret;
-}
-
-/**
- * @brief Stops audio recording.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Stop(void)
-{
- uint32_t ret = AUDIO_ERROR;
-
- /* Call the Media layer pause function */
- HAL_I2S_DMAPause(&haudio_in_i2s);
-
- /* TIMx Peripheral clock disable */
- AUDIO_TIMx_CLK_DISABLE();
-
- /* Return AUDIO_OK when all operations are correctly done */
- ret = AUDIO_OK;
-
- return ret;
-}
-
-/**
- * @brief Pauses the audio file stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Pause(void)
-{
- /* Call the Media layer pause function */
- HAL_I2S_DMAPause(&haudio_in_i2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Resumes the audio file stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Resume(void)
-{
- /* Call the Media layer pause/resume function */
- HAL_I2S_DMAResume(&haudio_in_i2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Controls the audio in volume level.
- * @param Volume: Volume level to be set in percentage from 0% to 100% (0 for
- * Mute and 100 for Max volume level).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume)
-{
- /* Set the Global variable AudioInVolume */
- AudioInVolume = Volume;
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Converts audio format from PDM to PCM.
- * @param PDMBuf: Pointer to data PDM buffer
- * @param PCMBuf: Pointer to data PCM buffer
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t* PDMBuf, uint16_t* PCMBuf)
-{
- uint8_t AppPDM[INTERNAL_BUFF_SIZE*2];
- uint8_t byte1 = 0, byte2 = 0;
- uint32_t index = 0;
-
- /* PDM Demux */
- for(index = 0; index> 8)& 0xFF;
- byte1 = (PDMBuf[index] & 0xFF);
- AppPDM[(index*2)+1] = Channel_Demux[byte1 & CHANNEL_DEMUX_MASK] | Channel_Demux[byte2 & CHANNEL_DEMUX_MASK] << 4;
- AppPDM[(index*2)] = Channel_Demux[(byte1 >> 1) & CHANNEL_DEMUX_MASK] | Channel_Demux[(byte2 >> 1) & CHANNEL_DEMUX_MASK] << 4;
- }
-
- for(index = 0; index < DEFAULT_AUDIO_IN_CHANNEL_NBR; index++)
- {
- /* PDM to PCM filter */
- PDM_Filter((uint8_t*)&AppPDM[index], (uint16_t*)&(PCMBuf[index]), &PDM_FilterHandler[index]);
- }
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
- /**
- * @brief Rx Transfer completed callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Call the record update function to get the next buffer to fill and its size (size is ignored) */
- BSP_AUDIO_IN_TransferComplete_CallBack();
-}
-
-/**
- * @brief Rx Half Transfer completed callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Manage the remaining file size and new address offset: This function
- should be coded by user (its prototype is already declared in stm324x9i_eval_audio.h) */
- BSP_AUDIO_IN_HalfTransfer_CallBack();
-}
-
-/**
- * @brief I2S error callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Manage the error generated on DMA FIFO: This function
- should be coded by user (its prototype is already declared in stm324x9i_eval_audio.h) */
- BSP_AUDIO_IN_Error_Callback();
-}
-
-/**
- * @brief Clock Config.
- * @param hi2s: I2S handle
- * @param Params : pointer on additional configuration parameters, can be NULL.
- * @note This API is called by BSP_AUDIO_IN_Init()
- * Being __weak it can be overwritten by the application
- */
-__weak void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, void *Params)
-{
- RCC_PeriphCLKInitTypeDef RCC_ExCLKInitStruct;
-
- HAL_RCCEx_GetPeriphCLKConfig(&RCC_ExCLKInitStruct);
- RCC_ExCLKInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2S;
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SN = 384;
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SR = 2;
- HAL_RCCEx_PeriphCLKConfig(&RCC_ExCLKInitStruct);
-}
-
-/**
- * @brief Initialize BSP_AUDIO_IN MSP.
- * @param hi2s: I2S handle
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- static DMA_HandleTypeDef hdma_i2sRx;
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Configure the Timer which clocks the MEMS */
- /* Moved inside MSP to allow applic to redefine the TIMx_MspInit */
- TIMx_Init();
-
- /* Enable I2S clock */
- AUDIO_I2Sx_CLK_ENABLE();
-
- /* Enable SCK and SD GPIO clock */
- AUDIO_I2Sx_SD_GPIO_CLK_ENABLE();
- AUDIO_I2Sx_SCK_GPIO_CLK_ENABLE();
- /* CODEC_I2S pins configuration: WS, SCK and SD pins */
- GPIO_InitStruct.Pin = AUDIO_I2Sx_SCK_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Alternate = AUDIO_I2Sx_SCK_AF;
- HAL_GPIO_Init(AUDIO_I2Sx_SCK_GPIO_PORT, &GPIO_InitStruct);
-
- GPIO_InitStruct.Pin = AUDIO_I2Sx_SD_PIN;
- GPIO_InitStruct.Alternate = AUDIO_I2Sx_SD_AF;
- HAL_GPIO_Init(AUDIO_I2Sx_SD_GPIO_PORT, &GPIO_InitStruct);
-
- /* Enable the DMA clock */
- AUDIO_I2Sx_DMAx_CLK_ENABLE();
-
- if(hi2s->Instance == AUDIO_I2Sx)
- {
- /* Configure the hdma_i2sRx handle parameters */
- hdma_i2sRx.Init.Channel = AUDIO_I2Sx_DMAx_CHANNEL;
- hdma_i2sRx.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_i2sRx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_i2sRx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_i2sRx.Init.PeriphDataAlignment = AUDIO_I2Sx_DMAx_PERIPH_DATA_SIZE;
- hdma_i2sRx.Init.MemDataAlignment = AUDIO_I2Sx_DMAx_MEM_DATA_SIZE;
- hdma_i2sRx.Init.Mode = DMA_CIRCULAR;
- hdma_i2sRx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_i2sRx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma_i2sRx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_i2sRx.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_i2sRx.Init.PeriphBurst = DMA_MBURST_SINGLE;
-
- hdma_i2sRx.Instance = AUDIO_I2Sx_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hi2s, hdmarx, hdma_i2sRx);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_i2sRx);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&hdma_i2sRx);
- }
-
- /* I2S DMA IRQ Channel configuration */
- HAL_NVIC_SetPriority(AUDIO_I2Sx_DMAx_IRQ, AUDIO_IN_IRQ_PREPRIO, 0);
- HAL_NVIC_EnableIRQ(AUDIO_I2Sx_DMAx_IRQ);
-}
-
-/**
- * @brief BSP AUDIO IN MSP Init.
- * @param hi2s: I2S handle
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* I2S DMA IRQ Channel deactivation */
- HAL_NVIC_DisableIRQ(AUDIO_I2Sx_DMAx_IRQ);
-
- if(hi2s->Instance == AUDIO_I2Sx)
- {
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(hi2s->hdmarx);
- }
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(hi2s);
-
- /* Disable pins: SCK and SD pins */
- gpio_init_structure.Pin = AUDIO_I2Sx_SCK_PIN;
- HAL_GPIO_DeInit(AUDIO_I2Sx_SCK_GPIO_PORT, gpio_init_structure.Pin);
- gpio_init_structure.Pin = AUDIO_I2Sx_SD_PIN;
- HAL_GPIO_DeInit(AUDIO_I2Sx_SD_GPIO_PORT, gpio_init_structure.Pin);
-
- /* Disable I2S clock */
- AUDIO_I2Sx_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the applic
- by surcgarging this __weak function */
-}
-
-/**
- * @brief User callback when record buffer is filled.
- */
-__weak void BSP_AUDIO_IN_TransferComplete_CallBack(void)
-{
- /* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled
- to prepare the next buffer pointer and its size. */
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- */
-__weak void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
-{
- /* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled
- to prepare the next buffer pointer and its size. */
-}
-
-/**
- * @brief Audio IN Error callback function.
- */
-__weak void BSP_AUDIO_IN_Error_Callback(void)
-{
- /* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-}
-
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Initializes the PDM library.
- * @param AudioFreq: Audio sampling frequency
- * @param ChnlNbrIn: Number of input audio channels in the PDM buffer
- * @param ChnlNbrOut: Number of desired output audio channels in the resulting PCM buffer
- * Number of audio channels (1: mono; 2: stereo)
- */
-static void PDMDecoder_Init(uint32_t AudioFreq, uint32_t ChnlNbrIn, uint32_t ChnlNbrOut)
-{
- uint32_t index = 0;
-
- /* Enable CRC peripheral to unlock the PDM library */
- __HAL_RCC_CRC_CLK_ENABLE();
-
- for(index = 0; index < ChnlNbrIn; index++)
- {
- /* Init PDM filters */
- PDM_FilterHandler[index].bit_order = PDM_FILTER_BIT_ORDER_LSB;
- PDM_FilterHandler[index].endianness = PDM_FILTER_ENDIANNESS_LE;
- PDM_FilterHandler[index].high_pass_tap = 2122358088;
- PDM_FilterHandler[index].out_ptr_channels = ChnlNbrOut;
- PDM_FilterHandler[index].in_ptr_channels = ChnlNbrIn;
- PDM_Filter_Init((PDM_Filter_Handler_t *)(&PDM_FilterHandler[index]));
-
- /* PDM lib config phase */
- PDM_FilterConfig[index].output_samples_number = AudioFreq/1000;
- PDM_FilterConfig[index].mic_gain = 24;
- PDM_FilterConfig[index].decimation_factor = PDM_FILTER_DEC_FACTOR_64;
- PDM_Filter_setConfig((PDM_Filter_Handler_t *)&PDM_FilterHandler[index], &PDM_FilterConfig[index]);
- }
-}
-
-/**
- * @brief Initializes the Audio Codec audio interface (I2S)
- * @note This function assumes that the I2S input clock (through PLL_R in
- * Devices RevA/Z and through dedicated PLLI2S_R in Devices RevB/Y)
- * is already configured and ready to be used.
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- */
-static void I2Sx_Init(uint32_t AudioFreq)
-{
- /* Initialize the haudio_in_i2s Instance parameter */
- haudio_in_i2s.Instance = AUDIO_I2Sx;
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(&haudio_in_i2s);
-
- /* I2S2 peripheral configuration */
- haudio_in_i2s.Init.AudioFreq = 4 * AudioFreq;
- haudio_in_i2s.Init.ClockSource = I2S_CLOCK_PLL;
- haudio_in_i2s.Init.CPOL = I2S_CPOL_HIGH;
- haudio_in_i2s.Init.DataFormat = I2S_DATAFORMAT_16B;
- haudio_in_i2s.Init.MCLKOutput = I2S_MCLKOUTPUT_DISABLE;
- haudio_in_i2s.Init.Mode = I2S_MODE_MASTER_RX;
- haudio_in_i2s.Init.Standard = I2S_STANDARD_LSB;
-
- /* Init the I2S */
- HAL_I2S_Init(&haudio_in_i2s);
-}
-
-/**
- * @brief Deinitializes the Audio Codec audio interface (I2S).
- */
-static void I2Sx_DeInit(void)
-{
- /* Initialize the hAudioInI2s Instance parameter */
- haudio_in_i2s.Instance = AUDIO_I2Sx;
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(&haudio_in_i2s);
-
- /* DeInit the I2S */
- HAL_I2S_DeInit(&haudio_in_i2s);
-}
-
-/**
- * @brief Initializes the TIM INput Capture MSP.
- * @param htim: TIM handle
- */
-static void TIMx_IC_MspInit(TIM_HandleTypeDef *htim)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable peripherals and GPIO Clocks --------------------------------------*/
- /* TIMx Peripheral clock enable */
- AUDIO_TIMx_CLK_ENABLE();
-
- /* Enable GPIO Channels Clock */
- AUDIO_TIMx_GPIO_CLK_ENABLE();
-
- /* Configure I/Os ----------------------------------------------------------*/
- /* Common configuration for all channels */
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
- GPIO_InitStruct.Alternate = AUDIO_TIMx_AF;
-
- /* Configure TIM input channel */
- GPIO_InitStruct.Pin = AUDIO_TIMx_IN_GPIO_PIN;
- HAL_GPIO_Init(AUDIO_TIMx_GPIO, &GPIO_InitStruct);
-
- /* Configure TIM output channel */
- GPIO_InitStruct.Pin = AUDIO_TIMx_OUT_GPIO_PIN;
- HAL_GPIO_Init(AUDIO_TIMx_GPIO, &GPIO_InitStruct);
-}
-
-/**
- * @brief Initializes the TIM INput Capture MSP.
- * @param htim: TIM handle
- */
-static void TIMx_IC_MspDeInit(TIM_HandleTypeDef *htim)
-{
- /* Disable TIMx Peripheral clock */
- AUDIO_TIMx_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the applic
- by surcgarging this __weak function */
-}
-
-/**
- * @brief Configure TIM as a clock divider by 2.
- * I2S_SCK is externally connected to TIMx input channel
- */
-static void TIMx_Init(void)
-{
- TIM_IC_InitTypeDef sICConfig;
- TIM_OC_InitTypeDef sOCConfig;
- TIM_ClockConfigTypeDef sCLKSourceConfig;
- TIM_SlaveConfigTypeDef sSlaveConfig;
-
- /* Configure the TIM peripheral --------------------------------------------*/
- /* Set TIMx instance */
- haudio_tim.Instance = AUDIO_TIMx;
- /* Timer Input Capture Configuration Structure declaration */
- /* Initialize TIMx peripheral as follow:
- + Period = 0xFFFF
- + Prescaler = 0
- + ClockDivision = 0
- + Counter direction = Up
- */
- haudio_tim.Init.Period = 1;
- haudio_tim.Init.Prescaler = 0;
- haudio_tim.Init.ClockDivision = 0;
- haudio_tim.Init.CounterMode = TIM_COUNTERMODE_UP;
-
- /* Initialize the TIMx peripheral with the structure above */
- TIMx_IC_MspInit(&haudio_tim);
- HAL_TIM_IC_Init(&haudio_tim);
-
- /* Configure the Input Capture channel -------------------------------------*/
- /* Configure the Input Capture of channel 2 */
- sICConfig.ICPolarity = TIM_ICPOLARITY_FALLING;
- sICConfig.ICSelection = TIM_ICSELECTION_DIRECTTI;
- sICConfig.ICPrescaler = TIM_ICPSC_DIV1;
- sICConfig.ICFilter = 0;
- HAL_TIM_IC_ConfigChannel(&haudio_tim, &sICConfig, AUDIO_TIMx_IN_CHANNEL);
-
- /* Select external clock mode 1 */
- sCLKSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE1;
- sCLKSourceConfig.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED;
- sCLKSourceConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1;
- sCLKSourceConfig.ClockFilter = 0;
- HAL_TIM_ConfigClockSource(&haudio_tim, &sCLKSourceConfig);
-
- /* Select Input Channel as input trigger */
- sSlaveConfig.InputTrigger = TIM_TS_TI1FP1;
- sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
- sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED;
- sSlaveConfig.TriggerPrescaler = TIM_CLOCKPRESCALER_DIV1;
- sSlaveConfig.TriggerFilter = 0;
- HAL_TIM_SlaveConfigSynchronization(&haudio_tim, &sSlaveConfig);
-
- /* Output Compare PWM Mode configuration: Channel2 */
- sOCConfig.OCMode = TIM_OCMODE_PWM1;
- sOCConfig.OCIdleState = TIM_OCIDLESTATE_SET;
- sOCConfig.Pulse = 1;
- sOCConfig.OCPolarity = TIM_OCPOLARITY_HIGH;
- sOCConfig.OCNPolarity = TIM_OCNPOLARITY_HIGH;
- sOCConfig.OCFastMode = TIM_OCFAST_DISABLE;
- sOCConfig.OCNIdleState = TIM_OCNIDLESTATE_SET;
-
- /* Initialize the TIM3 Channel2 with the structure above */
- HAL_TIM_PWM_ConfigChannel(&haudio_tim, &sOCConfig, AUDIO_TIMx_OUT_CHANNEL);
-
- /* Start the TIM3 Channel2 */
- HAL_TIM_PWM_Start(&haudio_tim, AUDIO_TIMx_OUT_CHANNEL);
-
- /* Start the TIM3 Channel1 */
- HAL_TIM_IC_Start(&haudio_tim, AUDIO_TIMx_IN_CHANNEL);
-}
-
-/**
- * @brief Configure TIM as a clock divider by 2.
- * I2S_SCK is externally connected to TIMx input channel
- */
-static void TIMx_DeInit(void)
-{
- haudio_tim.Instance = AUDIO_TIMx;
-
- /* Stop the TIM3 Channel2 */
- HAL_TIM_PWM_Stop(&haudio_tim, AUDIO_TIMx_OUT_CHANNEL);
- /* Stop the TIM3 Channel1 */
- HAL_TIM_IC_Stop(&haudio_tim, AUDIO_TIMx_IN_CHANNEL);
-
- HAL_TIM_IC_DeInit(&haudio_tim);
-
- /* Initialize the TIMx peripheral with the structure above */
- TIMx_IC_MspDeInit(&haudio_tim);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_audio.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_audio.h
deleted file mode 100644
index 2d30f164b3..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_audio.h
+++ /dev/null
@@ -1,276 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_audio.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324x9i_eval_audio.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324x9I_EVAL_AUDIO_H
-#define __STM324x9I_EVAL_AUDIO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-/* Include audio component Driver */
-#include "../Components/wm8994/wm8994.h"
-#include "stm324x9i_eval.h"
-#include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_AUDIO
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO_Exported_Constants STM324x9I EVAL AUDIO Exported Constants
- * @{
- */
-
-/*------------------------------------------------------------------------------
- USER SAI defines parameters
- -----------------------------------------------------------------------------*/
-/** CODEC_AudioFrame_SLOT_TDMMode
- * @brief In W8994 codec the Audio frame contains 4 slots : TDM Mode
- * TDM format :
- * +------------------|------------------|--------------------|-------------------+
- * | CODEC_SLOT0 Left | CODEC_SLOT1 Left | CODEC_SLOT0 Right | CODEC_SLOT1 Right |
- * +------------------------------------------------------------------------------+
- */
-/* To have 2 separate audio stream in Both headphone and speaker the 4 slot must be activated */
-#define CODEC_AUDIOFRAME_SLOT_0123 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_2 | SAI_SLOTACTIVE_3
-/* To have an audio stream in headphone only SAI Slot 0 and Slot 2 must be activated */
-#define CODEC_AUDIOFRAME_SLOT_02 SAI_SLOTACTIVE_0 | SAI_SLOTACTIVE_2
-/* To have an audio stream in speaker only SAI Slot 1 and Slot 3 must be activated */
-#define CODEC_AUDIOFRAME_SLOT_13 SAI_SLOTACTIVE_1 | SAI_SLOTACTIVE_3
-
-/* SAI peripheral configuration defines */
-#define AUDIO_SAIx SAI1_Block_B
-#define AUDIO_SAIx_CLK_ENABLE() __HAL_RCC_SAI1_CLK_ENABLE()
-#define AUDIO_SAIx_CLK_DISABLE() __HAL_RCC_SAI1_CLK_DISABLE()
-#define AUDIO_SAIx_MCLK_SCK_SD_FS_AF GPIO_AF6_SAI1
-
-#define AUDIO_SAIx_MCLK_SCK_SD_FS_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE()
-#define AUDIO_SAIx_FS_PIN GPIO_PIN_9
-#define AUDIO_SAIx_SCK_PIN GPIO_PIN_8
-#define AUDIO_SAIx_SD_PIN GPIO_PIN_6
-#define AUDIO_SAIx_MCK_PIN GPIO_PIN_7
-#define AUDIO_SAIx_MCLK_SCK_SD_FS_GPIO_PORT GPIOF
-
-
-/* SAI DMA Stream definitions */
-#define AUDIO_SAIx_DMAx_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE()
-#define AUDIO_SAIx_DMAx_STREAM DMA2_Stream5
-#define AUDIO_SAIx_DMAx_CHANNEL DMA_CHANNEL_0
-#define AUDIO_SAIx_DMAx_IRQ DMA2_Stream5_IRQn
-#define AUDIO_SAIx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
-#define AUDIO_SAIx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
-#define DMA_MAX_SZE 0xFFFF
-
-#define AUDIO_SAIx_DMAx_IRQHandler DMA2_Stream5_IRQHandler
-
-/* Select the interrupt preemption priority for the DMA interrupt */
-#define AUDIO_OUT_IRQ_PREPRIO 0x0E /* Select the preemption priority level(0 is the highest) */
-
-/*------------------------------------------------------------------------------
- AUDIO IN CONFIGURATION
-------------------------------------------------------------------------------*/
-/* SPI Configuration defines */
-#define AUDIO_I2Sx SPI3
-#define AUDIO_I2Sx_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
-#define AUDIO_I2Sx_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
-#define AUDIO_I2Sx_SCK_PIN GPIO_PIN_3
-#define AUDIO_I2Sx_SCK_GPIO_PORT GPIOB
-#define AUDIO_I2Sx_SCK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-#define AUDIO_I2Sx_SCK_AF GPIO_AF6_SPI3
-
-#define AUDIO_I2Sx_SD_PIN GPIO_PIN_6
-#define AUDIO_I2Sx_SD_GPIO_PORT GPIOD
-#define AUDIO_I2Sx_SD_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define AUDIO_I2Sx_SD_AF GPIO_AF5_I2S3ext
-
-/* I2S DMA Stream Rx definitions */
-#define AUDIO_I2Sx_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define AUDIO_I2Sx_DMAx_STREAM DMA1_Stream2
-#define AUDIO_I2Sx_DMAx_CHANNEL DMA_CHANNEL_0
-#define AUDIO_I2Sx_DMAx_IRQ DMA1_Stream2_IRQn
-#define AUDIO_I2Sx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
-#define AUDIO_I2Sx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
-
-#define AUDIO_I2Sx_DMAx_IRQHandler DMA1_Stream2_IRQHandler
-
-/* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */
-#define AUDIO_IN_IRQ_PREPRIO 0x0F /* Select the preemption priority level(0 is the highest) */
-
-
-/* Two channels are used:
- - one channel as input which is connected to I2S SCK in stereo mode
- - one channel as output which divides the frequency on the input
-*/
-
-#define AUDIO_TIMx_CLK_ENABLE() __HAL_RCC_TIM3_CLK_ENABLE()
-#define AUDIO_TIMx_CLK_DISABLE() __HAL_RCC_TIM3_CLK_DISABLE()
-#define AUDIO_TIMx TIM3
-#define AUDIO_TIMx_IN_CHANNEL TIM_CHANNEL_1
-#define AUDIO_TIMx_OUT_CHANNEL TIM_CHANNEL_2 /* Select channel 2 as output */
-#define AUDIO_TIMx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define AUDIO_TIMx_GPIO GPIOC
-#define AUDIO_TIMx_IN_GPIO_PIN GPIO_PIN_6
-#define AUDIO_TIMx_OUT_GPIO_PIN GPIO_PIN_7
-#define AUDIO_TIMx_AF GPIO_AF2_TIM3
-
-/*------------------------------------------------------------------------------
- CONFIGURATION: Audio Driver Configuration parameters
-------------------------------------------------------------------------------*/
-
-#define AUDIODATA_SIZE 2 /* 16-bits audio data size */
-
-/* Audio status definition */
-#define AUDIO_OK 0
-#define AUDIO_ERROR 1
-#define AUDIO_TIMEOUT 2
-
-/* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */
-#define DEFAULT_AUDIO_IN_FREQ I2S_AUDIOFREQ_16K
-#define DEFAULT_AUDIO_IN_BIT_RESOLUTION 16
-#define DEFAULT_AUDIO_IN_CHANNEL_NBR 2 /* Mono = 1, Stereo = 2 */
-#define DEFAULT_AUDIO_IN_VOLUME 64
-
-/* PDM buffer input size */
-#define INTERNAL_BUFF_SIZE 128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR
-/* PCM buffer output size */
-#define PCM_OUT_SIZE DEFAULT_AUDIO_IN_FREQ/1000*2
-#define CHANNEL_DEMUX_MASK 0x55
-
-/*------------------------------------------------------------------------------
- OPTIONAL Configuration defines parameters
-------------------------------------------------------------------------------*/
-
-/* Delay for the Codec to be correctly reset */
-#define CODEC_RESET_DELAY 5
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO_Exported_Variables STM324x9I EVAL AUDIO Exported Variables
- * @{
- */
-extern __IO uint16_t AudioInVolume;
- /**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO_Exported_Macros STM324x9I EVAL AUDIO Exported Macros
- * @{
- */
-#define DMA_MAX(x) (((x) <= DMA_MAX_SZE)? (x):DMA_MAX_SZE)
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO_OUT_Exported_Functions STM324x9I EVAL AUDIO OUT Exported Functions
- * @{
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
-void BSP_AUDIO_OUT_DeInit(void);
-uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size);
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size);
-uint8_t BSP_AUDIO_OUT_Pause(void);
-uint8_t BSP_AUDIO_OUT_Resume(void);
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option);
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume);
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq);
-void BSP_AUDIO_OUT_SetAudioFrameSlot(uint32_t AudioFrameSlot);
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd);
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output);
-
-/* User Callbacks: user has to implement these functions in his code if they are needed. */
-/* This function is called when the requested data has been completely transferred.*/
-void BSP_AUDIO_OUT_TransferComplete_CallBack(void);
-
-/* This function is called when half of the requested buffer has been transferred. */
-void BSP_AUDIO_OUT_HalfTransfer_CallBack(void);
-
-/* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-void BSP_AUDIO_OUT_Error_CallBack(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_AUDIO_OUT_ClockConfig(SAI_HandleTypeDef *hsai, uint32_t AudioFreq, void *Params);
-void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params);
-void BSP_AUDIO_OUT_MspDeInit(SAI_HandleTypeDef *hsai, void *Params);
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_AUDIO_IN_Exported_Functions STM324x9I EVAL AUDIO IN Exported Functions
- * @{
- */
-uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
-void BSP_AUDIO_IN_DeInit(void);
-uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size);
-uint8_t BSP_AUDIO_IN_Stop(void);
-uint8_t BSP_AUDIO_IN_Pause(void);
-uint8_t BSP_AUDIO_IN_Resume(void);
-uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume);
-uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t* PDMBuf, uint16_t* PCMBuf);
-/* User Callbacks: user has to implement these functions in his code if they are needed. */
-/* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled to prepare the next
- buffer pointer and its size. */
-void BSP_AUDIO_IN_TransferComplete_CallBack(void);
-void BSP_AUDIO_IN_HalfTransfer_CallBack(void);
-
-/* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-void BSP_AUDIO_IN_Error_Callback(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, void *Params);
-void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
-void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_AUDIO_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_camera.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_camera.c
deleted file mode 100644
index ab99dc309f..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_camera.c
+++ /dev/null
@@ -1,516 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_camera.c
- * @author MCD Application Team
- * @brief This file includes the driver for Camera modules mounted on
- * STM324x9I-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info: ------------------------------------------------------------------
- User NOTES
-1. How to use this driver:
---------------------------
- - This driver is used to drive the camera.
- - The OV2640 component driver MUST be included with this driver.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the camera using the BSP_CAMERA_Init() function.
- o Start the camera capture/snapshot using the CAMERA_Start() function.
- o Suspend, resume or stop the camera capture using the following functions:
- - BSP_CAMERA_Suspend()
- - BSP_CAMERA_Resume()
- - BSP_CAMERA_Stop()
-
- + Options
- o Increase or decrease on the fly the brightness and/or contrast
- using the following function:
- - BSP_CAMERA_ContrastBrightnessConfig
- o Add a special effect on the fly using the following functions:
- - BSP_CAMERA_BlackWhiteConfig()
- - BSP_CAMERA_ColorEffectConfig()
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_camera.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_CAMERA STM324x9I EVAL CAMERA
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_CAMERA_Private_Variables STM324x9I EVAL CAMERA Private Variables
- * @{
- */
-static DCMI_HandleTypeDef hdcmi_eval;
- CAMERA_DrvTypeDef *camera_drv;
-uint32_t current_resolution;
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_CAMERA_Private_FunctionPrototypes STM324x9I EVAL CAMERA Private FunctionPrototypes
- * @{
- */
-static uint32_t GetSize(uint32_t resolution);
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_CAMERA_Private_Functions STM324x9I EVAL CAMERA Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the camera.
- * @param Resolution: Camera Resolution
- * @retval Camera status
- */
-uint8_t BSP_CAMERA_Init(uint32_t Resolution)
-{
- DCMI_HandleTypeDef *phdcmi;
-
- uint8_t ret = CAMERA_ERROR;
-
- /* Get the DCMI handle structure */
- phdcmi = &hdcmi_eval;
-
- /*** Configures the DCMI to interface with the camera module ***/
- /* DCMI configuration */
- phdcmi->Init.CaptureRate = DCMI_CR_ALL_FRAME;
- phdcmi->Init.HSPolarity = DCMI_HSPOLARITY_LOW;
- phdcmi->Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;
- phdcmi->Init.VSPolarity = DCMI_VSPOLARITY_LOW;
- phdcmi->Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;
- phdcmi->Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;
- phdcmi->Instance = DCMI;
-
- /* Configure IO functionalities for camera detect pin */
- BSP_IO_Init();
-
- /* Set the camera STANDBY pin */
- BSP_IO_ConfigPin(XSDN_PIN, IO_MODE_OUTPUT);
- BSP_IO_WritePin(XSDN_PIN, SET);
-
- /* Check if the camera is plugged */
- if(BSP_IO_ReadPin(CAM_PLUG_PIN))
- {
- return CAMERA_ERROR;
- }
-
- /* DCMI Initialization */
- BSP_CAMERA_MspInit();
- HAL_DCMI_Init(phdcmi);
-
- if(ov2640_ReadID(CAMERA_I2C_ADDRESS) == OV2640_ID)
- {
- /* Initialize the camera driver structure */
- camera_drv = &ov2640_drv;
-
- /* Camera Init */
- camera_drv->Init(CAMERA_I2C_ADDRESS, Resolution);
-
- /* Return CAMERA_OK status */
- ret = CAMERA_OK;
- }
-
- current_resolution = Resolution;
-
- return ret;
-}
-
-/**
- * @brief Starts the camera capture in continuous mode.
- * @param buff: pointer to the camera output buffer
- */
-void BSP_CAMERA_ContinuousStart(uint8_t *buff)
-{
- /* Start the camera capture */
- HAL_DCMI_Start_DMA(&hdcmi_eval, DCMI_MODE_CONTINUOUS, (uint32_t)buff, GetSize(current_resolution));
-}
-
-/**
- * @brief Starts the camera capture in snapshot mode.
- * @param buff: pointer to the camera output buffer
- */
-void BSP_CAMERA_SnapshotStart(uint8_t *buff)
-{
- /* Start the camera capture */
- HAL_DCMI_Start_DMA(&hdcmi_eval, DCMI_MODE_SNAPSHOT, (uint32_t)buff, GetSize(current_resolution));
-}
-
-/**
- * @brief Suspend the CAMERA capture
- */
-void BSP_CAMERA_Suspend(void)
-{
- /* Suspend the Camera Capture */
- HAL_DCMI_Suspend(&hdcmi_eval);
-}
-
-/**
- * @brief Resume the CAMERA capture
- */
-void BSP_CAMERA_Resume(void)
-{
- /* Start the Camera Capture */
- HAL_DCMI_Resume(&hdcmi_eval);
-}
-
-/**
- * @brief Stop the CAMERA capture
- * @retval Camera status
- */
-uint8_t BSP_CAMERA_Stop(void)
-{
- DCMI_HandleTypeDef *phdcmi;
-
- uint8_t ret = CAMERA_ERROR;
-
- /* Get the DCMI handle structure */
- phdcmi = &hdcmi_eval;
-
- if(HAL_DCMI_Stop(phdcmi) == HAL_OK)
- {
- ret = CAMERA_OK;
- }
-
- /* Initialize IO */
- BSP_IO_Init();
-
- /* Reset the camera STANDBY pin */
- BSP_IO_ConfigPin(XSDN_PIN, IO_MODE_OUTPUT);
- BSP_IO_WritePin(XSDN_PIN, RESET);
-
- return ret;
-}
-
-/**
- * @brief Configures the camera contrast and brightness.
- * @param contrast_level: Contrast level
- * This parameter can be one of the following values:
- * @arg CAMERA_CONTRAST_LEVEL4: for contrast +2
- * @arg CAMERA_CONTRAST_LEVEL3: for contrast +1
- * @arg CAMERA_CONTRAST_LEVEL2: for contrast 0
- * @arg CAMERA_CONTRAST_LEVEL1: for contrast -1
- * @arg CAMERA_CONTRAST_LEVEL0: for contrast -2
- * @param brightness_level: Contrast level
- * This parameter can be one of the following values:
- * @arg CAMERA_BRIGHTNESS_LEVEL4: for brightness +2
- * @arg CAMERA_BRIGHTNESS_LEVEL3: for brightness +1
- * @arg CAMERA_BRIGHTNESS_LEVEL2: for brightness 0
- * @arg CAMERA_BRIGHTNESS_LEVEL1: for brightness -1
- * @arg CAMERA_BRIGHTNESS_LEVEL0: for brightness -2
- */
-void BSP_CAMERA_ContrastBrightnessConfig(uint32_t contrast_level, uint32_t brightness_level)
-{
- if(camera_drv->Config != NULL)
- {
- camera_drv->Config(CAMERA_I2C_ADDRESS, CAMERA_CONTRAST_BRIGHTNESS, contrast_level, brightness_level);
- }
-}
-
-/**
- * @brief Configures the camera white balance.
- * @param Mode: black_white mode
- * This parameter can be one of the following values:
- * @arg CAMERA_BLACK_WHITE_BW
- * @arg CAMERA_BLACK_WHITE_NEGATIVE
- * @arg CAMERA_BLACK_WHITE_BW_NEGATIVE
- * @arg CAMERA_BLACK_WHITE_NORMAL
- */
-void BSP_CAMERA_BlackWhiteConfig(uint32_t Mode)
-{
- if(camera_drv->Config != NULL)
- {
- camera_drv->Config(CAMERA_I2C_ADDRESS, CAMERA_BLACK_WHITE, Mode, 0);
- }
-}
-
-/**
- * @brief Configures the camera color effect.
- * @param Effect: Color effect
- * This parameter can be one of the following values:
- * @arg CAMERA_COLOR_EFFECT_ANTIQUE
- * @arg CAMERA_COLOR_EFFECT_BLUE
- * @arg CAMERA_COLOR_EFFECT_GREEN
- * @arg CAMERA_COLOR_EFFECT_RED
- */
-void BSP_CAMERA_ColorEffectConfig(uint32_t Effect)
-{
- if(camera_drv->Config != NULL)
- {
- camera_drv->Config(CAMERA_I2C_ADDRESS, CAMERA_COLOR_EFFECT, Effect, 0);
- }
-}
-
-/**
- * @brief Handles DCMI interrupt request.
- */
-void BSP_CAMERA_IRQHandler(void)
-{
- HAL_DCMI_IRQHandler(&hdcmi_eval);
-}
-
-/**
- * @brief Handles DMA interrupt request.
- */
-void BSP_CAMERA_DMA_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(hdcmi_eval.DMA_Handle);
-}
-
-/**
- * @brief Get the capture size.
- * @param resolution: the current resolution.
- * @retval capture size.
- */
-static uint32_t GetSize(uint32_t resolution)
-{
- uint32_t size = 0;
-
- /* Get capture size */
- switch (resolution)
- {
- case CAMERA_R160x120:
- {
- size = 0x2580;
- }
- break;
- case CAMERA_R320x240:
- {
- size = 0x9600;
- }
- break;
- case CAMERA_R480x272:
- {
- size = 0xFF00;
- }
- break;
- case CAMERA_R640x480:
- {
- size = 0x25800;
- }
- break;
- default:
- {
- break;
- }
- }
-
- return size;
-}
-
-/**
- * @brief Initializes the DCMI MSP.
- */
-__weak void BSP_CAMERA_MspInit(void)
-{
- static DMA_HandleTypeDef hdma_eval;
- GPIO_InitTypeDef GPIO_Init_Structure;
- DCMI_HandleTypeDef *hdcmi = &hdcmi_eval;
-
- /*** Enable peripherals and GPIO clocks ***/
- /* Enable DCMI clock */
- __HAL_RCC_DCMI_CLK_ENABLE();
-
- /* Enable DMA2 clock */
- __HAL_RCC_DMA2_CLK_ENABLE();
-
- /* Enable GPIO clocks */
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
-
- /*** Configure the GPIO ***/
- /* Configure DCMI GPIO as alternate function */
- GPIO_Init_Structure.Pin = GPIO_PIN_4;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOA, &GPIO_Init_Structure);
-
- GPIO_Init_Structure.Pin = GPIO_PIN_7 | GPIO_PIN_8;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOB, &GPIO_Init_Structure);
-
- GPIO_Init_Structure.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 |\
- GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |\
- GPIO_PIN_12;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOC, &GPIO_Init_Structure);
-
- GPIO_Init_Structure.Pin = GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_6;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
-
- GPIO_Init_Structure.Pin = GPIO_PIN_6;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOE, &GPIO_Init_Structure);
-
- GPIO_Init_Structure.Pin = GPIO_PIN_6;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOA, &GPIO_Init_Structure);
-
- /*** Configure the DMA ***/
- /* Set the parameters to be configured */
- hdma_eval.Init.Channel = DMA_CHANNEL_1;
- hdma_eval.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_eval.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_eval.Init.MemInc = DMA_MINC_ENABLE;
- hdma_eval.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- hdma_eval.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- hdma_eval.Init.Mode = DMA_CIRCULAR;
- hdma_eval.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_eval.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma_eval.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_eval.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_eval.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- hdma_eval.Instance = DMA2_Stream1;
-
- /* Associate the initialized DMA handle to the DCMI handle */
- __HAL_LINKDMA(hdcmi, DMA_Handle, hdma_eval);
-
- /*** Configure the NVIC for DCMI and DMA ***/
- /* NVIC configuration for DCMI transfer complete interrupt */
- HAL_NVIC_SetPriority(DCMI_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(DCMI_IRQn);
-
- /* NVIC configuration for DMA2D transfer complete interrupt */
- HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(hdcmi->DMA_Handle);
-}
-
-/**
- * @brief Line event callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_LineEventCallback();
-}
-
-/**
- * @brief Line Event callback.
- */
-__weak void BSP_CAMERA_LineEventCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_LineEventCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief VSYNC event callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_VsyncEventCallback();
-}
-
-/**
- * @brief VSYNC Event callback.
- */
-__weak void BSP_CAMERA_VsyncEventCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_VsyncEventCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief Frame event callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_FrameEventCallback();
-}
-
-/**
- * @brief Frame Event callback.
- */
-__weak void BSP_CAMERA_FrameEventCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_FrameEventCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief Error callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_ErrorCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_ErrorCallback();
-}
-
-/**
- * @brief Error callback.
- */
-__weak void BSP_CAMERA_ErrorCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_ErrorCallback could be implemented in the user file
- */
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_camera.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_camera.h
deleted file mode 100644
index 23ba4a2bb7..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_camera.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_camera.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324x9i_eval_camera.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324x9I_EVAL_CAMERA_H
-#define __STM324x9I_EVAL_CAMERA_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-/* Include Camera component Driver */
-#include "../Components/ov2640/ov2640.h"
-
-/* Include IO Driver */
-#include "stm324x9i_eval_io.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_CAMERA
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_CAMERA_Exported_Types STM324x9I EVAL CAMERA Exported Types
- * @{
- */
-
-/**
- * @brief Camera State structures definition
- */
-typedef enum
-{
- CAMERA_OK = 0x00,
- CAMERA_ERROR = 0x01,
- CAMERA_TIMEOUT = 0x02
-}Camera_StatusTypeDef;
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_CAMERA_Exported_Constants STM324x9I EVAL CAMERA Exported Constants
- * @{
- */
-#define RESOLUTION_R160x120 CAMERA_R160x120 /* QQVGA Resolution */
-#define RESOLUTION_R320x240 CAMERA_R320x240 /* QVGA Resolution */
-#define RESOLUTION_R480x272 CAMERA_R480x272 /* 480x272 Resolution */
-#define RESOLUTION_R640x480 CAMERA_R640x480 /* VGA Resolution */
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_CAMERA_Exported_Functions STM324x9I EVAL CAMERA Exported Functions
- * @{
- */
-uint8_t BSP_CAMERA_Init(uint32_t Resolution);
-void BSP_CAMERA_ContinuousStart(uint8_t *buff);
-void BSP_CAMERA_SnapshotStart(uint8_t *buff);
-void BSP_CAMERA_Suspend(void);
-void BSP_CAMERA_Resume(void);
-uint8_t BSP_CAMERA_Stop(void);
-void BSP_CAMERA_LineEventCallback(void);
-void BSP_CAMERA_VsyncEventCallback(void);
-void BSP_CAMERA_FrameEventCallback(void);
-void BSP_CAMERA_ErrorCallback(void);
-void BSP_CAMERA_MspInit(void);
-/* Camera features functions prototype */
-void BSP_CAMERA_ContrastBrightnessConfig(uint32_t contrast_level, uint32_t brightness_level);
-void BSP_CAMERA_BlackWhiteConfig(uint32_t Mode);
-void BSP_CAMERA_ColorEffectConfig(uint32_t Effect);
-
-/* To be called in DCMI_IRQHandler function */
-void BSP_CAMERA_IRQHandler(void);
-/* To be called in DMA2_Stream1_IRQHandler function */
-void BSP_CAMERA_DMA_IRQHandler(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_CAMERA_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_eeprom.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_eeprom.c
deleted file mode 100644
index cf8011eeb3..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_eeprom.c
+++ /dev/null
@@ -1,422 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_eeprom.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage an I2C M24LR64
- * EEPROM memory.
- * To be able to use this driver, the switch EE_M24LR64 must be defined
- * in your toolchain compiler preprocessor
- *
- * ===================================================================
- * Notes:
- * - This driver is intended for STM32F4xx families devices only.
- * - The I2C EEPROM memory (M24LR64) is available on separate daughter
- * board ANT7-M24LR-A, which is not provided with the STM324x9I_EVAL
- * board.
- * To use this driver you have to connect the ANT7-M24LR-A to CN3
- * connector of STM324x9I_EVAL board.
- * ===================================================================
- *
- * It implements a high level communication layer for read and write
- * from/to this memory. The needed STM32F4xx hardware resources (I2C and
- * GPIO) are defined in stm324x9i_eval.h file, and the initialization is
- * performed in EEPROM_IO_Init() function declared in stm324x9i_eval.c
- * file.
- * You can easily tailor this driver to any other development board,
- * by just adapting the defines for hardware resources and
- * EEPROM_IO_Init() function.
- *
- * @note In this driver, basic read and write functions (BSP_EEPROM_ReadBuffer()
- * and BSP_EEPROM_WritePage()) use DMA mode to perform the data
- * transfer to/from EEPROM memory.
- *
- * @note Regarding BSP_EEPROM_WritePage(), it is a optimized function to perform
- * small write (less than 1 page) BUT The number of bytes (combined to write start address) must not
- * cross the EEPROM page boundary. This function can only write into
- * the boundaries of an EEPROM page.
- * This function doesn't check on boundaries condition (in this driver
- * the function BSP_EEPROM_WriteBuffer() which calls BSP_EEPROM_WritePage() is
- * responsible of checking on Page boundaries).
- *
- *
- * +-----------------------------------------------------------------+
- * | Pin assignment for M24LR64 EEPROM |
- * +---------------------------------------+-----------+-------------+
- * | STM32F4xx I2C Pins | EEPROM | Pin |
- * +---------------------------------------+-----------+-------------+
- * | . | E0(GND) | 1 (0V) |
- * | . | AC0 | 2 |
- * | . | AC1 | 3 |
- * | . | VSS | 4 (0V) |
- * | SDA | SDA | 5 |
- * | SCL | SCL | 6 |
- * | . | E1(GND) | 7 (0V) |
- * | . | VDD | 8 (3.3V) |
- * +---------------------------------------+-----------+-------------+
- *
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_eeprom.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_EEPROM STM324x9I EVAL EEPROM
- * @brief This file includes the I2C EEPROM driver of STM324x9I-EVAL evaluation board.
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_EEPROM_Private_Variables STM324x9I EVAL EEPROM Private Variables
- * @{
- */
-__IO uint16_t EEPROMAddress = 0;
-__IO uint32_t EEPROMTimeout = EEPROM_READ_TIMEOUT;
-__IO uint16_t EEPROMDataRead;
-__IO uint8_t EEPROMDataWrite;
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_EEPROM_Private_Function_Prototypes STM324x9I EVAL EEPROM Private Function Prototypes
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_EEPROM_Private_Functions STM324x9I EVAL EEPROM Private Functions
- * @{
- */
-
-/**
- * @brief Initializes peripherals used by the I2C EEPROM driver.
- *
- * @note There are 2 different versions of M24LR64 (A01 & A02).
- * Then try to connect on 1st one (EEPROM_I2C_ADDRESS_A01)
- * and if problem, check the 2nd one (EEPROM_I2C_ADDRESS_A02)
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0)
- */
-uint32_t BSP_EEPROM_Init(void)
-{
- /* I2C Initialization */
- EEPROM_IO_Init();
-
- /* Select the EEPROM address for A01 and check if OK */
- EEPROMAddress = EEPROM_I2C_ADDRESS_A01;
- if(EEPROM_IO_IsDeviceReady(EEPROMAddress, EEPROM_MAX_TRIALS) != HAL_OK)
- {
- /* Select the EEPROM address for A02 and check if OK */
- EEPROMAddress = EEPROM_I2C_ADDRESS_A02;
- if(EEPROM_IO_IsDeviceReady(EEPROMAddress, EEPROM_MAX_TRIALS) != HAL_OK)
- {
- return EEPROM_FAIL;
- }
- }
- return EEPROM_OK;
-}
-
-/**
- * @brief Reads a block of data from the EEPROM.
- * @param pBuffer: pointer to the buffer that receives the data read from
- * the EEPROM.
- * @param ReadAddr: EEPROM's internal address to start reading from.
- * @param NumByteToRead: pointer to the variable holding number of bytes to
- * be read from the EEPROM.
- *
- * @note The variable pointed by NumByteToRead is reset to 0 when all the
- * data are read from the EEPROM. Application should monitor this
- * variable in order know when the transfer is complete.
- *
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_ReadBuffer(uint8_t* pBuffer, uint16_t ReadAddr, uint16_t* NumByteToRead)
-{
- uint32_t buffersize = *NumByteToRead;
-
- /* Set the pointer to the Number of data to be read. This pointer will be used
- by the DMA Transfer Completer interrupt Handler in order to reset the
- variable to 0. User should check on this variable in order to know if the
- DMA transfer has been complete or not. */
- EEPROMDataRead = *NumByteToRead;
-
- if(EEPROM_IO_ReadData(EEPROMAddress, ReadAddr, pBuffer, buffersize) != HAL_OK)
- {
- BSP_EEPROM_TIMEOUT_UserCallback();
- return EEPROM_FAIL;
- }
-
- /* If all operations OK, return EEPROM_OK (0) */
- return EEPROM_OK;
-}
-
-/**
- * @brief Writes more than one byte to the EEPROM with a single WRITE cycle.
- *
- * @note The number of bytes (combined to write start address) must not
- * cross the EEPROM page boundary. This function can only write into
- * the boundaries of an EEPROM page.
- * This function doesn't check on boundaries condition (in this driver
- * the function BSP_EEPROM_WriteBuffer() which calls BSP_EEPROM_WritePage() is
- * responsible of checking on Page boundaries).
- *
- * @param pBuffer: pointer to the buffer containing the data to be written to
- * the EEPROM.
- * @param WriteAddr: EEPROM's internal address to write to.
- * @param NumByteToWrite: pointer to the variable holding number of bytes to
- * be written into the EEPROM.
- *
- * @note The variable pointed by NumByteToWrite is reset to 0 when all the
- * data are written to the EEPROM. Application should monitor this
- * variable in order know when the transfer is complete.
- *
- * @note This function just configure the communication and enable the DMA
- * channel to transfer data. Meanwhile, the user application may perform
- * other tasks in parallel.
- *
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_WritePage(uint8_t* pBuffer, uint16_t WriteAddr, uint8_t* NumByteToWrite)
-{
- uint32_t buffersize = *NumByteToWrite;
- uint32_t status = EEPROM_OK;
-
- /* Set the pointer to the Number of data to be written. This pointer will be used
- by the DMA Transfer Completer interrupt Handler in order to reset the
- variable to 0. User should check on this variable in order to know if the
- DMA transfer has been complete or not. */
- EEPROMDataWrite = *NumByteToWrite;
-
- if(EEPROM_IO_WriteData(EEPROMAddress, WriteAddr, pBuffer, buffersize) != HAL_OK)
- {
- BSP_EEPROM_TIMEOUT_UserCallback();
- status = EEPROM_FAIL;
- }
-
- if(BSP_EEPROM_WaitEepromStandbyState() != EEPROM_OK)
- {
- return EEPROM_FAIL;
- }
-
- /* If all operations OK, return EEPROM_OK (0) */
- return status;
-}
-
-/**
- * @brief Writes buffer of data to the I2C EEPROM.
- * @param pBuffer: pointer to the buffer containing the data to be written
- * to the EEPROM.
- * @param WriteAddr: EEPROM's internal address to write to.
- * @param NumByteToWrite: number of bytes to write to the EEPROM.
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_WriteBuffer(uint8_t *pBuffer, uint16_t WriteAddr, uint16_t NumByteToWrite)
-{
- uint16_t numofpage = 0, numofsingle = 0, count = 0;
- uint16_t addr = 0;
- uint8_t dataindex = 0;
- uint32_t status = EEPROM_OK;
-
- addr = WriteAddr % EEPROM_PAGESIZE;
- count = EEPROM_PAGESIZE - addr;
- numofpage = NumByteToWrite / EEPROM_PAGESIZE;
- numofsingle = NumByteToWrite % EEPROM_PAGESIZE;
-
- /* If WriteAddr is EEPROM_PAGESIZE aligned */
- if(addr == 0)
- {
- /* If NumByteToWrite < EEPROM_PAGESIZE */
- if(numofpage == 0)
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- /* Start writing data */
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- /* If NumByteToWrite > EEPROM_PAGESIZE */
- else
- {
- while(numofpage--)
- {
- /* Store the number of data to be written */
- dataindex = EEPROM_PAGESIZE;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
-
- WriteAddr += EEPROM_PAGESIZE;
- pBuffer += EEPROM_PAGESIZE;
- }
-
- if(numofsingle!=0)
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- }
- }
- /* If WriteAddr is not EEPROM_PAGESIZE aligned */
- else
- {
- /* If NumByteToWrite < EEPROM_PAGESIZE */
- if(numofpage== 0)
- {
- /* If the number of data to be written is more than the remaining space
- in the current page: */
- if(NumByteToWrite > count)
- {
- /* Store the number of data to be written */
- dataindex = count;
- /* Write the data contained in same page */
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
-
- /* Store the number of data to be written */
- dataindex = (NumByteToWrite - count);
- /* Write the remaining data in the following page */
- status = BSP_EEPROM_WritePage((uint8_t*)(pBuffer + count), (WriteAddr + count), (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- else
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- }
- /* If NumByteToWrite > EEPROM_PAGESIZE */
- else
- {
- NumByteToWrite -= count;
- numofpage = NumByteToWrite / EEPROM_PAGESIZE;
- numofsingle = NumByteToWrite % EEPROM_PAGESIZE;
-
- if(count != 0)
- {
- /* Store the number of data to be written */
- dataindex = count;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- WriteAddr += count;
- pBuffer += count;
- }
-
- while(numofpage--)
- {
- /* Store the number of data to be written */
- dataindex = EEPROM_PAGESIZE;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- WriteAddr += EEPROM_PAGESIZE;
- pBuffer += EEPROM_PAGESIZE;
- }
- if(numofsingle != 0)
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- status = BSP_EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- }
- }
-
- /* If all operations OK, return EEPROM_OK (0) */
- return EEPROM_OK;
-}
-
-/**
- * @brief Wait for EEPROM Standby state.
- *
- * @note This function allows to wait and check that EEPROM has finished the
- * last operation. It is mostly used after Write operation: after receiving
- * the buffer to be written, the EEPROM may need additional time to actually
- * perform the write operation. During this time, it doesn't answer to
- * I2C packets addressed to it. Once the write operation is complete
- * the EEPROM responds to its address.
- *
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_WaitEepromStandbyState(void)
-{
- /* Check if the maximum allowed number of trials has bee reached */
- if(EEPROM_IO_IsDeviceReady(EEPROMAddress, EEPROM_MAX_TRIALS) != HAL_OK)
- {
- /* If the maximum number of trials has been reached, exit the function */
- BSP_EEPROM_TIMEOUT_UserCallback();
- return EEPROM_TIMEOUT;
- }
- return EEPROM_OK;
-}
-
-/**
- * @brief Basic management of the timeout situation.
- */
-__weak void BSP_EEPROM_TIMEOUT_UserCallback(void)
-{
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_eeprom.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_eeprom.h
deleted file mode 100644
index a9e441d6a5..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_eeprom.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_eeprom.h
- * @author MCD Application Team
- * @brief This file contains all the functions prototypes for
- * the stm324x9i_eval_eeprom.c firmware driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F4x9I_EVAL_EEPROM_H
-#define __STM32F4x9I_EVAL_EEPROM_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_EEPROM
- * @brief This file includes the I2C EEPROM driver of STM324x9I-EVAL evaluation board.
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_EEPROM_Exported_Constants STM324x9I EVAL EEPROM Exported Constants
- * @{
- */
-/* EEPROM hardware address and page size */
-#define EEPROM_PAGESIZE 4
-#define EEPROM_MAX_SIZE 0x2000 /* 64Kbit */
-
-/* Maximum Timeout values for flags and events waiting loops.
-This timeout is based on systick set to 1ms*/
-/* Timeout for read based if read all the EEPROM : EEPROM_MAX_SIZE * BSP_I2C_SPEED (640ms) */
-#define EEPROM_READ_TIMEOUT ((uint32_t)(1000))
-/* Timeout for write based on max write which is EEPROM_PAGESIZE bytes: EEPROM_PAGESIZE * BSP_I2C_SPEED (320us) */
-#define EEPROM_WRITE_TIMEOUT ((uint32_t)(10))
-
-/* Maximum number of trials for EEPROM_WaitEepromStandbyState() function */
-#define EEPROM_MAX_TRIALS 3000
-
-#define EEPROM_OK 0
-#define EEPROM_FAIL 1
-#define EEPROM_TIMEOUT 2
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_EEPROM_Exported_Functions STM324x9I EVAL EEPROM Exported Functions
- * @{
- */
-uint32_t BSP_EEPROM_Init(void);
-uint32_t BSP_EEPROM_ReadBuffer(uint8_t* pBuffer, uint16_t ReadAddr, uint16_t* NumByteToRead);
-uint32_t BSP_EEPROM_WritePage(uint8_t* pBuffer, uint16_t WriteAddr, uint8_t* NumByteToWrite);
-uint32_t BSP_EEPROM_WriteBuffer(uint8_t* pBuffer, uint16_t WriteAddr, uint16_t NumByteToWrite);
-uint32_t BSP_EEPROM_WaitEepromStandbyState(void);
-
-/* USER Callbacks: This function is declared as __weak in EEPROM driver and
- should be implemented into user application.
- BSP_EEPROM_TIMEOUT_UserCallback() function is called whenever a timeout condition
- occurs during communication (waiting on an event that doesn't occur, bus
- errors, busy devices ...). */
-void BSP_EEPROM_TIMEOUT_UserCallback(void);
-
-/* Link function for I2C EEPROM peripheral */
-void EEPROM_IO_Init(void);
-HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_EEPROM_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_io.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_io.c
deleted file mode 100644
index 8e31c9aebb..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_io.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_io.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage the IO pins
- * on STM324x9I-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the IO module of the STM324x9I-EVAL evaluation
- board.
- - The STMPE1600 IO expander device component driver must be included with this
- driver in order to run the IO functionalities commanded by the IO expander
- device mounted on the evaluation board.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the IO module using the BSP_IO_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- communication layer configuration to start the IO functionalities use.
-
- + IO functionalities use
- o The IO pin mode is configured when calling the function BSP_IO_ConfigPin(), you
- must specify the desired IO mode by choosing the "IO_ModeTypedef" parameter
- predefined value.
- o If an IO pin is used in interrupt mode, the function BSP_IO_ITGetStatus() is
- needed to get the interrupt status. To clear the IT pending bits, you should
- call the function BSP_IO_ITClear() with specifying the IO pending bit to clear.
- o The IT is handled using the corresponding external interrupt IRQ handler,
- the user IT callback treatment is implemented on the same external interrupt
- callback.
- o To get/set an IO pin combination state you can use the functions
- BSP_IO_ReadPin()/BSP_IO_WritePin() or the function BSP_IO_TogglePin() to toggle the pin
- state.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_io.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_IO STM324x9I EVAL IO
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_IO_Private_Variables STM324x9I EVAL IO Private Variables
- * @{
- */
-static IO_DrvTypeDef *io_driver;
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_IO_Private_Functions STM324x9I EVAL IO Private Functions
- * @{
- */
-
-/**
- * @brief Initializes and configures the IO functionalities and configures all
- * necessary hardware resources (GPIOs, clocks..).
- * @note BSP_IO_Init() is using HAL_Delay() function to ensure that stmpe1600
- * IO Expander is correctly reset. HAL_Delay() function provides accurate
- * delay (in milliseconds) based on variable incremented in SysTick ISR.
- * This implies that if BSP_IO_Init() is called from a peripheral ISR process,
- * then the SysTick interrupt must have higher priority (numerically lower)
- * than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
- * @retval IO_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_IO_Init(void)
-{
- uint8_t ret = IO_ERROR;
-
- /* Read ID and verify the IO expander is ready */
- if(stmpe1600_io_drv.ReadID(IO_I2C_ADDRESS) == STMPE1600_ID)
- {
- /* Initialize the IO driver structure */
- io_driver = &stmpe1600_io_drv;
- ret = IO_OK;
- }
-
- if(ret == IO_OK)
- {
- io_driver->Init(IO_I2C_ADDRESS);
- io_driver->Start(IO_I2C_ADDRESS, IO_PIN_ALL);
- }
- return ret;
-}
-
-/**
- * @brief Gets the selected pins IT status.
- * @param IO_Pin: Selected pins to check the status.
- * This parameter can be any combination of the IO pins.
- * @retval IO_OK if read status OK. Other value if error.
- */
-uint8_t BSP_IO_ITGetStatus(uint16_t IO_Pin)
-{
- /* Return the IO Pin IT status */
- return (io_driver->ITStatus(IO_I2C_ADDRESS, IO_Pin));
-}
-
-/**
- * @brief Clears all the IO IT pending bits.
- */
-void BSP_IO_ITClear(void)
-{
- /* Clear all IO IT pending bits */
- io_driver->ClearIT(IO_I2C_ADDRESS, STMPE1600_PIN_ALL);
-}
-
-/**
- * @brief Configures the IO pin(s) according to IO mode structure value.
- * @param IO_Pin: IO pin(s) to be configured.
- * This parameter can be one of the following values:
- * @arg STMPE1600_PIN_x: where x can be from 0 to 15.
- * @param IO_Mode: IO pin mode to configure
- * This parameter can be one of the following values:
- * @arg IO_MODE_INPUT
- * @arg IO_MODE_OUTPUT
- * @arg IO_MODE_IT_RISING_EDGE
- * @arg IO_MODE_IT_FALLING_EDGE
- * @retval IO_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_IO_ConfigPin(uint16_t IO_Pin, IO_ModeTypedef IO_Mode)
-{
- /* Configure the selected IO pin(s) mode */
- io_driver->Config(IO_I2C_ADDRESS, (uint16_t )IO_Pin, IO_Mode);
-
- return IO_OK;
-}
-
-/**
- * @brief Sets the selected pins state.
- * @param IO_Pin: Selected pins to write.
- * This parameter can be any combination of the IO pins.
- * @param PinState: New pins state to write
- */
-void BSP_IO_WritePin(uint16_t IO_Pin, uint8_t PinState)
-{
- /* Set the Pin state */
- io_driver->WritePin(IO_I2C_ADDRESS, IO_Pin, PinState);
-}
-
-/**
- * @brief Gets the selected pins current state.
- * @param IO_Pin: Selected pins to read.
- * This parameter can be any combination of the IO pins.
- * @retval The current pins state
- */
-uint16_t BSP_IO_ReadPin(uint16_t IO_Pin)
-{
- return(io_driver->ReadPin(IO_I2C_ADDRESS, IO_Pin));
-}
-
-/**
- * @brief Toggles the selected pins state.
- * @param IO_Pin: Selected pins to toggle.
- * This parameter can be any combination of the IO pins.
- */
-void BSP_IO_TogglePin(uint16_t IO_Pin)
-{
- /* Toggle the current pin state */
- if(io_driver->ReadPin(IO_I2C_ADDRESS, IO_Pin) == 1) /* Set */
- {
- io_driver->WritePin(IO_I2C_ADDRESS, IO_Pin, 0); /* Reset */
- }
- else
- {
- io_driver->WritePin(IO_I2C_ADDRESS, IO_Pin, 1); /* Set */
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_io.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_io.h
deleted file mode 100644
index 5b104c82e4..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_io.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_io.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324x9i_eval_io.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324x9I_EVAL_IO_H
-#define __STM324x9I_EVAL_IO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval.h"
-/* Include IO component driver */
-#include "../Components/stmpe1600/stmpe1600.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_IO
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_IO_Exported_Types STM324x9I EVAL IO Exported Types
- * @{
- */
-typedef struct
-{
- uint16_t TouchDetected;
- uint16_t x;
- uint16_t y;
- uint16_t z;
-}IO_StateTypeDef;
-
-typedef enum
-{
- IO_OK = 0,
- IO_ERROR = 1,
- IO_TIMEOUT = 2
-}IO_StatusTypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_IO_Exported_Constants IO Exported Constants
- * @{
- */
-#define IO_PIN_0 0x0001
-#define IO_PIN_1 0x0002
-#define IO_PIN_2 0x0004
-#define IO_PIN_3 0x0008
-#define IO_PIN_4 0x0010
-#define IO_PIN_5 0x0020
-#define IO_PIN_6 0x0040
-#define IO_PIN_7 0x0080
-#define IO_PIN_8 0x0100
-#define IO_PIN_9 0x0200
-#define IO_PIN_10 0x0400
-#define IO_PIN_11 0x0800
-#define IO_PIN_12 0x1000
-#define IO_PIN_13 0x2000
-#define IO_PIN_14 0x4000
-#define IO_PIN_15 0x8000
-#define IO_PIN_ALL 0xFFFF
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_IO_Exported_Functions STM324x9I EVAL IO Exported Functions
- * @{
- */
-uint8_t BSP_IO_Init(void);
-uint8_t BSP_IO_ITGetStatus(uint16_t IO_Pin);
-void BSP_IO_ITClear(void);
-uint8_t BSP_IO_ConfigPin(uint16_t IO_Pin, IO_ModeTypedef IO_Mode);
-void BSP_IO_WritePin(uint16_t IO_Pin, uint8_t PinState);
-uint16_t BSP_IO_ReadPin(uint16_t IO_Pin);
-void BSP_IO_TogglePin(uint16_t IO_Pin);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_IO_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_lcd.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_lcd.c
deleted file mode 100644
index fe143fc797..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_lcd.c
+++ /dev/null
@@ -1,1451 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_lcd.c
- * @author MCD Application Team
- * @brief This file includes the driver for Liquid Crystal Display (LCD) module
- * mounted on STM324x9I-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info: ------------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive directly an LCD TFT using the LTDC controller.
- - This driver selects dynamically the mounted LCD, AMPIRE 640x480 LCD mounted
- on MB1063 or AMPIRE 480x272 LCD mounted on MB1046 daughter board,
- and uses the adequate timing and setting for the specified LCD using
- device ID of the STMPE811 mounted on MB1046 daughter board.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the LCD using the BSP_LCD_Init() function.
- o Apply the Layer configuration using the BSP_LCD_LayerDefaultInit() function.
- o Select the LCD layer to be used using the BSP_LCD_SelectLayer() function.
- o Enable the LCD display using the BSP_LCD_DisplayOn() function.
-
- + Options
- o Configure and enable the color keying functionality using the
- BSP_LCD_SetColorKeying() function.
- o Modify in the fly the transparency and/or the frame buffer address
- using the following functions:
- - BSP_LCD_SetTransparency()
- - BSP_LCD_SetLayerAddress()
-
- + Display on LCD
- o Clear the hole LCD using BSP_LCD_Clear() function or only one specified string
- line using the BSP_LCD_ClearStringLine() function.
- o Display a character on the specified line and column using the BSP_LCD_DisplayChar()
- function or a complete string line using the BSP_LCD_DisplayStringAtLine() function.
- o Display a string line on the specified position (x,y in pixel) and align mode
- using the BSP_LCD_DisplayStringAtLine() function.
- o Draw and fill a basic shapes (dot, line, rectangle, circle, ellipse, .. bitmap)
- on LCD using the available set of functions.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_lcd.h"
-#include "../../../Utilities/Fonts/fonts.h"
-#include "../../../Utilities/Fonts/font24.c"
-#include "../../../Utilities/Fonts/font20.c"
-#include "../../../Utilities/Fonts/font16.c"
-#include "../../../Utilities/Fonts/font12.c"
-#include "../../../Utilities/Fonts/font8.c"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_LCD STM324x9I EVAL LCD
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_LCD_Private_Macros STM324x9I EVAL LCD Private Macros
- * @{
- */
-#define POLY_X(Z) ((int32_t)((Points + Z)->X))
-#define POLY_Y(Z) ((int32_t)((Points + Z)->Y))
-#define ABS(X) ((X) > 0 ? (X) : -(X))
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LCD_Private_Variables STM324x9I EVAL LCD Private Variables
- * @{
- */
-LTDC_HandleTypeDef hltdc_eval;
-static DMA2D_HandleTypeDef hdma2d_eval;
-static uint32_t PCLK_profile = LCD_MAX_PCLK;
-
-/* Default LCD configuration with LCD Layer 1 */
-static uint32_t ActiveLayer = 0;
-static LCD_DrawPropTypeDef DrawProp[MAX_LAYER_NUMBER];
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LCD_Private_FunctionPrototypes STM324x9I EVAL LCD Private FunctionPrototypes
- * @{
- */
-static void MspInit(void);
-static void DrawChar(uint16_t Xpos, uint16_t Ypos, const uint8_t *c);
-static void FillTriangle(uint16_t x1, uint16_t x2, uint16_t x3, uint16_t y1, uint16_t y2, uint16_t y3);
-static void LL_FillBuffer(uint32_t LayerIndex, void *pDst, uint32_t xSize, uint32_t ySize, uint32_t OffLine, uint32_t ColorIndex);
-static void LL_ConvertLineToARGB8888(void * pSrc, void *pDst, uint32_t xSize, uint32_t ColorMode);
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LCD_Private_Functions STM324x9I EVAL LCD Private Functions
- * @{
- */
-/**
- * @brief Initializes the LCD.
- * @retval LCD state
- */
-uint8_t BSP_LCD_Init(void)
-{
- return (BSP_LCD_InitEx(LCD_MAX_PCLK));
-}
-
-/**
- * @brief Initializes the LCD.
- * @param PclkConfig : pixel clock profile
- * @retval LCD state
- */
-uint8_t BSP_LCD_InitEx(uint32_t PclkConfig)
-{
- PCLK_profile = PclkConfig;
-
- /* Select the used LCD */
- /* The AMPIRE 480x272 does not contain an ID register then we check the availability
- of AMPIRE 480x640 LCD using device ID of the STMPE811 mounted on MB1046 daughter board */
- if(stmpe811_ts_drv.ReadID(TS_I2C_ADDRESS) == STMPE811_ID)
- {
- /* The AMPIRE LCD 480x272 is selected */
- /* Timing Configuration */
- hltdc_eval.Init.HorizontalSync = (AMPIRE480272_HSYNC - 1);
- hltdc_eval.Init.VerticalSync = (AMPIRE480272_VSYNC - 1);
- hltdc_eval.Init.AccumulatedHBP = (AMPIRE480272_HSYNC + AMPIRE480272_HBP - 1);
- hltdc_eval.Init.AccumulatedVBP = (AMPIRE480272_VSYNC + AMPIRE480272_VBP - 1);
- hltdc_eval.Init.AccumulatedActiveH = (AMPIRE480272_HEIGHT + AMPIRE480272_VSYNC + AMPIRE480272_VBP - 1);
- hltdc_eval.Init.AccumulatedActiveW = (AMPIRE480272_WIDTH + AMPIRE480272_HSYNC + AMPIRE480272_HBP - 1);
- hltdc_eval.Init.TotalHeigh = (AMPIRE480272_HEIGHT + AMPIRE480272_VSYNC + AMPIRE480272_VBP + AMPIRE480272_VFP - 1);
- hltdc_eval.Init.TotalWidth = (AMPIRE480272_WIDTH + AMPIRE480272_HSYNC + AMPIRE480272_HBP + AMPIRE480272_HFP - 1);
-
- /* Initialize the LCD pixel width and pixel height */
- hltdc_eval.LayerCfg->ImageWidth = AMPIRE480272_WIDTH;
- hltdc_eval.LayerCfg->ImageHeight = AMPIRE480272_HEIGHT;
- }
- else
- {
- /* The LCD AMPIRE 640x480 is selected */
- /* Timing configuration */
- hltdc_eval.Init.HorizontalSync = (AMPIRE640480_HSYNC - 1);
- hltdc_eval.Init.VerticalSync = (AMPIRE640480_VSYNC - 1);
- hltdc_eval.Init.AccumulatedHBP = (AMPIRE640480_HSYNC + AMPIRE640480_HBP - 1);
- hltdc_eval.Init.AccumulatedVBP = (AMPIRE640480_VSYNC + AMPIRE640480_VBP - 1);
- hltdc_eval.Init.AccumulatedActiveH = (AMPIRE640480_HEIGHT + AMPIRE640480_VSYNC + AMPIRE640480_VBP - 1);
- hltdc_eval.Init.AccumulatedActiveW = (AMPIRE640480_WIDTH + AMPIRE640480_HSYNC + AMPIRE640480_HBP - 1);
- hltdc_eval.Init.TotalHeigh = (AMPIRE640480_HEIGHT + AMPIRE640480_VSYNC + AMPIRE640480_VBP + AMPIRE640480_VFP - 1);
- hltdc_eval.Init.TotalWidth = (AMPIRE640480_WIDTH + AMPIRE640480_HSYNC + AMPIRE640480_HBP + AMPIRE640480_HFP - 1);
-
- /* Initialize the LCD pixel width and pixel height */
- hltdc_eval.LayerCfg->ImageWidth = AMPIRE640480_WIDTH;
- hltdc_eval.LayerCfg->ImageHeight = AMPIRE640480_HEIGHT;
- }
-
- /* Background value */
- hltdc_eval.Init.Backcolor.Blue = 0;
- hltdc_eval.Init.Backcolor.Green = 0;
- hltdc_eval.Init.Backcolor.Red = 0;
-
- /* Polarity */
- hltdc_eval.Init.HSPolarity = LTDC_HSPOLARITY_AL;
- hltdc_eval.Init.VSPolarity = LTDC_VSPOLARITY_AL;
- hltdc_eval.Init.DEPolarity = LTDC_DEPOLARITY_AL;
- hltdc_eval.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
- hltdc_eval.Instance = LTDC;
-
- /* LCD clock configuration */
- BSP_LCD_ClockConfig(&hltdc_eval, &PCLK_profile);
-
- MspInit();
- HAL_LTDC_Init(&hltdc_eval);
-
-#if !defined(DATA_IN_ExtSDRAM)
- /* Initialize the SDRAM */
- BSP_SDRAM_Init();
-#endif /* DATA_IN_ExtSDRAM */
-
- /* Initialize the font */
- BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
-
- return LCD_OK;
-}
-
-/**
- * @brief Gets the LCD X size.
- * @retval Used LCD X size
- */
-uint32_t BSP_LCD_GetXSize(void)
-{
- return hltdc_eval.LayerCfg[ActiveLayer].ImageWidth;
-}
-
-/**
- * @brief Gets the LCD Y size.
- * @retval Used LCD Y size
- */
-uint32_t BSP_LCD_GetYSize(void)
-{
- return hltdc_eval.LayerCfg[ActiveLayer].ImageHeight;
-}
-
-/**
- * @brief Initializes the LCD layers.
- * @param LayerIndex: Layer foreground or background
- * @param FB_Address: Layer frame buffer
- */
-void BSP_LCD_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address)
-{
- LCD_LayerCfgTypeDef Layercfg;
-
- /* Layer Init */
- Layercfg.WindowX0 = 0;
- Layercfg.WindowX1 = BSP_LCD_GetXSize();
- Layercfg.WindowY0 = 0;
- Layercfg.WindowY1 = BSP_LCD_GetYSize();
- Layercfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
- Layercfg.FBStartAdress = FB_Address;
- Layercfg.Alpha = 255;
- Layercfg.Alpha0 = 0;
- Layercfg.Backcolor.Blue = 0;
- Layercfg.Backcolor.Green = 0;
- Layercfg.Backcolor.Red = 0;
- Layercfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
- Layercfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
- Layercfg.ImageWidth = BSP_LCD_GetXSize();
- Layercfg.ImageHeight = BSP_LCD_GetYSize();
-
- HAL_LTDC_ConfigLayer(&hltdc_eval, &Layercfg, LayerIndex);
-
- DrawProp[LayerIndex].BackColor = LCD_COLOR_WHITE;
- DrawProp[LayerIndex].pFont = &Font24;
- DrawProp[LayerIndex].TextColor = LCD_COLOR_BLACK;
-}
-
-/**
- * @brief Selects the LCD Layer.
- * @param LayerIndex: Layer foreground or background
- */
-void BSP_LCD_SelectLayer(uint32_t LayerIndex)
-{
- ActiveLayer = LayerIndex;
-}
-
-/**
- * @brief Sets an LCD Layer visible
- * @param LayerIndex: Visible Layer
- * @param State: New state of the specified layer
- * This parameter can be one of the following values:
- * @arg ENABLE
- * @arg DISABLE
- */
-void BSP_LCD_SetLayerVisible(uint32_t LayerIndex, FunctionalState State)
-{
- if(State == ENABLE)
- {
- __HAL_LTDC_LAYER_ENABLE(&hltdc_eval, LayerIndex);
- }
- else
- {
- __HAL_LTDC_LAYER_DISABLE(&hltdc_eval, LayerIndex);
- }
- __HAL_LTDC_RELOAD_CONFIG(&hltdc_eval);
-}
-
-/**
- * @brief Sets an LCD Layer visible without reloading.
- * @param LayerIndex: Visible Layer
- * @param State: New state of the specified layer
- * This parameter can be one of the following values:
- * @arg ENABLE
- * @arg DISABLE
- * @retval None
- */
-void BSP_LCD_SetLayerVisible_NoReload(uint32_t LayerIndex, FunctionalState State)
-{
- if(State == ENABLE)
- {
- __HAL_LTDC_LAYER_ENABLE(&hltdc_eval, LayerIndex);
- }
- else
- {
- __HAL_LTDC_LAYER_DISABLE(&hltdc_eval, LayerIndex);
- }
- /* Do not Sets the Reload */
-}
-
-/**
- * @brief Configures the transparency.
- * @param LayerIndex: Layer foreground or background.
- * @param Transparency: Transparency
- * This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF
- */
-void BSP_LCD_SetTransparency(uint32_t LayerIndex, uint8_t Transparency)
-{
- HAL_LTDC_SetAlpha(&hltdc_eval, Transparency, LayerIndex);
-}
-
-/**
- * @brief Configures the transparency without reloading.
- * @param LayerIndex: Layer foreground or background.
- * @param Transparency: Transparency
- * This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF
- * @retval None
- */
-void BSP_LCD_SetTransparency_NoReload(uint32_t LayerIndex, uint8_t Transparency)
-{
- HAL_LTDC_SetAlpha_NoReload(&hltdc_eval, Transparency, LayerIndex);
-}
-
-/**
- * @brief Sets an LCD layer frame buffer address.
- * @param LayerIndex: Layer foreground or background
- * @param Address: New LCD frame buffer value
- */
-void BSP_LCD_SetLayerAddress(uint32_t LayerIndex, uint32_t Address)
-{
- HAL_LTDC_SetAddress(&hltdc_eval, Address, LayerIndex);
-}
-
-/**
- * @brief Sets an LCD layer frame buffer address without reloading.
- * @param LayerIndex: Layer foreground or background
- * @param Address: New LCD frame buffer value
- * @retval None
- */
-void BSP_LCD_SetLayerAddress_NoReload(uint32_t LayerIndex, uint32_t Address)
-{
- HAL_LTDC_SetAddress_NoReload(&hltdc_eval, Address, LayerIndex);
-}
-
-/**
- * @brief Sets display window.
- * @param LayerIndex: Layer index
- * @param Xpos: LCD X position
- * @param Ypos: LCD Y position
- * @param Width: LCD window width
- * @param Height: LCD window height
- */
-void BSP_LCD_SetLayerWindow(uint16_t LayerIndex, uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- /* Reconfigure the layer size */
- HAL_LTDC_SetWindowSize(&hltdc_eval, Width, Height, LayerIndex);
-
- /* Reconfigure the layer position */
- HAL_LTDC_SetWindowPosition(&hltdc_eval, Xpos, Ypos, LayerIndex);
-}
-
-/**
- * @brief Sets display window without reloading.
- * @param LayerIndex: Layer index
- * @param Xpos: LCD X position
- * @param Ypos: LCD Y position
- * @param Width: LCD window width
- * @param Height: LCD window height
- * @retval None
- */
-void BSP_LCD_SetLayerWindow_NoReload(uint16_t LayerIndex, uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- /* Reconfigure the layer size */
- HAL_LTDC_SetWindowSize_NoReload(&hltdc_eval, Width, Height, LayerIndex);
-
- /* Reconfigure the layer position */
- HAL_LTDC_SetWindowPosition_NoReload(&hltdc_eval, Xpos, Ypos, LayerIndex);
-}
-
-/**
- * @brief Configures and sets the color keying.
- * @param LayerIndex: Layer foreground or background
- * @param RGBValue: Color reference
- */
-void BSP_LCD_SetColorKeying(uint32_t LayerIndex, uint32_t RGBValue)
-{
- /* Configure and Enable the color Keying for LCD Layer */
- HAL_LTDC_ConfigColorKeying(&hltdc_eval, RGBValue, LayerIndex);
- HAL_LTDC_EnableColorKeying(&hltdc_eval, LayerIndex);
-}
-
-/**
- * @brief Configures and sets the color keying without reloading.
- * @param LayerIndex: Layer foreground or background
- * @param RGBValue: Color reference
- * @retval None
- */
-void BSP_LCD_SetColorKeying_NoReload(uint32_t LayerIndex, uint32_t RGBValue)
-{
- /* Configure and Enable the color Keying for LCD Layer */
- HAL_LTDC_ConfigColorKeying_NoReload(&hltdc_eval, RGBValue, LayerIndex);
- HAL_LTDC_EnableColorKeying_NoReload(&hltdc_eval, LayerIndex);
-}
-
-/**
- * @brief Disables the color keying.
- * @param LayerIndex: Layer foreground or background
- */
-void BSP_LCD_ResetColorKeying(uint32_t LayerIndex)
-{
- /* Disable the color Keying for LCD Layer */
- HAL_LTDC_DisableColorKeying(&hltdc_eval, LayerIndex);
-}
-
-/**
- * @brief Disables the color keying without reloading.
- * @param LayerIndex: Layer foreground or background
- * @retval None
- */
-void BSP_LCD_ResetColorKeying_NoReload(uint32_t LayerIndex)
-{
- /* Disable the color Keying for LCD Layer */
- HAL_LTDC_DisableColorKeying_NoReload(&hltdc_eval, LayerIndex);
-}
-
-/**
- * @brief Disables the color keying without reloading.
- * @param ReloadType: can be one of the following values
- * - LCD_RELOAD_IMMEDIATE
- * - LCD_RELOAD_VERTICAL_BLANKING
- * @retval None
- */
-void BSP_LCD_Relaod(uint32_t ReloadType)
-{
- HAL_LTDC_Relaod (&hltdc_eval, ReloadType);
-}
-
-/**
- * @brief Sets the LCD text color.
- * @param Color: Text color code ARGB(8-8-8-8)
- */
-void BSP_LCD_SetTextColor(uint32_t Color)
-{
- DrawProp[ActiveLayer].TextColor = Color;
-}
-
-/**
- * @brief Gets the LCD text color.
- * @retval Used text color.
- */
-uint32_t BSP_LCD_GetTextColor(void)
-{
- return DrawProp[ActiveLayer].TextColor;
-}
-
-/**
- * @brief Sets the LCD background color.
- * @param Color: Layer background color code ARGB(8-8-8-8)
- */
-void BSP_LCD_SetBackColor(uint32_t Color)
-{
- DrawProp[ActiveLayer].BackColor = Color;
-}
-
-/**
- * @brief Gets the LCD background color.
- * @retval Used background color
- */
-uint32_t BSP_LCD_GetBackColor(void)
-{
- return DrawProp[ActiveLayer].BackColor;
-}
-
-/**
- * @brief Sets the LCD text font.
- * @param fonts: Layer font to be used
- */
-void BSP_LCD_SetFont(sFONT *fonts)
-{
- DrawProp[ActiveLayer].pFont = fonts;
-}
-
-/**
- * @brief Gets the LCD text font.
- * @retval Used layer font
- */
-sFONT *BSP_LCD_GetFont(void)
-{
- return DrawProp[ActiveLayer].pFont;
-}
-
-/**
- * @brief Reads an LCD pixel.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @retval RGB pixel color
- */
-uint32_t BSP_LCD_ReadPixel(uint16_t Xpos, uint16_t Ypos)
-{
- uint32_t ret = 0;
-
- if(hltdc_eval.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_ARGB8888)
- {
- /* Read data value from SDRAM memory */
- ret = *(__IO uint32_t*) (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress + (4*(Ypos*BSP_LCD_GetXSize() + Xpos)));
- }
- else if(hltdc_eval.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB888)
- {
- /* Read data value from SDRAM memory */
- ret = (*(__IO uint32_t*) (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress + (4*(Ypos*BSP_LCD_GetXSize() + Xpos))) & 0x00FFFFFF);
- }
- else if((hltdc_eval.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \
- (hltdc_eval.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \
- (hltdc_eval.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_AL88))
- {
- /* Read data value from SDRAM memory */
- ret = *(__IO uint16_t*) (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress + (2*(Ypos*BSP_LCD_GetXSize() + Xpos)));
- }
- else
- {
- /* Read data value from SDRAM memory */
- ret = *(__IO uint8_t*) (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress + (2*(Ypos*BSP_LCD_GetXSize() + Xpos)));
- }
-
- return ret;
-}
-
-/**
- * @brief Clears the hole LCD.
- * @param Color: Color of the background
- */
-void BSP_LCD_Clear(uint32_t Color)
-{
- /* Clear the LCD */
- LL_FillBuffer(ActiveLayer, (uint32_t *)(hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress), BSP_LCD_GetXSize(), BSP_LCD_GetYSize(), 0, Color);
-}
-
-/**
- * @brief Clears the selected line.
- * @param Line: Line to be cleared
- */
-void BSP_LCD_ClearStringLine(uint32_t Line)
-{
- uint32_t color_backup = DrawProp[ActiveLayer].TextColor;
- DrawProp[ActiveLayer].TextColor = DrawProp[ActiveLayer].BackColor;
-
- /* Draw rectangle with background color */
- BSP_LCD_FillRect(0, (Line * DrawProp[ActiveLayer].pFont->Height), BSP_LCD_GetXSize(), DrawProp[ActiveLayer].pFont->Height);
-
- DrawProp[ActiveLayer].TextColor = color_backup;
- BSP_LCD_SetTextColor(DrawProp[ActiveLayer].TextColor);
-}
-
-/**
- * @brief Displays one character.
- * @param Xpos: Start column address
- * @param Ypos: Line where to display the character shape.
- * @param Ascii: Character ascii code
- * This parameter must be a number between Min_Data = 0x20 and Max_Data = 0x7E
- */
-void BSP_LCD_DisplayChar(uint16_t Xpos, uint16_t Ypos, uint8_t Ascii)
-{
- DrawChar(Xpos, Ypos, &DrawProp[ActiveLayer].pFont->table[(Ascii-' ') *\
- DrawProp[ActiveLayer].pFont->Height * ((DrawProp[ActiveLayer].pFont->Width + 7) / 8)]);
-}
-
-/**
- * @brief Displays characters on the LCD.
- * @param Xpos: X position (in pixel)
- * @param Ypos: Y position (in pixel)
- * @param Text: Pointer to string to display on LCD
- * @param Mode: Display mode
- * This parameter can be one of the following values:
- * @arg CENTER_MODE
- * @arg RIGHT_MODE
- * @arg LEFT_MODE
- */
-void BSP_LCD_DisplayStringAt(uint16_t Xpos, uint16_t Ypos, uint8_t *Text, Text_AlignModeTypdef Mode)
-{
- uint16_t refcolumn = 1, i = 0;
- uint32_t size = 0, xsize = 0;
- uint8_t *ptr = Text;
-
- /* Get the text size */
- while (*ptr++) size ++ ;
-
- /* Characters number per line */
- xsize = (BSP_LCD_GetXSize()/DrawProp[ActiveLayer].pFont->Width);
-
- switch (Mode)
- {
- case CENTER_MODE:
- {
- refcolumn = Xpos + ((xsize - size)* DrawProp[ActiveLayer].pFont->Width) / 2;
- break;
- }
- case LEFT_MODE:
- {
- refcolumn = Xpos;
- break;
- }
- case RIGHT_MODE:
- {
- refcolumn = - Xpos + ((xsize - size)*DrawProp[ActiveLayer].pFont->Width);
- break;
- }
- default:
- {
- refcolumn = Xpos;
- break;
- }
- }
-
- /* Send the string character by character on LCD */
- while ((*Text != 0) & (((BSP_LCD_GetXSize() - (i*DrawProp[ActiveLayer].pFont->Width)) & 0xFFFF) >= DrawProp[ActiveLayer].pFont->Width))
- {
- /* Display one character on LCD */
- BSP_LCD_DisplayChar(refcolumn, Ypos, *Text);
- /* Decrement the column position by 16 */
- refcolumn += DrawProp[ActiveLayer].pFont->Width;
- /* Point on the next character */
- Text++;
- i++;
- }
-}
-
-/**
- * @brief Displays a maximum of 60 characters on the LCD.
- * @param Line: Line where to display the character shape
- * @param ptr: Pointer to string to display on LCD
- */
-void BSP_LCD_DisplayStringAtLine(uint16_t Line, uint8_t *ptr)
-{
- BSP_LCD_DisplayStringAt(0, LINE(Line), ptr, LEFT_MODE);
-}
-
-/**
- * @brief Draws an horizontal line.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Length: Line length
- */
-void BSP_LCD_DrawHLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length)
-{
- uint32_t Xaddress = 0;
-
- /* Get the line address */
- Xaddress = (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos);
-
- /* Write line */
- LL_FillBuffer(ActiveLayer, (uint32_t *)Xaddress, Length, 1, 0, DrawProp[ActiveLayer].TextColor);
-}
-
-/**
- * @brief Draws a vertical line.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Length: Line length
- */
-void BSP_LCD_DrawVLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length)
-{
- uint32_t Xaddress = 0;
-
- /* Get the line address */
- Xaddress = (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos);
-
- /* Write line */
- LL_FillBuffer(ActiveLayer, (uint32_t *)Xaddress, 1, Length, (BSP_LCD_GetXSize() - 1), DrawProp[ActiveLayer].TextColor);
-}
-
-/**
- * @brief Draws an uni-line (between two points).
- * @param x1: Point 1 X position
- * @param y1: Point 1 Y position
- * @param x2: Point 2 X position
- * @param y2: Point 2 Y position
- */
-void BSP_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
-{
- int16_t deltax = 0, deltay = 0, x = 0, y = 0, xinc1 = 0, xinc2 = 0,
- yinc1 = 0, yinc2 = 0, den = 0, num = 0, numadd = 0, numpixels = 0,
- curpixel = 0;
-
- deltax = ABS(x2 - x1); /* The difference between the x's */
- deltay = ABS(y2 - y1); /* The difference between the y's */
- x = x1; /* Start x off at the first pixel */
- y = y1; /* Start y off at the first pixel */
-
- if (x2 >= x1) /* The x-values are increasing */
- {
- xinc1 = 1;
- xinc2 = 1;
- }
- else /* The x-values are decreasing */
- {
- xinc1 = -1;
- xinc2 = -1;
- }
-
- if (y2 >= y1) /* The y-values are increasing */
- {
- yinc1 = 1;
- yinc2 = 1;
- }
- else /* The y-values are decreasing */
- {
- yinc1 = -1;
- yinc2 = -1;
- }
-
- if (deltax >= deltay) /* There is at least one x-value for every y-value */
- {
- xinc1 = 0; /* Don't change the x when numerator >= denominator */
- yinc2 = 0; /* Don't change the y for every iteration */
- den = deltax;
- num = deltax / 2;
- numadd = deltay;
- numpixels = deltax; /* There are more x-values than y-values */
- }
- else /* There is at least one y-value for every x-value */
- {
- xinc2 = 0; /* Don't change the x for every iteration */
- yinc1 = 0; /* Don't change the y when numerator >= denominator */
- den = deltay;
- num = deltay / 2;
- numadd = deltax;
- numpixels = deltay; /* There are more y-values than x-values */
- }
-
- for (curpixel = 0; curpixel <= numpixels; curpixel++)
- {
- BSP_LCD_DrawPixel(x, y, DrawProp[ActiveLayer].TextColor); /* Draw the current pixel */
- num += numadd; /* Increase the numerator by the top of the fraction */
- if (num >= den) /* Check if numerator >= denominator */
- {
- num -= den; /* Calculate the new numerator value */
- x += xinc1; /* Change the x as appropriate */
- y += yinc1; /* Change the y as appropriate */
- }
- x += xinc2; /* Change the x as appropriate */
- y += yinc2; /* Change the y as appropriate */
- }
-}
-
-/**
- * @brief Draws a rectangle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Width: Rectangle width
- * @param Height: Rectangle height
- */
-void BSP_LCD_DrawRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- /* Draw horizontal lines */
- BSP_LCD_DrawHLine(Xpos, Ypos, Width);
- BSP_LCD_DrawHLine(Xpos, (Ypos+ Height), Width);
-
- /* Draw vertical lines */
- BSP_LCD_DrawVLine(Xpos, Ypos, Height);
- BSP_LCD_DrawVLine((Xpos + Width), Ypos, Height);
-}
-
-/**
- * @brief Draws a circle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Radius: Circle radius
- */
-void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
-{
- int32_t D; /* Decision Variable */
- uint32_t CurX; /* Current X Value */
- uint32_t CurY; /* Current Y Value */
-
- D = 3 - (Radius << 1);
- CurX = 0;
- CurY = Radius;
-
- while (CurX <= CurY)
- {
- BSP_LCD_DrawPixel((Xpos + CurX), (Ypos - CurY), DrawProp[ActiveLayer].TextColor);
-
- BSP_LCD_DrawPixel((Xpos - CurX), (Ypos - CurY), DrawProp[ActiveLayer].TextColor);
-
- BSP_LCD_DrawPixel((Xpos + CurY), (Ypos - CurX), DrawProp[ActiveLayer].TextColor);
-
- BSP_LCD_DrawPixel((Xpos - CurY), (Ypos - CurX), DrawProp[ActiveLayer].TextColor);
-
- BSP_LCD_DrawPixel((Xpos + CurX), (Ypos + CurY), DrawProp[ActiveLayer].TextColor);
-
- BSP_LCD_DrawPixel((Xpos - CurX), (Ypos + CurY), DrawProp[ActiveLayer].TextColor);
-
- BSP_LCD_DrawPixel((Xpos + CurY), (Ypos + CurX), DrawProp[ActiveLayer].TextColor);
-
- BSP_LCD_DrawPixel((Xpos - CurY), (Ypos + CurX), DrawProp[ActiveLayer].TextColor);
-
- if (D < 0)
- {
- D += (CurX << 2) + 6;
- }
- else
- {
- D += ((CurX - CurY) << 2) + 10;
- CurY--;
- }
- CurX++;
- }
-}
-
-/**
- * @brief Draws an poly-line (between many points).
- * @param Points: Pointer to the points array
- * @param PointCount: Number of points
- */
-void BSP_LCD_DrawPolygon(pPoint Points, uint16_t PointCount)
-{
- int16_t X = 0, Y = 0;
-
- if(PointCount < 2)
- {
- return;
- }
-
- BSP_LCD_DrawLine(Points->X, Points->Y, (Points+PointCount-1)->X, (Points+PointCount-1)->Y);
-
- while(--PointCount)
- {
- X = Points->X;
- Y = Points->Y;
- Points++;
- BSP_LCD_DrawLine(X, Y, Points->X, Points->Y);
- }
-}
-
-/**
- * @brief Draws an ellipse on LCD.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param XRadius: Ellipse X radius
- * @param YRadius: Ellipse Y radius
- */
-void BSP_LCD_DrawEllipse(int Xpos, int Ypos, int XRadius, int YRadius)
-{
- int x = 0, y = -YRadius, err = 2-2*XRadius, e2;
- float K = 0, rad1 = 0, rad2 = 0;
-
- rad1 = XRadius;
- rad2 = YRadius;
-
- K = (float)(rad2/rad1);
-
- do {
- BSP_LCD_DrawPixel((Xpos-(uint16_t)(x/K)), (Ypos+y), DrawProp[ActiveLayer].TextColor);
- BSP_LCD_DrawPixel((Xpos+(uint16_t)(x/K)), (Ypos+y), DrawProp[ActiveLayer].TextColor);
- BSP_LCD_DrawPixel((Xpos+(uint16_t)(x/K)), (Ypos-y), DrawProp[ActiveLayer].TextColor);
- BSP_LCD_DrawPixel((Xpos-(uint16_t)(x/K)), (Ypos-y), DrawProp[ActiveLayer].TextColor);
-
- e2 = err;
- if (e2 <= x) {
- err += ++x*2+1;
- if (-y == x && e2 <= y) e2 = 0;
- }
- if (e2 > y) err += ++y*2+1;
- }
- while (y <= 0);
-}
-
-/**
- * @brief Draws a bitmap picture loaded in the internal Flash (32 bpp).
- * @param Xpos: Bmp X position in the LCD
- * @param Ypos: Bmp Y position in the LCD
- * @param pbmp: Pointer to Bmp picture address in the internal Flash
- */
-void BSP_LCD_DrawBitmap(uint32_t Xpos, uint32_t Ypos, uint8_t *pbmp)
-{
- uint32_t index = 0, width = 0, height = 0, bit_pixel = 0;
- uint32_t Address;
- uint32_t InputColorMode = 0;
-
- /* Get bitmap data address offset */
- index = pbmp[10] + (pbmp[11] << 8) + (pbmp[12] << 16) + (pbmp[13] << 24);
-
- /* Read bitmap width */
- width = pbmp[18] + (pbmp[19] << 8) + (pbmp[20] << 16) + (pbmp[21] << 24);
-
- /* Read bitmap height */
- height = pbmp[22] + (pbmp[23] << 8) + (pbmp[24] << 16) + (pbmp[25] << 24);
-
- /* Read bit/pixel */
- bit_pixel = pbmp[28] + (pbmp[29] << 8);
-
- /* Set the address */
- Address = hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress + (((BSP_LCD_GetXSize()*Ypos) + Xpos)*(4));
-
- /* Get the layer pixel format */
- if ((bit_pixel/8) == 4)
- {
- InputColorMode = CM_ARGB8888;
- }
- else if ((bit_pixel/8) == 2)
- {
- InputColorMode = CM_RGB565;
- }
- else
- {
- InputColorMode = CM_RGB888;
- }
-
- /* Bypass the bitmap header */
- pbmp += (index + (width * (height - 1) * (bit_pixel/8)));
-
- /* Convert picture to ARGB8888 pixel format */
- for(index=0; index < height; index++)
- {
- /* Pixel format conversion */
- LL_ConvertLineToARGB8888((uint32_t *)pbmp, (uint32_t *)Address, width, InputColorMode);
-
- /* Increment the source and destination buffers */
- Address+= (BSP_LCD_GetXSize()*4);
- pbmp -= width*(bit_pixel/8);
- }
-}
-
-/**
- * @brief Draws a full rectangle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Width: Rectangle width
- * @param Height: Rectangle height
- */
-void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- uint32_t Xaddress = 0;
-
- /* Set the text color */
- BSP_LCD_SetTextColor(DrawProp[ActiveLayer].TextColor);
-
- /* Get the rectangle start address */
- Xaddress = (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos);
-
- /* Fill the rectangle */
- LL_FillBuffer(ActiveLayer, (uint32_t *)Xaddress, Width, Height, (BSP_LCD_GetXSize() - Width), DrawProp[ActiveLayer].TextColor);
-}
-
-/**
- * @brief Draws a full circle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Radius: Circle radius
- */
-void BSP_LCD_FillCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
-{
- int32_t D; /* Decision Variable */
- uint32_t CurX; /* Current X Value */
- uint32_t CurY; /* Current Y Value */
-
- D = 3 - (Radius << 1);
-
- CurX = 0;
- CurY = Radius;
-
- BSP_LCD_SetTextColor(DrawProp[ActiveLayer].TextColor);
-
- while (CurX <= CurY)
- {
- if(CurY > 0)
- {
- BSP_LCD_DrawHLine(Xpos - CurY, Ypos + CurX, 2*CurY);
- BSP_LCD_DrawHLine(Xpos - CurY, Ypos - CurX, 2*CurY);
- }
-
- if(CurX > 0)
- {
- BSP_LCD_DrawHLine(Xpos - CurX, Ypos - CurY, 2*CurX);
- BSP_LCD_DrawHLine(Xpos - CurX, Ypos + CurY, 2*CurX);
- }
- if (D < 0)
- {
- D += (CurX << 2) + 6;
- }
- else
- {
- D += ((CurX - CurY) << 2) + 10;
- CurY--;
- }
- CurX++;
- }
-
- BSP_LCD_SetTextColor(DrawProp[ActiveLayer].TextColor);
- BSP_LCD_DrawCircle(Xpos, Ypos, Radius);
-}
-
-/**
- * @brief Draws a full poly-line (between many points).
- * @param Points: Pointer to the points array
- * @param PointCount: Number of points
- */
-void BSP_LCD_FillPolygon(pPoint Points, uint16_t PointCount)
-{
- int16_t X = 0, Y = 0, X2 = 0, Y2 = 0, X_center = 0, Y_center = 0, X_first = 0, Y_first = 0, pixelX = 0, pixelY = 0, counter = 0;
- uint16_t IMAGE_LEFT = 0, IMAGE_RIGHT = 0, IMAGE_TOP = 0, IMAGE_BOTTOM = 0;
-
- IMAGE_LEFT = IMAGE_RIGHT = Points->X;
- IMAGE_TOP= IMAGE_BOTTOM = Points->Y;
-
- for(counter = 1; counter < PointCount; counter++)
- {
- pixelX = POLY_X(counter);
- if(pixelX < IMAGE_LEFT)
- {
- IMAGE_LEFT = pixelX;
- }
- if(pixelX > IMAGE_RIGHT)
- {
- IMAGE_RIGHT = pixelX;
- }
-
- pixelY = POLY_Y(counter);
- if(pixelY < IMAGE_TOP)
- {
- IMAGE_TOP = pixelY;
- }
- if(pixelY > IMAGE_BOTTOM)
- {
- IMAGE_BOTTOM = pixelY;
- }
- }
-
- if(PointCount < 2)
- {
- return;
- }
-
- X_center = (IMAGE_LEFT + IMAGE_RIGHT)/2;
- Y_center = (IMAGE_BOTTOM + IMAGE_TOP)/2;
-
- X_first = Points->X;
- Y_first = Points->Y;
-
- while(--PointCount)
- {
- X = Points->X;
- Y = Points->Y;
- Points++;
- X2 = Points->X;
- Y2 = Points->Y;
-
- FillTriangle(X, X2, X_center, Y, Y2, Y_center);
- FillTriangle(X, X_center, X2, Y, Y_center, Y2);
- FillTriangle(X_center, X2, X, Y_center, Y2, Y);
- }
-
- FillTriangle(X_first, X2, X_center, Y_first, Y2, Y_center);
- FillTriangle(X_first, X_center, X2, Y_first, Y_center, Y2);
- FillTriangle(X_center, X2, X_first, Y_center, Y2, Y_first);
-}
-
-/**
- * @brief Draws a full ellipse.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param XRadius: Ellipse X radius
- * @param YRadius: Ellipse Y radius
- */
-void BSP_LCD_FillEllipse(int Xpos, int Ypos, int XRadius, int YRadius)
-{
- int x = 0, y = -YRadius, err = 2-2*XRadius, e2;
- float K = 0, rad1 = 0, rad2 = 0;
-
- rad1 = XRadius;
- rad2 = YRadius;
-
- K = (float)(rad2/rad1);
-
- do
- {
- BSP_LCD_DrawHLine((Xpos-(uint16_t)(x/K)), (Ypos+y), (2*(uint16_t)(x/K) + 1));
- BSP_LCD_DrawHLine((Xpos-(uint16_t)(x/K)), (Ypos-y), (2*(uint16_t)(x/K) + 1));
-
- e2 = err;
- if (e2 <= x)
- {
- err += ++x*2+1;
- if (-y == x && e2 <= y) e2 = 0;
- }
- if (e2 > y) err += ++y*2+1;
- }
- while (y <= 0);
-}
-
-/**
- * @brief Enables the display.
- */
-void BSP_LCD_DisplayOn(void)
-{
- /* Display On */
- __HAL_LTDC_ENABLE(&hltdc_eval);
-}
-
-/**
- * @brief Disables the display.
- */
-void BSP_LCD_DisplayOff(void)
-{
- /* Display Off */
- __HAL_LTDC_DISABLE(&hltdc_eval);
-}
-
-/*******************************************************************************
- LTDC and DMA2D BSP Routines
-*******************************************************************************/
-
-/**
- * @brief Initializes the LTDC MSP.
- */
-static void MspInit(void)
-{
- GPIO_InitTypeDef GPIO_Init_Structure;
-
- /* Enable the LTDC and DMA2D clocks */
- __HAL_RCC_LTDC_CLK_ENABLE();
- __HAL_RCC_DMA2D_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOI_CLK_ENABLE();
- __HAL_RCC_GPIOJ_CLK_ENABLE();
- __HAL_RCC_GPIOK_CLK_ENABLE();
-
- /*** LTDC Pins configuration ***/
- /* GPIOI configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_NOPULL;
- GPIO_Init_Structure.Speed = GPIO_SPEED_FAST;
- GPIO_Init_Structure.Alternate = GPIO_AF14_LTDC;
- HAL_GPIO_Init(GPIOI, &GPIO_Init_Structure);
-
- /* GPIOJ configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | \
- GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | \
- GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | \
- GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_NOPULL;
- GPIO_Init_Structure.Speed = GPIO_SPEED_FAST;
- GPIO_Init_Structure.Alternate = GPIO_AF14_LTDC;
- HAL_GPIO_Init(GPIOJ, &GPIO_Init_Structure);
-
- /* GPIOK configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | \
- GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_NOPULL;
- GPIO_Init_Structure.Speed = GPIO_SPEED_FAST;
- GPIO_Init_Structure.Alternate = GPIO_AF14_LTDC;
- HAL_GPIO_Init(GPIOK, &GPIO_Init_Structure);
-}
-
-/**
- * @brief Clock Config.
- * @param hltdc: LTDC handle
- * @param Params: LTDC pixel clock
- * @note This API is called by BSP_LCD_Init()
- * Being __weak it can be overwritten by the application
- */
-__weak void BSP_LCD_ClockConfig(LTDC_HandleTypeDef *hltdc, void *Params)
-{
- static RCC_PeriphCLKInitTypeDef periph_clk_init_struct;
-
- if(stmpe811_ts_drv.ReadID(TS_I2C_ADDRESS) == STMPE811_ID)
- {
- /* AMPIRE480272 LCD clock configuration */
- /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN = 192 Mhz */
- /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAIR = 192/5 = 38.4 Mhz */
- /* LTDC clock frequency = PLLLCDCLK / LTDC_PLLSAI_DIVR_4 = 38.4/4 = 9.6Mhz */
- periph_clk_init_struct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
- periph_clk_init_struct.PLLSAI.PLLSAIN = 192;
- periph_clk_init_struct.PLLSAI.PLLSAIR = AMPIRE480272_FREQUENCY_DIVIDER;
- periph_clk_init_struct.PLLSAIDivR = RCC_PLLSAIDIVR_4;
- HAL_RCCEx_PeriphCLKConfig(&periph_clk_init_struct);
- }
- else
- {
- /* The programmed LTDC pixel clock depends on the vertical refresh rate of the panel 60Hz => 25.16MHz and
- the LCD/SDRAM bandwidth affected by the several access on the bus and the number of used layers.
- */
- if(*(uint32_t *)Params == LCD_MAX_PCLK)
- {
- /* In case of single layer the bandwidth is around 160MBytesPerSec ==> theoretical PCLK of 40MHz */
- /* AMPIRE640480 typical PCLK is 25.16 MHz so the PLLSAI is configured to provide this clock */
- /* AMPIRE640480 LCD clock configuration */
- /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN = 151 Mhz */
- /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAIR = 151/3 = 50.3 Mhz */
- /* LTDC clock frequency = PLLLCDCLK / LTDC_PLLSAI_DIVR_2 = 50.3/2 = 25.16 Mhz */
- periph_clk_init_struct.PLLSAI.PLLSAIN = 151;
- }
- else
- {
- /* In case of double layers the bandwidth is around 72MBytesPerSec => 18MHz (<25,16MHz) */
- /* so the PLLSAI is configured to provide this clock */
- /* AMPIRE640480 LCD clock configuration */
- /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
- /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN = 108 Mhz */
- /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAIR = 108/3 = 36 Mhz */
- /* LTDC clock frequency = PLLLCDCLK / LTDC_PLLSAI_DIVR_2 = 36/2 = 18 Mhz */
- periph_clk_init_struct.PLLSAI.PLLSAIN = 108;
- }
- periph_clk_init_struct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
- periph_clk_init_struct.PLLSAI.PLLSAIR = 3;
- periph_clk_init_struct.PLLSAIDivR = RCC_PLLSAIDIVR_2;
- HAL_RCCEx_PeriphCLKConfig(&periph_clk_init_struct);
- }
-}
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Draws a pixel on LCD.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param RGB_Code: Pixel color in ARGB mode (8-8-8-8)
- */
-void BSP_LCD_DrawPixel(uint16_t Xpos, uint16_t Ypos, uint32_t RGB_Code)
-{
- /* Write data value to all SDRAM memory */
- *(__IO uint32_t*) (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress + (4*(Ypos*BSP_LCD_GetXSize() + Xpos))) = RGB_Code;
-}
-
-/**
- * @brief Draws a character on LCD.
- * @param Xpos: Line where to display the character shape
- * @param Ypos: Start column address
- * @param c: Pointer to the character data
- */
-static void DrawChar(uint16_t Xpos, uint16_t Ypos, const uint8_t *c)
-{
- uint32_t i = 0, j = 0;
- uint16_t height, width;
- uint8_t offset;
- uint8_t *pchar;
- uint32_t line;
-
- height = DrawProp[ActiveLayer].pFont->Height;
- width = DrawProp[ActiveLayer].pFont->Width;
-
- offset = 8 *((width + 7)/8) - width ;
-
- for(i = 0; i < height; i++)
- {
- pchar = ((uint8_t *)c + (width + 7)/8 * i);
-
- switch(((width + 7)/8))
- {
-
- case 1:
- line = pchar[0];
- break;
-
- case 2:
- line = (pchar[0]<< 8) | pchar[1];
- break;
-
- case 3:
- default:
- line = (pchar[0]<< 16) | (pchar[1]<< 8) | pchar[2];
- break;
- }
-
- for (j = 0; j < width; j++)
- {
- if(line & (1 << (width- j + offset- 1)))
- {
- BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp[ActiveLayer].TextColor);
- }
- else
- {
- BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp[ActiveLayer].BackColor);
- }
- }
- Ypos++;
- }
-}
-
-/**
- * @brief Fills a triangle (between 3 points).
- * @param x1: Point 1 X position
- * @param y1: Point 1 Y position
- * @param x2: Point 2 X position
- * @param y2: Point 2 Y position
- * @param x3: Point 3 X position
- * @param y3: Point 3 Y position
- */
-static void FillTriangle(uint16_t x1, uint16_t x2, uint16_t x3, uint16_t y1, uint16_t y2, uint16_t y3)
-{
- int16_t deltax = 0, deltay = 0, x = 0, y = 0, xinc1 = 0, xinc2 = 0,
- yinc1 = 0, yinc2 = 0, den = 0, num = 0, numadd = 0, numpixels = 0,
- curpixel = 0;
-
- deltax = ABS(x2 - x1); /* The difference between the x's */
- deltay = ABS(y2 - y1); /* The difference between the y's */
- x = x1; /* Start x off at the first pixel */
- y = y1; /* Start y off at the first pixel */
-
- if (x2 >= x1) /* The x-values are increasing */
- {
- xinc1 = 1;
- xinc2 = 1;
- }
- else /* The x-values are decreasing */
- {
- xinc1 = -1;
- xinc2 = -1;
- }
-
- if (y2 >= y1) /* The y-values are increasing */
- {
- yinc1 = 1;
- yinc2 = 1;
- }
- else /* The y-values are decreasing */
- {
- yinc1 = -1;
- yinc2 = -1;
- }
-
- if (deltax >= deltay) /* There is at least one x-value for every y-value */
- {
- xinc1 = 0; /* Don't change the x when numerator >= denominator */
- yinc2 = 0; /* Don't change the y for every iteration */
- den = deltax;
- num = deltax / 2;
- numadd = deltay;
- numpixels = deltax; /* There are more x-values than y-values */
- }
- else /* There is at least one y-value for every x-value */
- {
- xinc2 = 0; /* Don't change the x for every iteration */
- yinc1 = 0; /* Don't change the y when numerator >= denominator */
- den = deltay;
- num = deltay / 2;
- numadd = deltax;
- numpixels = deltay; /* There are more y-values than x-values */
- }
-
- for (curpixel = 0; curpixel <= numpixels; curpixel++)
- {
- BSP_LCD_DrawLine(x, y, x3, y3);
-
- num += numadd; /* Increase the numerator by the top of the fraction */
- if (num >= den) /* Check if numerator >= denominator */
- {
- num -= den; /* Calculate the new numerator value */
- x += xinc1; /* Change the x as appropriate */
- y += yinc1; /* Change the y as appropriate */
- }
- x += xinc2; /* Change the x as appropriate */
- y += yinc2; /* Change the y as appropriate */
- }
-}
-
-/**
- * @brief Fills a buffer.
- * @param LayerIndex: Layer index
- * @param pDst: Pointer to destination buffer
- * @param xSize: Buffer width
- * @param ySize: Buffer height
- * @param OffLine: Offset
- * @param ColorIndex: Color index
- */
-static void LL_FillBuffer(uint32_t LayerIndex, void *pDst, uint32_t xSize, uint32_t ySize, uint32_t OffLine, uint32_t ColorIndex)
-{
- /* Register to memory mode with ARGB8888 as color Mode */
- hdma2d_eval.Init.Mode = DMA2D_R2M;
- hdma2d_eval.Init.ColorMode = DMA2D_ARGB8888;
- hdma2d_eval.Init.OutputOffset = OffLine;
-
- hdma2d_eval.Instance = DMA2D;
-
- /* DMA2D Initialization */
- if(HAL_DMA2D_Init(&hdma2d_eval) == HAL_OK)
- {
- if(HAL_DMA2D_ConfigLayer(&hdma2d_eval, LayerIndex) == HAL_OK)
- {
- if (HAL_DMA2D_Start(&hdma2d_eval, ColorIndex, (uint32_t)pDst, xSize, ySize) == HAL_OK)
- {
- /* Polling For DMA transfer */
- HAL_DMA2D_PollForTransfer(&hdma2d_eval, 10);
- }
- }
- }
-}
-
-/**
- * @brief Converts a line to an ARGB8888 pixel format.
- * @param pSrc: Pointer to source buffer
- * @param pDst: Output color
- * @param xSize: Buffer width
- * @param ColorMode: Input color mode
- */
-static void LL_ConvertLineToARGB8888(void *pSrc, void *pDst, uint32_t xSize, uint32_t ColorMode)
-{
- /* Configure the DMA2D Mode, Color Mode and output offset */
- hdma2d_eval.Init.Mode = DMA2D_M2M_PFC;
- hdma2d_eval.Init.ColorMode = DMA2D_ARGB8888;
- hdma2d_eval.Init.OutputOffset = 0;
-
- /* Foreground Configuration */
- hdma2d_eval.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
- hdma2d_eval.LayerCfg[1].InputAlpha = 0xFF;
- hdma2d_eval.LayerCfg[1].InputColorMode = ColorMode;
- hdma2d_eval.LayerCfg[1].InputOffset = 0;
-
- hdma2d_eval.Instance = DMA2D;
-
- /* DMA2D Initialization */
- if(HAL_DMA2D_Init(&hdma2d_eval) == HAL_OK)
- {
- if(HAL_DMA2D_ConfigLayer(&hdma2d_eval, 1) == HAL_OK)
- {
- if (HAL_DMA2D_Start(&hdma2d_eval, (uint32_t)pSrc, (uint32_t)pDst, xSize, 1) == HAL_OK)
- {
- /* Polling For DMA transfer */
- HAL_DMA2D_PollForTransfer(&hdma2d_eval, 10);
- }
- }
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_lcd.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_lcd.h
deleted file mode 100644
index c21f5b47a6..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_lcd.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_lcd.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324x9i_eval_lcd.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324x9I_EVAL_LCD_H
-#define __STM324x9I_EVAL_LCD_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-/* Include LCD component Driver */
-/* LCD integrated within MB1063 */
-#include "../Components/ampire640480/ampire640480.h"
-/* LCD integrated within MB1046 */
-#include "../Components/ampire480272/ampire480272.h"
-
-/* Include IOExpander(STMPE811) component Driver */
-#include "../Components/stmpe811/stmpe811.h"
-
-/* Include SDRAM Driver */
-#include "stm324x9i_eval_sdram.h"
-
-#include "stm324x9i_eval.h"
-#include "../../../Utilities/Fonts/fonts.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_LCD
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_LCD_Exported_Types STM324x9I EVAL LCD Exported Types
- * @{
- */
-typedef struct
-{
- uint32_t TextColor;
- uint32_t BackColor;
- sFONT *pFont;
-}LCD_DrawPropTypeDef;
-
-typedef struct
-{
- int16_t X;
- int16_t Y;
-}Point, * pPoint;
-
-/**
- * @brief Line mode structures definition
- */
-typedef enum
-{
- CENTER_MODE = 0x01, /* Center mode */
- RIGHT_MODE = 0x02, /* Right mode */
- LEFT_MODE = 0x03 /* Left mode */
-}Text_AlignModeTypdef;
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LCD_Exported_Constants STM324x9I EVAL LCD Exported Constants
- * @{
- */
-#define MAX_LAYER_NUMBER 2
-
-#define LCD_LayerCfgTypeDef LTDC_LayerCfgTypeDef
-
-/**
- * @brief LCD status structure definition
- */
-#define LCD_OK 0x00
-#define LCD_ERROR 0x01
-#define LCD_TIMEOUT 0x02
-
-/**
- * @brief LCD FB_StartAddress
- */
-#define LCD_FB_START_ADDRESS ((uint32_t)0xC0000000)
-
-/* The programmed LTDC pixel clock depends on the vertical refresh rate of the panel 60Hz => 25.16MHz and
- the LCD/SDRAM bandwidth affected by the several access on the bus and the number of used layers.
- when only one layer is enabled "LCD_MAX_PCLK" can be used and when two layers are enabled simultaneously
- or/and there is several access on the bus "LCD_MIN_PCLK" parameter is recommended */
-#define LCD_MAX_PCLK ((uint8_t)0x00)
-#define LCD_MIN_PCLK ((uint8_t)0x01)
-
-/**
- * @brief LCD color
- */
-#define LCD_COLOR_BLUE 0xFF0000FF
-#define LCD_COLOR_GREEN 0xFF00FF00
-#define LCD_COLOR_RED 0xFFFF0000
-#define LCD_COLOR_CYAN 0xFF00FFFF
-#define LCD_COLOR_MAGENTA 0xFFFF00FF
-#define LCD_COLOR_YELLOW 0xFFFFFF00
-#define LCD_COLOR_LIGHTBLUE 0xFF8080FF
-#define LCD_COLOR_LIGHTGREEN 0xFF80FF80
-#define LCD_COLOR_LIGHTRED 0xFFFF8080
-#define LCD_COLOR_LIGHTCYAN 0xFF80FFFF
-#define LCD_COLOR_LIGHTMAGENTA 0xFFFF80FF
-#define LCD_COLOR_LIGHTYELLOW 0xFFFFFF80
-#define LCD_COLOR_DARKBLUE 0xFF000080
-#define LCD_COLOR_DARKGREEN 0xFF008000
-#define LCD_COLOR_DARKRED 0xFF800000
-#define LCD_COLOR_DARKCYAN 0xFF008080
-#define LCD_COLOR_DARKMAGENTA 0xFF800080
-#define LCD_COLOR_DARKYELLOW 0xFF808000
-#define LCD_COLOR_WHITE 0xFFFFFFFF
-#define LCD_COLOR_LIGHTGRAY 0xFFD3D3D3
-#define LCD_COLOR_GRAY 0xFF808080
-#define LCD_COLOR_DARKGRAY 0xFF404040
-#define LCD_COLOR_BLACK 0xFF000000
-#define LCD_COLOR_BROWN 0xFFA52A2A
-#define LCD_COLOR_ORANGE 0xFFFFA500
-#define LCD_COLOR_TRANSPARENT 0xFF000000
-
-/**
- * @brief LCD default font
- */
-#define LCD_DEFAULT_FONT Font24
-
-/**
- * @brief LCD Reload Types
- */
-#define LCD_RELOAD_IMMEDIATE ((uint32_t)LTDC_SRCR_IMR)
-#define LCD_RELOAD_VERTICAL_BLANKING ((uint32_t)LTDC_SRCR_VBR)
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_LCD_Exported_Functions STM324x9I EVAL LCD Exported Functions
- * @{
- */
-uint8_t BSP_LCD_Init(void);
-uint8_t BSP_LCD_InitEx(uint32_t PclkConfig);
-
-uint32_t BSP_LCD_GetXSize(void);
-uint32_t BSP_LCD_GetYSize(void);
-
-/* Functions using the LTDC controller */
-void BSP_LCD_LayerDefaultInit(uint16_t LayerIndex, uint32_t FrameBuffer);
-void BSP_LCD_SetTransparency(uint32_t LayerIndex, uint8_t Transparency);
-void BSP_LCD_SetTransparency_NoReload(uint32_t LayerIndex, uint8_t Transparency);
-void BSP_LCD_SetLayerAddress(uint32_t LayerIndex, uint32_t Address);
-void BSP_LCD_SetLayerAddress_NoReload(uint32_t LayerIndex, uint32_t Address);
-void BSP_LCD_SetColorKeying(uint32_t LayerIndex, uint32_t RGBValue);
-void BSP_LCD_SetColorKeying_NoReload(uint32_t LayerIndex, uint32_t RGBValue);
-void BSP_LCD_ResetColorKeying(uint32_t LayerIndex);
-void BSP_LCD_ResetColorKeying_NoReload(uint32_t LayerIndex);
-void BSP_LCD_SetLayerWindow(uint16_t LayerIndex, uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-void BSP_LCD_SetLayerWindow_NoReload(uint16_t LayerIndex, uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-void BSP_LCD_SelectLayer(uint32_t LayerIndex);
-void BSP_LCD_SetLayerVisible(uint32_t LayerIndex, FunctionalState State);
-void BSP_LCD_SetLayerVisible_NoReload(uint32_t LayerIndex, FunctionalState State);
-void BSP_LCD_Relaod(uint32_t ReloadType);
-
-void BSP_LCD_SetTextColor(uint32_t Color);
-uint32_t BSP_LCD_GetTextColor(void);
-void BSP_LCD_SetBackColor(uint32_t Color);
-uint32_t BSP_LCD_GetBackColor(void);
-void BSP_LCD_SetFont(sFONT *fonts);
-sFONT *BSP_LCD_GetFont(void);
-
-uint32_t BSP_LCD_ReadPixel(uint16_t Xpos, uint16_t Ypos);
-void BSP_LCD_DrawPixel(uint16_t Xpos, uint16_t Ypos, uint32_t pixel);
-void BSP_LCD_Clear(uint32_t Color);
-void BSP_LCD_ClearStringLine(uint32_t Line);
-void BSP_LCD_DisplayStringAtLine(uint16_t Line, uint8_t *ptr);
-void BSP_LCD_DisplayStringAt(uint16_t Xpos, uint16_t Ypos, uint8_t *Text, Text_AlignModeTypdef Mode);
-void BSP_LCD_DisplayChar(uint16_t Xpos, uint16_t Ypos, uint8_t Ascii);
-
-void BSP_LCD_DrawHLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length);
-void BSP_LCD_DrawVLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length);
-void BSP_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
-void BSP_LCD_DrawRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius);
-void BSP_LCD_DrawPolygon(pPoint Points, uint16_t PointCount);
-void BSP_LCD_DrawEllipse(int Xpos, int Ypos, int XRadius, int YRadius);
-void BSP_LCD_DrawBitmap(uint32_t Xpos, uint32_t Ypos, uint8_t *pbmp);
-
-void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-void BSP_LCD_FillCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius);
-void BSP_LCD_FillPolygon(pPoint Points, uint16_t PointCount);
-void BSP_LCD_FillEllipse(int Xpos, int Ypos, int XRadius, int YRadius);
-
-void BSP_LCD_DisplayOff(void);
-void BSP_LCD_DisplayOn(void);
-
-void BSP_LCD_ClockConfig(LTDC_HandleTypeDef *hltdc, void *Params);
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_LCD_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_nor.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_nor.c
deleted file mode 100644
index 1534de9ad6..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_nor.c
+++ /dev/null
@@ -1,342 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_nor.c
- * @author MCD Application Team
- * @brief This file includes a standard driver for the M29W256GL70ZA6E NOR flash memory
- * device mounted on STM324x9I-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the M29W128GL NOR flash external memory mounted
- on STM324x9I-EVAL evaluation board.
- - This driver does not need a specific component driver for the NOR device
- to be included with.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the NOR external memory using the BSP_NOR_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- FMC controller configuration to interface with the external NOR memory.
-
- + NOR flash operations
- o NOR external memory can be accessed with read/write operations once it is
- initialized.
- Read/write operation can be performed with AHB access using the functions
- BSP_NOR_ReadData()/BSP_NOR_WriteData(). The BSP_NOR_WriteData() performs write operation
- of an amount of data by unit (halfword). You can also perform a program data
- operation of an amount of data using the function BSP_NOR_ProgramData().
- o The function BSP_NOR_Read_ID() returns the chip IDs stored in the structure
- "NOR_IDTypeDef". (see the NOR IDs in the memory data sheet)
- o Perform erase block operation using the function BSP_NOR_Erase_Block() and by
- specifying the block address. You can perform an erase operation of the whole
- chip by calling the function BSP_NOR_Erase_Chip().
- o After other operations, the function BSP_NOR_ReturnToReadMode() allows the NOR
- flash to return to read mode to perform read operations on it.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_nor.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_NOR STM324x9I EVAL NOR
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_NOR_Private_Variables STM324x9I EVAL NOR Private Variables
- * @{
- */
-static NOR_HandleTypeDef norHandle;
-static FMC_NORSRAM_TimingTypeDef Timing;
-
-/**
- * @}
- */
-
-/**
- * @brief Initializes the NOR device.
- * @retval NOR memory status
- */
-uint8_t BSP_NOR_Init(void)
-{
- norHandle.Instance = FMC_NORSRAM_DEVICE;
- norHandle.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
-
- /* NOR device configuration */
- Timing.AddressSetupTime = 4;
- Timing.AddressHoldTime = 3;
- Timing.DataSetupTime = 7;
- Timing.BusTurnAroundDuration = 1;
- Timing.CLKDivision = 2;
- Timing.DataLatency = 2;
- Timing.AccessMode = FMC_ACCESS_MODE_A;
-
- norHandle.Init.NSBank = FMC_NORSRAM_BANK1;
- norHandle.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
- norHandle.Init.MemoryType = FMC_MEMORY_TYPE_NOR;
- norHandle.Init.MemoryDataWidth = NOR_MEMORY_WIDTH;
- norHandle.Init.BurstAccessMode = NOR_BURSTACCESS;
- norHandle.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
- norHandle.Init.WrapMode = FMC_WRAP_MODE_DISABLE;
- norHandle.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
- norHandle.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
- norHandle.Init.WaitSignal = FMC_WAIT_SIGNAL_ENABLE;
- norHandle.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
- norHandle.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_ENABLE;
- norHandle.Init.WriteBurst = NOR_WRITEBURST;
- norHandle.Init.ContinuousClock = CONTINUOUSCLOCK_FEATURE;
-
- /* NOR controller initialization */
- BSP_NOR_MspInit();
-
- if(HAL_NOR_Init(&norHandle, &Timing, &Timing) != HAL_OK)
- {
- return NOR_STATUS_ERROR;
- }
- else
- {
- return NOR_STATUS_OK;
- }
-}
-
-/**
- * @brief Reads an amount of data from the NOR device.
- * @param uwStartAddress: Read start address
- * @param pData: Pointer to data to be read
- * @param uwDataSize: Size of data to read
- * @retval NOR memory status
- */
-uint8_t BSP_NOR_ReadData(uint32_t uwStartAddress, uint16_t* pData, uint32_t uwDataSize)
-{
- if(HAL_NOR_ReadBuffer(&norHandle, NOR_DEVICE_ADDR + uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return NOR_STATUS_ERROR;
- }
- else
- {
- return NOR_STATUS_OK;
- }
-}
-
-/**
- * @brief Returns the NOR memory to read mode.
- */
-void BSP_NOR_ReturnToReadMode(void)
-{
- HAL_NOR_ReturnToReadMode(&norHandle);
-}
-
-/**
- * @brief Writes an amount of data to the NOR device.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of data to write
- * @retval NOR memory status
- */
-uint8_t BSP_NOR_WriteData(uint32_t uwStartAddress, uint16_t* pData, uint32_t uwDataSize)
-{
- uint32_t index = uwDataSize;
-
- while(index > 0)
- {
- /* Write data to NOR */
- HAL_NOR_Program(&norHandle, (uint32_t *)(NOR_DEVICE_ADDR + uwStartAddress), pData);
-
- /* Read NOR device status */
- if(HAL_NOR_GetStatus(&norHandle, NOR_DEVICE_ADDR, PROGRAM_TIMEOUT) != NOR_SUCCESS)
- {
- return NOR_STATUS_ERROR;
- }
-
- /* Update the counters */
- index--;
- uwStartAddress += 2;
- pData++;
- }
-
- return NOR_STATUS_OK;
-}
-
-/**
- * @brief Programs an amount of data to the NOR device.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of data to write
- * @retval NOR memory status
- */
-uint8_t BSP_NOR_ProgramData(uint32_t uwStartAddress, uint16_t* pData, uint32_t uwDataSize)
-{
- /* Send NOR program buffer operation */
- HAL_NOR_ProgramBuffer(&norHandle, uwStartAddress, pData, uwDataSize);
-
- /* Return the NOR memory status */
- if(HAL_NOR_GetStatus(&norHandle, NOR_DEVICE_ADDR, PROGRAM_TIMEOUT) != NOR_SUCCESS)
- {
- return NOR_STATUS_ERROR;
- }
- else
- {
- return NOR_STATUS_OK;
- }
-}
-
-/**
- * @brief Erases the specified block of the NOR device.
- * @param BlockAddress: Block address to erase
- * @retval NOR memory status
- */
-uint8_t BSP_NOR_Erase_Block(uint32_t BlockAddress)
-{
- /* Send NOR erase block operation */
- HAL_NOR_Erase_Block(&norHandle, BlockAddress, NOR_DEVICE_ADDR);
-
- /* Return the NOR memory status */
- if(HAL_NOR_GetStatus(&norHandle, NOR_DEVICE_ADDR, BLOCKERASE_TIMEOUT) != NOR_SUCCESS)
- {
- return NOR_STATUS_ERROR;
- }
- else
- {
- return NOR_STATUS_OK;
- }
-}
-
-/**
- * @brief Erases the entire NOR chip.
- * @retval NOR memory status
- */
-uint8_t BSP_NOR_Erase_Chip(void)
-{
- /* Send NOR Erase chip operation */
- HAL_NOR_Erase_Chip(&norHandle, NOR_DEVICE_ADDR);
-
- /* Return the NOR memory status */
- if(HAL_NOR_GetStatus(&norHandle, NOR_DEVICE_ADDR, CHIPERASE_TIMEOUT) != NOR_SUCCESS)
- {
- return NOR_STATUS_ERROR;
- }
- else
- {
- return NOR_STATUS_OK;
- }
-}
-
-/**
- * @brief Reads NOR flash IDs.
- * @param pNOR_ID : Pointer to NOR ID structure
- * @retval NOR memory status
- */
-uint8_t BSP_NOR_Read_ID(NOR_IDTypeDef *pNOR_ID)
-{
- if(HAL_NOR_Read_ID(&norHandle, pNOR_ID) != HAL_OK)
- {
- return NOR_STATUS_ERROR;
- }
- else
- {
- return NOR_STATUS_OK;
- }
-}
-
-/**
- * @brief Initializes the NOR MSP.
- */
-__weak void BSP_NOR_MspInit(void)
-{
- GPIO_InitTypeDef GPIO_Init_Structure;
-
- /* Enable FMC clock */
- __HAL_RCC_FMC_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
- __HAL_RCC_GPIOF_CLK_ENABLE();
- __HAL_RCC_GPIOG_CLK_ENABLE();
-
- /* Common GPIO configuration */
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF12_FMC;
-
- /* GPIOD configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 |\
- GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |\
- GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
-
- /* GPIOE configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 |\
- GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |\
- GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOE, &GPIO_Init_Structure);
-
- /* GPIOF configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOF, &GPIO_Init_Structure);
-
- /* GPIOG configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5;
- HAL_GPIO_Init(GPIOG, &GPIO_Init_Structure);
-}
-
-/**
- * @brief NOR BSP Wait for Ready/Busy signal.
- * @param hnor: Pointer to NOR handle
- * @param Timeout: Timeout duration
- */
-void HAL_NOR_MspWait(NOR_HandleTypeDef *hnor, uint32_t Timeout)
-{
- uint32_t timeout = Timeout;
-
- /* Polling on Ready/Busy signal */
- while((HAL_GPIO_ReadPin(NOR_READY_BUSY_GPIO, NOR_READY_BUSY_PIN) != NOR_BUSY_STATE) && (timeout > 0))
- {
- timeout--;
- }
-
- timeout = Timeout;
-
- /* Polling on Ready/Busy signal */
- while((HAL_GPIO_ReadPin(NOR_READY_BUSY_GPIO, NOR_READY_BUSY_PIN) != NOR_READY_STATE) && (timeout > 0))
- {
- timeout--;
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_nor.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_nor.h
deleted file mode 100644
index 15e5181632..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_nor.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_nor.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324x9i_eval_nor.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324x9I_EVAL_NOR_H
-#define __STM324x9I_EVAL_NOR_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_NOR
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_NOR_Exported_Constants STM324x9I EVAL NOR Exported Constants
- * @{
- */
-#define NOR_STATUS_OK 0x00
-#define NOR_STATUS_ERROR 0x01
-
-#define NOR_DEVICE_ADDR ((uint32_t)0x60000000)
-
-/* #define NOR_MEMORY_WIDTH FMC_NORSRAM_MEM_BUS_WIDTH_8 */
-#define NOR_MEMORY_WIDTH FMC_NORSRAM_MEM_BUS_WIDTH_16
-
-#define NOR_BURSTACCESS FMC_BURST_ACCESS_MODE_DISABLE
-/* #define NOR_BURSTACCESS FMC_BURST_ACCESS_MODE_ENABLE*/
-
-#define NOR_WRITEBURST FMC_WRITE_BURST_DISABLE
-/* #define NOR_WRITEBURST FMC_WRITE_BURST_ENABLE */
-
-#define CONTINUOUSCLOCK_FEATURE FMC_CONTINUOUS_CLOCK_SYNC_ONLY
-/* #define CONTINUOUSCLOCK_FEATURE FMC_CONTINUOUS_CLOCK_SYNC_ASYNC */
-
-/* NOR operations Timeout definitions */
-#define BLOCKERASE_TIMEOUT ((uint32_t)0x00A00000) /* NOR block erase timeout */
-#define CHIPERASE_TIMEOUT ((uint32_t)0x30000000) /* NOR chip erase timeout */
-#define PROGRAM_TIMEOUT ((uint32_t)0x00004400) /* NOR program timeout */
-
-/* NOR Ready/Busy signal GPIO definitions */
-#define NOR_READY_BUSY_PIN GPIO_PIN_6
-#define NOR_READY_BUSY_GPIO GPIOD
-#define NOR_READY_STATE GPIO_PIN_SET
-#define NOR_BUSY_STATE GPIO_PIN_RESET
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_NOR_Exported_Functions STM324x9I EVAL NOR Exported Functions
- * @{
- */
-uint8_t BSP_NOR_Init(void);
-uint8_t BSP_NOR_ReadData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-uint8_t BSP_NOR_WriteData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-uint8_t BSP_NOR_ProgramData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-uint8_t BSP_NOR_Erase_Block(uint32_t BlockAddress);
-uint8_t BSP_NOR_Erase_Chip(void);
-uint8_t BSP_NOR_Read_ID(NOR_IDTypeDef *pNOR_ID);
-void BSP_NOR_ReturnToReadMode(void);
-void BSP_NOR_MspInit(void);
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_NOR_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sd.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sd.c
deleted file mode 100644
index 3b3401bab2..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sd.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_sd.c
- * @author MCD Application Team
- * @brief This file includes the uSD card driver mounted on STM324x9I-EVAL
- * evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the micro SD external card mounted on STM324x9I-EVAL
- evaluation board.
- - This driver does not need a specific component driver for the micro SD device
- to be included with.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the micro SD card using the BSP_SD_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- SDIO interface configuration to interface with the external micro SD. It
- also includes the micro SD initialization sequence.
- o To check the SD card presence you can use the function BSP_SD_IsDetected() which
- returns the detection status
- o If SD presence detection interrupt mode is desired, you must configure the
- SD detection interrupt mode by calling the function BSP_SD_ITConfig(). The interrupt
- is generated as an external interrupt whenever the micro SD card is
- plugged/unplugged in/from the evaluation board. The SD detection interrupt
- is handled by calling the function BSP_SD_DetectIT() which is called in the IRQ
- handler file, the user callback is implemented in the function BSP_SD_DetectCallback().
- o The function BSP_SD_GetCardInfo() is used to get the micro SD card information
- which is stored in the structure "HAL_SD_CardInfoTypeDef".
-
- + Micro SD card operations
- o The micro SD card can be accessed with read/write block(s) operations once
- it is ready for access. The access can be performed whether using the polling
- mode by calling the functions BSP_SD_ReadBlocks()/BSP_SD_WriteBlocks(), or by DMA
- transfer using the functions BSP_SD_ReadBlocks_DMA()/BSP_SD_WriteBlocks_DMA()
- o The DMA transfer complete is used with interrupt mode. Once the SD transfer
- is complete, the SD interrupt is handled using the function BSP_SD_IRQHandler(),
- the DMA Tx/Rx transfer complete are handled using the functions
- BSP_SD_DMA_Tx_IRQHandler()/BSP_SD_DMA_Rx_IRQHandler(). The corresponding user callbacks
- are implemented by the user at application level.
- o The SD erase block(s) is performed using the function BSP_SD_Erase() with specifying
- the number of blocks to erase.
- o The SD runtime status is returned when calling the function BSP_SD_GetCardState().
-
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_sd.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SD STM324x9I EVAL SD
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SD_Private_Variables SD Private Variables
- * @{
- */
-SD_HandleTypeDef uSdHandle;
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_SD_Private_Functions SD Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the SD card device.
- * @retval SD status
- */
-uint8_t BSP_SD_Init(void)
-{
- uint8_t SD_state = MSD_OK;
-
- /* uSD device interface configuration */
- uSdHandle.Instance = SDIO;
-
- uSdHandle.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
- uSdHandle.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
- uSdHandle.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
- uSdHandle.Init.BusWide = SDIO_BUS_WIDE_1B;
- uSdHandle.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
- uSdHandle.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV;
-
- /* Configure IO functionalities for SD detect pin */
- BSP_IO_Init();
-
- /* Check if the SD card is plugged in the slot */
- if(BSP_SD_IsDetected() != SD_PRESENT)
- {
- return MSD_ERROR;
- }
-
- /* Msp SD initialization */
- BSP_SD_MspInit(&uSdHandle, NULL);
-
- if(HAL_SD_Init(&uSdHandle) != HAL_OK)
- {
- SD_state = MSD_ERROR;
- }
-
- /* Configure SD Bus width */
- if(SD_state == MSD_OK)
- {
- /* Enable wide operation */
- if(HAL_SD_ConfigWideBusOperation(&uSdHandle, SDIO_BUS_WIDE_4B) != HAL_OK)
- {
- SD_state = MSD_ERROR;
- }
- else
- {
- SD_state = MSD_OK;
- }
- }
-
- return SD_state;
-}
-
-/**
- * @brief Configures Interrupt mode for SD detection pin.
- * @retval Returns 0
- */
-uint8_t BSP_SD_ITConfig(void)
-{
- /* Configure Interrupt mode for SD detection pin */
- BSP_IO_ConfigPin(SD_DETECT_PIN, IO_MODE_IT_FALLING_EDGE);
-
- return 0;
-}
-
-/**
- * @brief Detects if SD card is correctly plugged in the memory slot or not.
- * @retval Returns if SD is detected or not
- */
-uint8_t BSP_SD_IsDetected(void)
-{
- __IO uint8_t status = SD_PRESENT;
-
- /* Check SD card detect pin */
- if(BSP_IO_ReadPin(SD_DETECT_PIN))
- {
- status = SD_NOT_PRESENT;
- }
-
- return status;
-}
-
-/** @brief SD detect IT treatment.
- * @retval None
- */
-void BSP_SD_DetectIT(void)
-{
- /* Clear all pending bits */
- BSP_IO_ITClear();
-
- /* To re-enable IT */
- BSP_SD_ITConfig();
-
- /* SD detect IT callback */
- BSP_SD_DetectCallback();
-}
-
-/** @brief SD detect IT detection callback
- * @retval None
- */
-__weak void BSP_SD_DetectCallback(void)
-{
- /* NOTE: This function Should not be modified, when the callback is needed,
- the BSP_SD_DetectCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief Reads block(s) from a specified address in an SD card, in polling mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param ReadAddr: Address from where data is to be read
- * @param NumOfBlocks: Number of SD blocks to read
- * @param Timeout: Timeout for read operation
- * @retval SD status
- */
-uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout)
-{
- if(HAL_SD_ReadBlocks(&uSdHandle, (uint8_t *)pData, ReadAddr, NumOfBlocks, Timeout) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Writes block(s) to a specified address in an SD card, in polling mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param WriteAddr: Address from where data is to be written
- * @param NumOfBlocks: Number of SD blocks to write
- * @param Timeout: Timeout for write operation
- * @retval SD status
- */
-uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout)
-{
- if(HAL_SD_WriteBlocks(&uSdHandle, (uint8_t *)pData, WriteAddr, NumOfBlocks, Timeout) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Reads block(s) from a specified address in an SD card, in DMA mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param ReadAddr: Address from where data is to be read
- * @param NumOfBlocks: Number of SD blocks to read
- * @retval SD status
- */
-uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks)
-{
- /* Read block(s) in DMA transfer mode */
- if(HAL_SD_ReadBlocks_DMA(&uSdHandle, (uint8_t *)pData, ReadAddr, NumOfBlocks) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Writes block(s) to a specified address in an SD card, in DMA mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param WriteAddr: Address from where data is to be written
- * @param NumOfBlocks: Number of SD blocks to write
- * @retval SD status
- */
-uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks)
-{
- /* Write block(s) in DMA transfer mode */
- if(HAL_SD_WriteBlocks_DMA(&uSdHandle, (uint8_t *)pData, WriteAddr, NumOfBlocks) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Erases the specified memory area of the given SD card.
- * @param StartAddr: Start byte address
- * @param EndAddr: End byte address
- * @retval SD status
- */
-uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr)
-{
- if(HAL_SD_Erase(&uSdHandle, StartAddr, EndAddr) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Initializes the SD MSP.
- * @param hsd: SD handle
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_SD_MspInit(SD_HandleTypeDef *hsd, void *Params)
-{
- static DMA_HandleTypeDef dmaRxHandle;
- static DMA_HandleTypeDef dmaTxHandle;
- GPIO_InitTypeDef GPIO_Init_Structure;
-
- /* Enable SDIO clock */
- __HAL_RCC_SDIO_CLK_ENABLE();
-
- /* Enable DMA2 clocks */
- __DMAx_TxRx_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOD_CLK_ENABLE();
-
- /* Common GPIO configuration */
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF12_SDIO;
-
- /* GPIOC configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12;
-
- HAL_GPIO_Init(GPIOC, &GPIO_Init_Structure);
-
- /* GPIOD configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_2;
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
-
- /* NVIC configuration for SDIO interrupts */
- HAL_NVIC_SetPriority(SDIO_IRQn, 0x0E, 0);
- HAL_NVIC_EnableIRQ(SDIO_IRQn);
-
- /* Configure DMA Rx parameters */
- dmaRxHandle.Init.Channel = SD_DMAx_Rx_CHANNEL;
- dmaRxHandle.Init.Direction = DMA_PERIPH_TO_MEMORY;
- dmaRxHandle.Init.PeriphInc = DMA_PINC_DISABLE;
- dmaRxHandle.Init.MemInc = DMA_MINC_ENABLE;
- dmaRxHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- dmaRxHandle.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- dmaRxHandle.Init.Mode = DMA_PFCTRL;
- dmaRxHandle.Init.Priority = DMA_PRIORITY_VERY_HIGH;
- dmaRxHandle.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- dmaRxHandle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dmaRxHandle.Init.MemBurst = DMA_MBURST_INC4;
- dmaRxHandle.Init.PeriphBurst = DMA_PBURST_INC4;
-
- dmaRxHandle.Instance = SD_DMAx_Rx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsd, hdmarx, dmaRxHandle);
-
- /* Deinitialize the stream for new transfer */
- HAL_DMA_DeInit(&dmaRxHandle);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(&dmaRxHandle);
-
- /* Configure DMA Tx parameters */
- dmaTxHandle.Init.Channel = SD_DMAx_Tx_CHANNEL;
- dmaTxHandle.Init.Direction = DMA_MEMORY_TO_PERIPH;
- dmaTxHandle.Init.PeriphInc = DMA_PINC_DISABLE;
- dmaTxHandle.Init.MemInc = DMA_MINC_ENABLE;
- dmaTxHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- dmaTxHandle.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- dmaTxHandle.Init.Mode = DMA_PFCTRL;
- dmaTxHandle.Init.Priority = DMA_PRIORITY_VERY_HIGH;
- dmaTxHandle.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- dmaTxHandle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dmaTxHandle.Init.MemBurst = DMA_MBURST_INC4;
- dmaTxHandle.Init.PeriphBurst = DMA_PBURST_INC4;
-
- dmaTxHandle.Instance = SD_DMAx_Tx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsd, hdmatx, dmaTxHandle);
-
- /* Deinitialize the stream for new transfer */
- HAL_DMA_DeInit(&dmaTxHandle);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(&dmaTxHandle);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SD_DMAx_Rx_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(SD_DMAx_Rx_IRQn);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SD_DMAx_Tx_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(SD_DMAx_Tx_IRQn);
-}
-
-/**
- * @brief Gets the current SD card data status.
- * @retval Data transfer state.
- * This value can be one of the following values:
- * @arg SD_TRANSFER_OK: No data transfer is acting
- * @arg SD_TRANSFER_BUSY: Data transfer is acting
- */
-uint8_t BSP_SD_GetCardState(void)
-{
- return((HAL_SD_GetCardState(&uSdHandle) == HAL_SD_CARD_TRANSFER ) ? SD_TRANSFER_OK : SD_TRANSFER_BUSY);
-}
-
-
-/**
- * @brief Get SD information about specific SD card.
- * @param CardInfo: Pointer to HAL_SD_CardInfoTypedef structure
- * @retval None
- */
-void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo)
-{
- /* Get SD card Information */
- HAL_SD_GetCardInfo(&uSdHandle, CardInfo);
-}
-
-/**
- * @brief SD Abort callbacks
- * @param hsd: SD handle
- * @retval None
- */
-void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd)
-{
- BSP_SD_AbortCallback();
-}
-
-/**
- * @brief Tx Transfer completed callbacks
- * @param hsd: SD handle
- * @retval None
- */
-void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd)
-{
- BSP_SD_WriteCpltCallback();
-}
-
-/**
- * @brief Rx Transfer completed callbacks
- * @param hsd: SD handle
- * @retval None
- */
-void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd)
-{
- BSP_SD_ReadCpltCallback();
-}
-
-/**
- * @brief BSP SD Abort callbacks
- * @retval None
- */
-__weak void BSP_SD_AbortCallback(void)
-{
-
-}
-
-/**
- * @brief BSP Tx Transfer completed callbacks
- * @retval None
- */
-__weak void BSP_SD_WriteCpltCallback(void)
-{
-
-}
-
-/**
- * @brief BSP Rx Transfer completed callbacks
- * @retval None
- */
-__weak void BSP_SD_ReadCpltCallback(void)
-{
-
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sd.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sd.h
deleted file mode 100644
index b655973133..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sd.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_sd.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324x9i_eval_sd.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324x9I_EVAL_SD_H
-#define __STM324x9I_EVAL_SD_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-#include "stm324x9i_eval_io.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_SD
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SD_Exported_Types STM324x9I EVAL SD Exported Types
- * @{
- */
-
-/**
- * @brief SD Card information structure
- */
-#define BSP_SD_CardInfo HAL_SD_CardInfoTypeDef
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_SD_Exported_Constants STM324x9I EVAL SD Exported Constants
- * @{
- */
-/**
- * @brief SD status structure definition
- */
-#define MSD_OK 0x00
-#define MSD_ERROR 0x01
-
-/**
- * @brief SD transfer state definition
- */
-#define SD_TRANSFER_OK ((uint8_t)0x00)
-#define SD_TRANSFER_BUSY ((uint8_t)0x01)
-
-
-#define SD_PRESENT ((uint8_t)0x01)
-#define SD_NOT_PRESENT ((uint8_t)0x00)
-
-#define SD_DATATIMEOUT ((uint32_t)100000000)
-
-/* DMA definitions for SD DMA transfer */
-#define __DMAx_TxRx_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
-#define SD_DMAx_Tx_CHANNEL DMA_CHANNEL_4
-#define SD_DMAx_Rx_CHANNEL DMA_CHANNEL_4
-#define SD_DMAx_Tx_STREAM DMA2_Stream6
-#define SD_DMAx_Rx_STREAM DMA2_Stream3
-#define SD_DMAx_Tx_IRQn DMA2_Stream6_IRQn
-#define SD_DMAx_Rx_IRQn DMA2_Stream3_IRQn
-#define BSP_SD_IRQHandler SDIO_IRQHandler
-#define BSP_SD_DMA_Tx_IRQHandler DMA2_Stream6_IRQHandler
-#define BSP_SD_DMA_Rx_IRQHandler DMA2_Stream3_IRQHandler
-#define SD_DetectIRQHandler() HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8)
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_SD_Exported_Functions STM324x9I EVAL SD Exported Functions
- * @{
- */
-uint8_t BSP_SD_Init(void);
-uint8_t BSP_SD_DeInit(void);
-uint8_t BSP_SD_ITConfig(void);
-void BSP_SD_DetectIT(void);
-void BSP_SD_DetectCallback(void);
-uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout);
-uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout);
-uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks);
-uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks);
-uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr);
-uint8_t BSP_SD_GetCardState(void);
-void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo);
-uint8_t BSP_SD_IsDetected(void);
-
-/* These functions can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_SD_MspInit(SD_HandleTypeDef *hsd, void *Params);
-void BSP_SD_Detect_MspInit(SD_HandleTypeDef *hsd, void *Params);
-void BSP_SD_MspDeInit(SD_HandleTypeDef *hsd, void *Params);
-void BSP_SD_AbortCallback(void);
-void BSP_SD_WriteCpltCallback(void);
-void BSP_SD_ReadCpltCallback(void);
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_SD_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sdram.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sdram.c
deleted file mode 100644
index 41cd110104..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sdram.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_sdram.c
- * @author MCD Application Team
- * @brief This file includes the SDRAM driver for the MT48LC4M32B2B5-7 memory
- * device mounted on STM324x9I-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the MT48LC4M32B2B5-7 SDRAM external memory mounted
- on STM324x9I-EVAL evaluation board.
- - This driver does not need a specific component driver for the SDRAM device
- to be included with.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the SDRAM external memory using the BSP_SDRAM_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- FMC controller configuration to interface with the external SDRAM memory.
- o It contains the SDRAM initialization sequence to program the SDRAM external
- device using the function BSP_SDRAM_Initialization_sequence(). Note that this
- sequence is standard for all SDRAM devices, but can include some differences
- from a device to another. If it is the case, the right sequence should be
- implemented separately.
-
- + SDRAM read/write operations
- o SDRAM external memory can be accessed with read/write operations once it is
- initialized.
- Read/write operation can be performed with AHB access using the functions
- BSP_SDRAM_ReadData()/BSP_SDRAM_WriteData(), or by DMA transfer using the functions
- BSP_SDRAM_ReadData_DMA()/BSP_SDRAM_WriteData_DMA().
- o The AHB access is performed with 32-bit width transaction, the DMA transfer
- configuration is fixed at single (no burst) word transfer (see the
- BSP_SDRAM_MspInit() static function).
- o User can implement his own functions for read/write access with his desired
- configurations.
- o If interrupt mode is used for DMA transfer, the function BSP_SDRAM_DMA_IRQHandler()
- is called in IRQ handler file, to serve the generated interrupt once the DMA
- transfer is complete.
- o You can send a command to the SDRAM device in runtime using the function
- BSP_SDRAM_Sendcmd(), and giving the desired command as parameter chosen between
- the predefined commands of the "FMC_SDRAM_CommandTypeDef" structure.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_sdram.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SDRAM STM324x9I EVAL SDRAM
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SDRAM_Private_Variables STM324x9I EVAL SDRAM Private Variables
- * @{
- */
-static SDRAM_HandleTypeDef sdramHandle;
-static FMC_SDRAM_TimingTypeDef Timing;
-static FMC_SDRAM_CommandTypeDef Command;
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_SDRAM_Private_Functions STM324x9I EVAL SDRAM Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the SDRAM device.
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_Init(void)
-{
- static uint8_t sdramstatus = SDRAM_ERROR;
- /* SDRAM device configuration */
- sdramHandle.Instance = FMC_SDRAM_DEVICE;
-
- /* Timing configuration for 90Mhz as SD clock frequency (System clock is up to 180Mhz */
- Timing.LoadToActiveDelay = 2;
- Timing.ExitSelfRefreshDelay = 7;
- Timing.SelfRefreshTime = 4;
- Timing.RowCycleDelay = 7;
- Timing.WriteRecoveryTime = 2;
- Timing.RPDelay = 2;
- Timing.RCDDelay = 2;
-
- sdramHandle.Init.SDBank = FMC_SDRAM_BANK1;
- sdramHandle.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_9;
- sdramHandle.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12;
- sdramHandle.Init.MemoryDataWidth = SDRAM_MEMORY_WIDTH;
- sdramHandle.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4;
- sdramHandle.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3;
- sdramHandle.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE;
- sdramHandle.Init.SDClockPeriod = SDCLOCK_PERIOD;
- sdramHandle.Init.ReadBurst = FMC_SDRAM_RBURST_ENABLE;
- sdramHandle.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_0;
-
- /* SDRAM controller initialization */
- BSP_SDRAM_MspInit();
- if(HAL_SDRAM_Init(&sdramHandle, &Timing) != HAL_OK)
- {
- sdramstatus = SDRAM_ERROR;
- }
- else
- {
- sdramstatus = SDRAM_OK;
- }
-
- /* SDRAM initialization sequence */
- BSP_SDRAM_Initialization_sequence(REFRESH_COUNT);
-
- return sdramstatus;
-}
-
-/**
- * @brief Programs the SDRAM device.
- * @param RefreshCount: SDRAM refresh counter value
- */
-void BSP_SDRAM_Initialization_sequence(uint32_t RefreshCount)
-{
- __IO uint32_t tmpmrd = 0;
-
- /* Step 1: Configure a clock configuration enable command */
- Command.CommandMode = FMC_SDRAM_CMD_CLK_ENABLE;
- Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
- Command.AutoRefreshNumber = 1;
- Command.ModeRegisterDefinition = 0;
-
- /* Send the command */
- HAL_SDRAM_SendCommand(&sdramHandle, &Command, SDRAM_TIMEOUT);
-
- /* Step 2: Insert 100 us minimum delay */
- /* Inserted delay is equal to 1 ms due to systick time base unit (ms) */
- HAL_Delay(1);
-
- /* Step 3: Configure a PALL (precharge all) command */
- Command.CommandMode = FMC_SDRAM_CMD_PALL;
- Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
- Command.AutoRefreshNumber = 1;
- Command.ModeRegisterDefinition = 0;
-
- /* Send the command */
- HAL_SDRAM_SendCommand(&sdramHandle, &Command, SDRAM_TIMEOUT);
-
- /* Step 4: Configure an Auto Refresh command */
- Command.CommandMode = FMC_SDRAM_CMD_AUTOREFRESH_MODE;
- Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
- Command.AutoRefreshNumber = 8;
- Command.ModeRegisterDefinition = 0;
-
- /* Send the command */
- HAL_SDRAM_SendCommand(&sdramHandle, &Command, SDRAM_TIMEOUT);
-
- /* Step 5: Program the external memory mode register */
- tmpmrd = (uint32_t)SDRAM_MODEREG_BURST_LENGTH_1 |\
- SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL |\
- SDRAM_MODEREG_CAS_LATENCY_3 |\
- SDRAM_MODEREG_OPERATING_MODE_STANDARD |\
- SDRAM_MODEREG_WRITEBURST_MODE_SINGLE;
-
- Command.CommandMode = FMC_SDRAM_CMD_LOAD_MODE;
- Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
- Command.AutoRefreshNumber = 1;
- Command.ModeRegisterDefinition = tmpmrd;
-
- /* Send the command */
- HAL_SDRAM_SendCommand(&sdramHandle, &Command, SDRAM_TIMEOUT);
-
- /* Step 6: Set the refresh rate counter */
- /* Set the device refresh rate */
- HAL_SDRAM_ProgramRefreshRate(&sdramHandle, RefreshCount);
-}
-
-/**
- * @brief Reads an mount of data from the SDRAM memory in polling mode.
- * @param uwStartAddress: Read start address
- * @param pData: Pointer to data to be read
- * @param uwDataSize: Size of read data from the memory
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_ReadData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SDRAM_Read_32b(&sdramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Reads an mount of data from the SDRAM memory in DMA mode.
- * @param uwStartAddress: Read start address
- * @param pData: Pointer to data to be read
- * @param uwDataSize: Size of read data from the memory
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_ReadData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SDRAM_Read_DMA(&sdramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Writes an mount of data to the SDRAM memory in polling mode.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of written data from the memory
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_WriteData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SDRAM_Write_32b(&sdramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Writes an mount of data to the SDRAM memory in DMA mode.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of written data from the memory
- * @retval SDRAM status
- */
-uint8_t BSP_SDRAM_WriteData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SDRAM_Write_DMA(&sdramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Sends command to the SDRAM bank.
- * @param SdramCmd: Pointer to SDRAM command structure
- * @retval HAL status
- */
-uint8_t BSP_SDRAM_Sendcmd(FMC_SDRAM_CommandTypeDef *SdramCmd)
-{
- if(HAL_SDRAM_SendCommand(&sdramHandle, SdramCmd, SDRAM_TIMEOUT) != HAL_OK)
- {
- return SDRAM_ERROR;
- }
- else
- {
- return SDRAM_OK;
- }
-}
-
-/**
- * @brief Handles SDRAM DMA transfer interrupt request.
- */
-void BSP_SDRAM_DMA_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(sdramHandle.hdma);
-}
-
-/**
- * @brief Initializes SDRAM MSP.
- */
-__weak void BSP_SDRAM_MspInit(void)
-{
- static DMA_HandleTypeDef dmaHandle;
- GPIO_InitTypeDef GPIO_Init_Structure;
- SDRAM_HandleTypeDef *hsdram = &sdramHandle;
-
- /* Enable FMC clock */
- __HAL_RCC_FMC_CLK_ENABLE();
-
- /* Enable chosen DMAx clock */
- __DMAx_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
- __HAL_RCC_GPIOF_CLK_ENABLE();
- __HAL_RCC_GPIOG_CLK_ENABLE();
- __HAL_RCC_GPIOH_CLK_ENABLE();
- __HAL_RCC_GPIOI_CLK_ENABLE();
-
- /* Common GPIO configuration */
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_FAST;
- GPIO_Init_Structure.Alternate = GPIO_AF12_FMC;
-
- /* GPIOD configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8| GPIO_PIN_9 | GPIO_PIN_10 |\
- GPIO_PIN_14 | GPIO_PIN_15;
-
-
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
-
- /* GPIOE configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_7| GPIO_PIN_8 | GPIO_PIN_9 |\
- GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 |\
- GPIO_PIN_15;
-
- HAL_GPIO_Init(GPIOE, &GPIO_Init_Structure);
-
- /* GPIOF configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 |\
- GPIO_PIN_15;
-
- HAL_GPIO_Init(GPIOF, &GPIO_Init_Structure);
-
- /* GPIOG configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4| GPIO_PIN_5 | GPIO_PIN_8 |\
- GPIO_PIN_15;
- HAL_GPIO_Init(GPIOG, &GPIO_Init_Structure);
-
- /* GPIOH configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_9 |\
- GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 |\
- GPIO_PIN_15;
- HAL_GPIO_Init(GPIOH, &GPIO_Init_Structure);
-
- /* GPIOI configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_9 | GPIO_PIN_10;
- HAL_GPIO_Init(GPIOI, &GPIO_Init_Structure);
-
- /* Configure common DMA parameters */
- dmaHandle.Init.Channel = SDRAM_DMAx_CHANNEL;
- dmaHandle.Init.Direction = DMA_MEMORY_TO_MEMORY;
- dmaHandle.Init.PeriphInc = DMA_PINC_ENABLE;
- dmaHandle.Init.MemInc = DMA_MINC_ENABLE;
- dmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- dmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- dmaHandle.Init.Mode = DMA_NORMAL;
- dmaHandle.Init.Priority = DMA_PRIORITY_HIGH;
- dmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- dmaHandle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dmaHandle.Init.MemBurst = DMA_MBURST_SINGLE;
- dmaHandle.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- dmaHandle.Instance = SDRAM_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsdram, hdma, dmaHandle);
-
- /* Deinitialize the stream for new transfer */
- HAL_DMA_DeInit(&dmaHandle);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(&dmaHandle);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SDRAM_DMAx_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(SDRAM_DMAx_IRQn);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sdram.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sdram.h
deleted file mode 100644
index a8f5898492..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sdram.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_sdram.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324x9i_eval_sdram.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324x9I_EVAL_SDRAM_H
-#define __STM324x9I_EVAL_SDRAM_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_SDRAM
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SDRAM_Exported_Constants STM324x9I EVAL SDRAM Exported Constants
- * @{
- */
-#define SDRAM_OK 0x00
-#define SDRAM_ERROR 0x01
-
-#define SDRAM_DEVICE_ADDR ((uint32_t)0xC0000000)
-#define SDRAM_DEVICE_SIZE ((uint32_t)0x2000000) /* SDRAM device size in Bytes */
-
-/* #define SDRAM_MEMORY_WIDTH FMC_SDRAM_MEM_BUS_WIDTH_8 */
-/* #define SDRAM_MEMORY_WIDTH FMC_SDRAM_MEM_BUS_WIDTH_16 */
-#define SDRAM_MEMORY_WIDTH FMC_SDRAM_MEM_BUS_WIDTH_32
-
-#define SDCLOCK_PERIOD FMC_SDRAM_CLOCK_PERIOD_2
-/* #define SDCLOCK_PERIOD FMC_SDRAM_CLOCK_PERIOD_3 */
-
-#define REFRESH_COUNT ((uint32_t)0x0569) /* SDRAM refresh counter (90Mhz SD clock) */
-
-#define SDRAM_TIMEOUT ((uint32_t)0xFFFF)
-
-/* DMA definitions for SDRAM DMA transfer */
-#define __DMAx_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
-#define SDRAM_DMAx_CHANNEL DMA_CHANNEL_0
-#define SDRAM_DMAx_STREAM DMA2_Stream0
-#define SDRAM_DMAx_IRQn DMA2_Stream0_IRQn
-#define SDRAM_DMAx_IRQHandler DMA2_Stream0_IRQHandler
-
-/**
- * @brief FMC SDRAM Mode definition register defines
- */
-#define SDRAM_MODEREG_BURST_LENGTH_1 ((uint16_t)0x0000)
-#define SDRAM_MODEREG_BURST_LENGTH_2 ((uint16_t)0x0001)
-#define SDRAM_MODEREG_BURST_LENGTH_4 ((uint16_t)0x0002)
-#define SDRAM_MODEREG_BURST_LENGTH_8 ((uint16_t)0x0004)
-#define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL ((uint16_t)0x0000)
-#define SDRAM_MODEREG_BURST_TYPE_INTERLEAVED ((uint16_t)0x0008)
-#define SDRAM_MODEREG_CAS_LATENCY_2 ((uint16_t)0x0020)
-#define SDRAM_MODEREG_CAS_LATENCY_3 ((uint16_t)0x0030)
-#define SDRAM_MODEREG_OPERATING_MODE_STANDARD ((uint16_t)0x0000)
-#define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED ((uint16_t)0x0000)
-#define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE ((uint16_t)0x0200)
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_SDRAM_Exported_Functions STM324x9I EVAL SDRAM Exported Functions
- * @{
- */
-uint8_t BSP_SDRAM_Init(void);
-void BSP_SDRAM_Initialization_sequence(uint32_t RefreshCount);
-uint8_t BSP_SDRAM_ReadData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SDRAM_ReadData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SDRAM_WriteData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SDRAM_WriteData_DMA(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SDRAM_Sendcmd(FMC_SDRAM_CommandTypeDef *SdramCmd);
-void BSP_SDRAM_DMA_IRQHandler(void);
-void BSP_SDRAM_MspInit(void);
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_SDRAM_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sram.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sram.c
deleted file mode 100644
index bccd3de5c6..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sram.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_sram.c
- * @author MCD Application Team
- * @brief This file includes the SRAM driver for the IS61WV102416BLL-10M memory
- * device mounted on STM324x9I-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the IS61WV102416BLL-10M SRAM external memory mounted
- on STM324x9I-EVAL evaluation board.
- - This driver does not need a specific component driver for the SRAM device
- to be included with.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the SRAM external memory using the BSP_SRAM_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- FMC controller configuration to interface with the external SRAM memory.
-
- + SRAM read/write operations
- o SRAM external memory can be accessed with read/write operations once it is
- initialized.
- Read/write operation can be performed with AHB access using the functions
- BSP_SRAM_ReadData()/BSP_SRAM_WriteData(), or by DMA transfer using the functions
- BSP_SRAM_ReadData_DMA()/BSP_SRAM_WriteData_DMA().
- o The AHB access is performed with 16-bit width transaction, the DMA transfer
- configuration is fixed at single (no burst) halfword transfer
- (see the BSP_SRAM_MspInit() static function).
- o User can implement his own functions for read/write access with his desired
- configurations.
- o If interrupt mode is used for DMA transfer, the function BSP_SRAM_DMA_IRQHandler()
- is called in IRQ handler file, to serve the generated interrupt once the DMA
- transfer is complete.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_sram.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SRAM STM324x9I EVAL SRAM
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SRAM_Private_Variables STM324x9I EVAL SRAM Private Variables
- * @{
- */
-static SRAM_HandleTypeDef sramHandle;
-static FMC_NORSRAM_TimingTypeDef Timing;
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_SRAM_Private_Functions STM324x9I EVAL SRAM Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the SRAM device.
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_Init(void)
-{
- sramHandle.Instance = FMC_NORSRAM_DEVICE;
- sramHandle.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
-
- /* SRAM device configuration */
- Timing.AddressSetupTime = 2;
- Timing.AddressHoldTime = 1;
- Timing.DataSetupTime = 2;
- Timing.BusTurnAroundDuration = 1;
- Timing.CLKDivision = 2;
- Timing.DataLatency = 2;
- Timing.AccessMode = FMC_ACCESS_MODE_A;
-
- sramHandle.Init.NSBank = FMC_NORSRAM_BANK2;
- sramHandle.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
- sramHandle.Init.MemoryType = FMC_MEMORY_TYPE_SRAM;
- sramHandle.Init.MemoryDataWidth = SRAM_MEMORY_WIDTH;
- sramHandle.Init.BurstAccessMode = SRAM_BURSTACCESS;
- sramHandle.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
- sramHandle.Init.WrapMode = FMC_WRAP_MODE_DISABLE;
- sramHandle.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
- sramHandle.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
- sramHandle.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
- sramHandle.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
- sramHandle.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
- sramHandle.Init.WriteBurst = SRAM_WRITEBURST;
- sramHandle.Init.ContinuousClock = CONTINUOUSCLOCK_FEATURE;
-
- /* SRAM controller initialization */
- BSP_SRAM_MspInit();
- if(HAL_SRAM_Init(&sramHandle, &Timing, &Timing) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Reads an amount of data from the SRAM device in polling mode.
- * @param uwStartAddress: Read start address
- * @param pData: Pointer to data to be read
- * @param uwDataSize: Size of read data from the memory
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_ReadData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SRAM_Read_16b(&sramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Reads an amount of data from the SRAM device in DMA mode.
- * @param uwStartAddress: Read start address
- * @param pData: Pointer to data to be read
- * @param uwDataSize: Size of read data from the memory
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_ReadData_DMA(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SRAM_Read_DMA(&sramHandle, (uint32_t *)uwStartAddress, (uint32_t *)pData, uwDataSize) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Writes an amount of data from the SRAM device in polling mode.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of written data from the memory
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_WriteData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SRAM_Write_16b(&sramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Writes an amount of data from the SRAM device in DMA mode.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of written data from the memory
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_WriteData_DMA(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SRAM_Write_DMA(&sramHandle, (uint32_t *)uwStartAddress, (uint32_t *)pData, uwDataSize) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Handles SRAM DMA transfer interrupt request.
- */
-void BSP_SRAM_DMA_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(sramHandle.hdma);
-}
-
-/**
- * @brief Initializes SRAM MSP.
- */
-__weak void BSP_SRAM_MspInit(void)
-{
- static DMA_HandleTypeDef dmaHandle;
- GPIO_InitTypeDef GPIO_Init_Structure;
- SRAM_HandleTypeDef *hsram = &sramHandle;
-
- /* Enable FMC clock */
- __HAL_RCC_FMC_CLK_ENABLE();
-
- /* Enable chosen DMAx clock */
- __SRAM_DMAx_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
- __HAL_RCC_GPIOF_CLK_ENABLE();
- __HAL_RCC_GPIOG_CLK_ENABLE();
-
- /* Common GPIO configuration */
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF12_FMC;
-
- /* GPIOD configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_8 |\
- GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 |\
- GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
-
- /* GPIOE configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3| GPIO_PIN_4 | GPIO_PIN_7 |\
- GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 |\
- GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOE, &GPIO_Init_Structure);
-
- /* GPIOF configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOF, &GPIO_Init_Structure);
-
- /* GPIOG configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_9;
- HAL_GPIO_Init(GPIOG, &GPIO_Init_Structure);
-
- /* Configure common DMA parameters */
- dmaHandle.Init.Channel = SRAM_DMAx_CHANNEL;
- dmaHandle.Init.Direction = DMA_MEMORY_TO_MEMORY;
- dmaHandle.Init.PeriphInc = DMA_PINC_ENABLE;
- dmaHandle.Init.MemInc = DMA_MINC_ENABLE;
- dmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
- dmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
- dmaHandle.Init.Mode = DMA_NORMAL;
- dmaHandle.Init.Priority = DMA_PRIORITY_HIGH;
- dmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- dmaHandle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dmaHandle.Init.MemBurst = DMA_MBURST_SINGLE;
- dmaHandle.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- dmaHandle.Instance = SRAM_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsram, hdma, dmaHandle);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&dmaHandle);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&dmaHandle);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SRAM_DMAx_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(SRAM_DMAx_IRQn);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sram.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sram.h
deleted file mode 100644
index 7e35965c8c..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_sram.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_sram.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324x9i_eval_sram.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324x9I_EVAL_SRAM_H
-#define __STM324x9I_EVAL_SRAM_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SRAM STM324x9I EVAL SRAM
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_SRAM_Exported_Constants STM324x9I EVAL SRAM Exported Constants
- * @{
- */
-
-/**
- * @brief SRAM status structure definition
- */
-#define SRAM_OK 0x00
-#define SRAM_ERROR 0x01
-
-#define SRAM_DEVICE_ADDR ((uint32_t)0x64000000)
-#define SRAM_DEVICE_SIZE ((uint32_t)0x200000) /* SRAM device size in Bytes */
-
-/* #define SRAM_MEMORY_WIDTH FMC_NORSRAM_MEM_BUS_WIDTH_8 */
-#define SRAM_MEMORY_WIDTH FMC_NORSRAM_MEM_BUS_WIDTH_16
-
-#define SRAM_BURSTACCESS FMC_BURST_ACCESS_MODE_DISABLE
-/* #define SRAM_BURSTACCESS FMC_BURST_ACCESS_MODE_ENABLE*/
-
-#define SRAM_WRITEBURST FMC_WRITE_BURST_DISABLE
-/* #define SRAM_WRITEBURST FMC_WRITE_BURST_ENABLE */
-
-#define CONTINUOUSCLOCK_FEATURE FMC_CONTINUOUS_CLOCK_SYNC_ONLY
-/* #define CONTINUOUSCLOCK_FEATURE FMC_CONTINUOUS_CLOCK_SYNC_ASYNC */
-
-/* DMA definitions for SRAM DMA transfer */
-#define __SRAM_DMAx_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
-#define SRAM_DMAx_CHANNEL DMA_CHANNEL_0
-#define SRAM_DMAx_STREAM DMA2_Stream0
-#define SRAM_DMAx_IRQn DMA2_Stream0_IRQn
-#define SRAM_DMAx_IRQHandler DMA2_Stream0_IRQHandler
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_SRAM_Exported_Functions STM324x9I EVAL SRAM Exported Functions
- * @{
- */
-uint8_t BSP_SRAM_Init(void);
-uint8_t BSP_SRAM_ReadData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SRAM_ReadData_DMA(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SRAM_WriteData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SRAM_WriteData_DMA(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-void BSP_SRAM_DMA_IRQHandler(void);
-void BSP_SRAM_MspInit(void);
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_SRAM_H */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_ts.c b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_ts.c
deleted file mode 100644
index dcbcc424a7..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_ts.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_ts.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage the Touch
- * Screen on STM324x9I-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the touch screen module of the STM324x9I-EVAL
- evaluation board on the AMPIRE 640x480 LCD mounted on MB1063 or AMPIRE
- 480x272 LCD mounted on MB1046 daughter board.
- - If the AMPIRE 640x480 LCD is used, the TS3510 or EXC7200 component driver
- must be included according to the touch screen driver present on this board.
- - If the AMPIRE 480x272 LCD is used, the STMPE811 IO expander device component
- driver must be included in order to run the TS module commanded by the IO
- expander device, the STMPE1600 IO expander device component driver must be
- also included in case of interrupt mode use of the TS.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the TS module using the BSP_TS_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- communication layer configuration to start the TS use. The LCD size properties
- (x and y) are passed as parameters.
- o If TS interrupt mode is desired, you must configure the TS interrupt mode
- by calling the function BSP_TS_ITConfig(). The TS interrupt mode is generated
- as an external interrupt whenever a touch is detected.
- The interrupt mode internally uses the IO functionalities driver driven by
- the IO expander, to configure the IT line.
-
- + Touch screen use
- o The touch screen state is captured whenever the function BSP_TS_GetState() is
- used. This function returns information about the last LCD touch occurred
- in the TS_StateTypeDef structure.
- o If TS interrupt mode is used, the function BSP_TS_ITGetStatus() is needed to get
- the interrupt status. To clear the IT pending bits, you should call the
- function BSP_TS_ITClear().
- o The IT is handled using the corresponding external interrupt IRQ handler,
- the user IT callback treatment is implemented on the same external interrupt
- callback.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval_ts.h"
-#include "stm324x9i_eval_io.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_TS STM324x9I EVAL TS
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_TS_Private_Variables STM324x9I EVAL TS Private Variables
- * @{
- */
-static TS_DrvTypeDef *ts_driver;
-static uint16_t ts_x_boundary, ts_y_boundary;
-static uint8_t ts_orientation;
-static uint8_t I2C_Address;
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_TS_Private_Functions STM324x9I EVAL TS Private Functions
- * @{
- */
-
-/**
- * @brief Initializes and configures the touch screen functionalities and
- * configures all necessary hardware resources (GPIOs, clocks..).
- * @param xSize: Maximum X size of the TS area on LCD
- * @param ySize: Maximum Y size of the TS area on LCD
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_Init(uint16_t xSize, uint16_t ySize)
-{
- uint8_t status = TS_OK;
- ts_x_boundary = xSize;
- ts_y_boundary = ySize;
-
- /* Read ID and verify if the IO expander is ready */
- if(stmpe811_ts_drv.ReadID(TS_I2C_ADDRESS) == STMPE811_ID)
- {
- /* Initialize the TS driver structure */
- ts_driver = &stmpe811_ts_drv;
- I2C_Address = TS_I2C_ADDRESS;
- ts_orientation = TS_SWAP_Y;
- }
- else
- {
- IOE_Init();
-
- /* Check TS3510 touch screen driver presence to determine if TS3510 or
- * EXC7200 driver will be used */
- if(BSP_TS3510_IsDetected() == 0)
- {
- /* Initialize the TS driver structure */
- ts_driver = &ts3510_ts_drv;
- I2C_Address = TS3510_I2C_ADDRESS;
- }
- else
- {
- /* Initialize the TS driver structure */
- ts_driver = &exc7200_ts_drv;
- I2C_Address = EXC7200_I2C_ADDRESS;
- }
- ts_orientation = TS_SWAP_NONE;
- }
-
- /* Initialize the TS driver */
- ts_driver->Init(I2C_Address);
- ts_driver->Start(I2C_Address);
-
- return status;
-}
-
-/**
- * @brief DeInitializes the TouchScreen.
- * @retval TS state
- */
-uint8_t BSP_TS_DeInit(void)
-{
- /* Actually ts_driver does not provide a DeInit function */
- return TS_OK;
-}
-
-/**
- * @brief Configures and enables the touch screen interrupts.
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_ITConfig(void)
-{
- /* Initialize the IO */
- BSP_IO_Init();
-
- /* Configure TS IT line IO */
- BSP_IO_ConfigPin(TS_INT_PIN, IO_MODE_IT_FALLING_EDGE);
-
- /* Enable the TS ITs */
- ts_driver->EnableIT(I2C_Address);
-
- return TS_OK;
-}
-
-/**
- * @brief Gets the touch screen interrupt status.
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_ITGetStatus(void)
-{
- /* Return the TS IT status */
- return (ts_driver->GetITStatus(I2C_Address));
-}
-
-/**
- * @brief Returns status and positions of the touch screen.
- * @param TS_State: Pointer to touch screen current state structure
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_GetState(TS_StateTypeDef *TS_State)
-{
- static uint32_t _x = 0, _y = 0;
- uint16_t xDiff, yDiff , x , y;
- uint16_t swap;
-
- TS_State->TouchDetected = ts_driver->DetectTouch(I2C_Address);
-
- if(TS_State->TouchDetected)
- {
- ts_driver->GetXY(I2C_Address, &x, &y);
-
- if(ts_orientation & TS_SWAP_X)
- {
- x = 4096 - x;
- }
-
- if(ts_orientation & TS_SWAP_Y)
- {
- y = 4096 - y;
- }
-
- if(ts_orientation & TS_SWAP_XY)
- {
- swap = y;
- y = x;
- x = swap;
- }
-
- xDiff = x > _x? (x - _x): (_x - x);
- yDiff = y > _y? (y - _y): (_y - y);
-
- if (xDiff + yDiff > 5)
- {
- _x = x;
- _y = y;
- }
-
- TS_State->x = (ts_x_boundary * _x) >> 12;
- TS_State->y = (ts_y_boundary * _y) >> 12;
- }
- return TS_OK;
-}
-
-/**
- * @brief Clears all touch screen interrupts.
- */
-void BSP_TS_ITClear(void)
-{
- /* Clear all IO IT pin */
- BSP_IO_ITClear();
-
- /* Clear TS IT pending bits */
- ts_driver->ClearIT(I2C_Address);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_ts.h b/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_ts.h
deleted file mode 100644
index 0e0d777fe7..0000000000
--- a/Drivers/BSP/STM324x9I_EVAL/stm324x9i_eval_ts.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324x9i_eval_ts.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324x9i_eval_ts.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324x9I_EVAL_TS_H
-#define __STM324x9I_EVAL_TS_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324x9i_eval.h"
-/* Include IOExpander(STMPE811) component Driver */
-#include "../Components/stmpe811/stmpe811.h"
-/* Include TouchScreen component drivers */
-#include "../Components/ts3510/ts3510.h"
-#include "../Components/exc7200/exc7200.h"
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x9I_EVAL_TS
- * @{
- */
-
-/** @defgroup STM324x9I_EVAL_TS_Exported_Types STM324x9I EVAL TS Exported Types
- * @{
- */
-typedef struct
-{
- uint16_t TouchDetected;
- uint16_t x;
- uint16_t y;
- uint16_t z;
-}TS_StateTypeDef;
-
-typedef enum
-{
- TS_OK = 0x00,
- TS_ERROR = 0x01,
- TS_TIMEOUT = 0x02
-}TS_StatusTypeDef;
-
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_TS_Exported_Constants STM324x9I EVAL TS Exported Constants
- * @{
- */
-#define TS_SWAP_NONE 0x00
-#define TS_SWAP_X 0x01
-#define TS_SWAP_Y 0x02
-#define TS_SWAP_XY 0x04
-
-/* Interrupt sources pins definition */
-#define TS_INT_PIN 0x0010
-/**
- * @}
- */
-
-/** @defgroup STM324x9I_EVAL_TS_Exported_Functions STM324x9I EVAL TS Exported Functions
- * @{
- */
-uint8_t BSP_TS_Init(uint16_t xSize, uint16_t ySize);
-uint8_t BSP_TS_DeInit(void);
-uint8_t BSP_TS_GetState(TS_StateTypeDef *TS_State);
-uint8_t BSP_TS_ITConfig(void);
-uint8_t BSP_TS_ITGetStatus(void);
-void BSP_TS_ITClear(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324x9I_EVAL_TS_H */
diff --git a/Drivers/BSP/STM324xG_EVAL b/Drivers/BSP/STM324xG_EVAL
new file mode 160000
index 0000000000..12af24189f
--- /dev/null
+++ b/Drivers/BSP/STM324xG_EVAL
@@ -0,0 +1 @@
+Subproject commit 12af24189f7dc85fd0338a797cb3c4b6c18d44b0
diff --git a/Drivers/BSP/STM324xG_EVAL/LICENSE.md b/Drivers/BSP/STM324xG_EVAL/LICENSE.md
deleted file mode 100644
index 479c4f6826..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/LICENSE.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright 2017 STMicroelectronics.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors
-may be used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Drivers/BSP/STM324xG_EVAL/README.md b/Drivers/BSP/STM324xG_EVAL/README.md
deleted file mode 100644
index d32aabe280..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# BSP STM324XG-EVAL Component
-
-![latest tag](https://img.shields.io/github/v/tag/STMicroelectronics/stm324xg-eval.svg?color=brightgreen)
-
-## Overview
-
-**STM32Cube** is an STMicroelectronics original initiative to ease developers' life by reducing efforts, time and cost.
-
-**STM32Cube** covers the overall STM32 products portfolio. It includes a comprehensive embedded software platform delivered for each STM32 series.
- * The CMSIS modules (core and device) corresponding to the ARM(tm) core implemented in this STM32 product.
- * The STM32 HAL-LL drivers, an abstraction layer offering a set of APIs ensuring maximized portability across the STM32 portfolio.
- * The BSP drivers of each evaluation, demonstration or nucleo board provided for this STM32 series.
- * A consistent set of middleware libraries such as RTOS, USB, FatFS, graphics, touch sensing library...
- * A full set of software projects (basic examples, applications, and demonstrations) for each board provided for this STM32 series.
-
-Two models of publication are proposed for the STM32Cube embedded software:
- * The monolithic **MCU Package**: all STM32Cube software modules of one STM32 series are present (Drivers, Middleware, Projects, Utilities) in the repository (usual name **STM32Cubexx**, xx corresponding to the STM32 series).
- * The **MCU component**: each STM32Cube software module being part of the STM32Cube MCU Package, is delivered as an individual repository, allowing the user to select and get only the required software functions.
-
-## Description
-
-This **stm324xg-eval** MCU component repository is one element of the **STM32CubeF4** MCU embedded software package, providing the **STM324XG-EVAL** BSP BOARD component part.
-
-## Release note
-
-Details about the content of this release are available in the release note [here](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/stm324xg-eval/blob/main/Release_Notes.html).
-
-## Compatibility information
-
-Below is the list of the BSP *component* drivers to be used with this BSP *board* driver. It is **crucial** that you use a consistent set of CMSIS - HAL - BSP versions, as mentioned in [this](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/STM32CubeF4/blob/master/Release_Notes.html) release note.
-
-* [stm32-bsp-common](https://github.com/STMicroelectronics/stm32-bsp-common)
-* [stm32-cs43l22](https://github.com/STMicroelectronics/stm32-cs43l22)
-* [stm32-ili9325](https://github.com/STMicroelectronics/stm32-ili9325)
-* [stm32-ov2640](https://github.com/STMicroelectronics/stm32-ov2640)
-* [stm32-stmpe811](https://github.com/STMicroelectronics/stm32-stmpe811)
-
-## Troubleshooting
-
-Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) guide.
diff --git a/Drivers/BSP/STM324xG_EVAL/Release_Notes.html b/Drivers/BSP/STM324xG_EVAL/Release_Notes.html
deleted file mode 100644
index 12b0dacee3..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/Release_Notes.html
+++ /dev/null
@@ -1,370 +0,0 @@
-
-
-
-
-
-
- Release Notes for STM324xG_EVAL Evaluation Board Drivers
-
-
-
-
-
-
-
This directory contains the board drivers to demonstrate the capabilities of the STM324xG_EVAL Evaluation Board Drivers.
-
-
-
Update History
-
-
-
-
Main Changes
-
-
Update Release_Notes.html to support new format
-
-
-
-
-
-
-
Main Changes
-
-
All source files: update disclaimer to add reference to the new license agreement
-
-
-
-
-
-
-
Main Changes
-
-
Fix compilation errors with SW4STM32 toolchain
-
-
-
-
-
-
-
Main Changes
-
-
Add general description of BSP drivers
-
Remove date & version
-
stm324xg_eval_lcd.c:
-
-
Update BSP_LCD_DrawBitmap() API to fix functional misbehaviour with SW4STM32 Toolchain
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval_sd.c/.h:
-
-
Update BSP SD APIs following new HAL SD drivers implementation
-
Fix BlockSize to 512 bytes
-
-
stm324xg_eval_audio.c/.h:
-
-
Add BSP_AUDIO_OUT_MspInit, BSP_AUDIO_OUT_MspDeInit and BSP_AUDIO_OUT_ClockConfig APIs as weak
-
Remove CODEC_Reset API
-
-
stm324xg_eval_sram.c/.h:
-
-
Add BSP_SRAM_MspInit API as weak
-
-
stm324xg_eval_camera.c/.h:
-
-
Add BSP_CAMERA_MspInit API as weak
-
-
-
Notes:
-
-
These BSP drivers break the compatibility with previous versions.
-
If FatFs is required, “FatFS R0.11 ST modified 20161223†must be used with this version of BSP drivers.
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval_camera.h update BSP Camera driver to use the new HAL DCMI API’s:
-
-
Update BSP_CAMERA_Suspend() API to call HAL_DCMI_Suspend() API
-
Update BSP_CAMERA_Resume to call HAL_DCMI_Resume() API
-
-
-
-
-
-
-
-
Main Changes
-
-
General updates to fix doxygen errors
-
Add STM324xG_EVAL_BSP_User_Manual.chm file
-
stm324xg_eval.c
-
-
Update to initialize the SRAM PageSize parameter to avoid issue with GCC compiler
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval.c/.h
-
-
Update to support the new LCD component (ili9325) version V1.2.2
-
-
Add new API: LCD_IO_WriteMultipleData()
-
Update LCD_IO_ReadData() API prototype: add “RegValue†parameter
-
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval.c
-
-
Add AUDIO_IO_DeInit function to align with latest audio codecs V2.0.2
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval.c/.h
-
-
Align to STM32F4xx HAL Driver V1.3.0 for __HAL_RCC_PPP_CLK_ENABLE() macros implementation.
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval.c/.h
-
-
Change I2C_SPEED used define by BSP_I2C_SPEED
-
-
stm324xg_eval_eeprom.c/.h
-
-
Change BSP_EEPROM_WaitEepromStandbyState() and BSP_EEPROM_WritePage() to be declared as static APIs
-
-
stm324xg_eval_camera.h, stm324xg_eval_audio.h, stm324xg_eval_io.h, stm324xg_eval_ts.h and stm324xg_eval_lcd.c/.h
-
-
Change “" byâ€/" in the include path to fix compilation issue under Linux
-
-
Miscellaneous comments update
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval_audio.c/.h
-
-
BSP_AUDIO_OUT_Play(): uses the buffer size in byte instead of half-word
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval.c/.h
-
-
Add protection for double initialization of IO_Init within LCD_IO_Init()
-
Enhance BSP_PB_Init() function by removing the call of __SYSCFG_CLK_ENABLE() already enabled in the HAL_GPIO_Init()
-
-
stm324xg_eval_audio.c/.h
-
-
Add note that only the audio stereo format is supported
-
-
stm324xg_eval_sd.c/.h
-
-
Ensure compatibility with the updated version of FatFs sd_diskio driver (i.e. FatFs R0.10 ST modified 20140422) supporting SDIO/SPI to interface uSD
-
Comments clean up and typo corrections
-
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval_sd.c/.h
-
-
Update SD_DATATIMEOUT value
-
-
stm324xg_eval_eeprom.c/.h
-
-
Update usage of BSP_EEPROM_TIMEOUT_UserCallback() function
-
-
-
-
-
-
-
-
Main Changes
-
-
Major update based on STM32Cube specification: drivers architecture and APIs modified vs. V1.1.1, and thus the 2 versions are not compatible.
-
This version has to be used only with STM32CubeF4 based development
-
-
-
-
-
-
-
Main Changes
-
-
stm324xg_eval_ioe.c
-
-
Update the MEMS pins configuration in IOE_Config() function.
-
Update I2C communication sequence in I2C_ReadDataBuffer() function to ensure efficient and robust I2C transfer.
-
-
stm324xg_eval_lcd.c
-
-
Replace STM324xG_LCD_Init() function by LCD_Init() function and add a legacy for old LCD Initialization function name for compatibility purpose.
-
-
-
-
-
-
-
-
Main Changes
-
-
stm3224xg_eval_sdio_sd.h/.c
-
-
Support SDHC memory cards with capacity greater than 4 GB
-
Transmit and receive functions: swap the order of state machine and DMA configuration, to fix marginal limitation where the card sent data to the SDIO interface while the DMA is not ready to transfer them
-
Support SDHS (High Speed) memory cards, add new function SD_HighSpeed()
-
-
stm324xg_eval_ioe.c
-
-
Configuration clean up and corrections
-
Touch screen (TSC) Interrupt mode enhancement
-
Update Read/Write low layer functions to ensure efficient and robust I2C transfer
-
-
Update legacy functions I2C_WriteDeviceRegister(), I2C_ReadDeviceRegister() and I2C_ReadDataBuffer() to use polling mode instead of DMA
-
Add three new functions I2C_DMA_WriteDeviceRegister(), I2C_DMA_ReadDeviceRegister() and I2C_DMA_ReadDataBuffer(), for DMA based I2C transfer
-
-
-
stm324xg_eval.c
-
-
SD_LowLevel_Init(): Set the GPIO clock to 50MHz to support High Speed mode
-
-
stm324xg_eval_i2c_ee.c
-
-
Enable I2C DMA request only after the enable of the DMA stream, to avoid DMA FIFO error generation
-
-
stm324xg_eval_fsmc_sram.c
-
-
Change memory type to SRAM instead of PSRAM (PSRAM is available only on STM324xG-EVAL RevA) and update timing values
-
-
-
-
-
-
-
-
Main Changes
-
-
All source files: license disclaimer text update and add link to the License file on ST Internet.
-
stm324xg_eval_lcd.c
-
-
Enhance Gamma Curve settings for ILI9320 controller
-
-
stm324xg_eval.c and stm324xg_eval_ioe.c
-
-
Swap the order of I2C IOs and alternate function (AF) configuration: AF configuration should be done before to configure the IOs.
-
-
stm324xg_eval_sdio_sd.c
-
-
In SD_WaitWriteOperation() and SD_WaitReadOperation() functions: reset StopCondition flag after sending CMD12
-
-
-
-
-
-
-
-
Main Changes
-
-
All source files: update disclaimer to add reference to the new license agreement
-
stm324xg_eval_lcd.c
-
-
Remove “static†from TextColor and BackColor variables declaration (need to be changed from other application modules)
-
-
stm324xg_eval_ioe.h
-
-
Add conditional compilation on the default DMA stream(s) used for I2C1 Tx and Rx transfers, to allow user to change them from application level.
-
-
stm322xg_eval_sdio_sd.h
-
-
SD_CardInfo structure, define CardCapacity variable as 64-bit long (instead of 32-bit) to support SDHC memory cards with capacity greater than 4 GB.
-
-
stm324xg_eval_fsmc_sram.c
-
-
Add IOs config of missing FSMC address lines (FSMC_A21, FSMC_A22 and FSMC_A23).
-
-
-
-
-
-
-
-
Main Changes
-
-
First official release for STM3240_41_G_EVAL board RevB drivers
-
stm322xg_eval_lcd.c: increase FSMC AddressSetupTime value from 4 to 5 to be compliant with some LCD access timing
-
-
-
-
-
-
-
-
diff --git a/Drivers/BSP/STM324xG_EVAL/_htmresc/favicon.png b/Drivers/BSP/STM324xG_EVAL/_htmresc/favicon.png
deleted file mode 100644
index 06713eec49..0000000000
Binary files a/Drivers/BSP/STM324xG_EVAL/_htmresc/favicon.png and /dev/null differ
diff --git a/Drivers/BSP/STM324xG_EVAL/_htmresc/mini-st_2020.css b/Drivers/BSP/STM324xG_EVAL/_htmresc/mini-st_2020.css
deleted file mode 100644
index 986f4d4205..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/_htmresc/mini-st_2020.css
+++ /dev/null
@@ -1,1711 +0,0 @@
-@charset "UTF-8";
-/*
- Flavor name: Custom (mini-custom)
- Generated online - https://minicss.org/flavors
- mini.css version: v3.0.1
-*/
-/*
- Browsers resets and base typography.
-*/
-/* Core module CSS variable definitions */
-:root {
- --fore-color: #03234b;
- --secondary-fore-color: #03234b;
- --back-color: #ffffff;
- --secondary-back-color: #ffffff;
- --blockquote-color: #e6007e;
- --pre-color: #e6007e;
- --border-color: #3cb4e6;
- --secondary-border-color: #3cb4e6;
- --heading-ratio: 1.2;
- --universal-margin: 0.5rem;
- --universal-padding: 0.25rem;
- --universal-border-radius: 0.075rem;
- --background-margin: 1.5%;
- --a-link-color: #3cb4e6;
- --a-visited-color: #8c0078; }
-
-html {
- font-size: 13.5px; }
-
-a, b, del, em, i, ins, q, span, strong, u {
- font-size: 1em; }
-
-html, * {
- font-family: -apple-system, BlinkMacSystemFont, Helvetica, arial, sans-serif;
- line-height: 1.25;
- -webkit-text-size-adjust: 100%; }
-
-* {
- font-size: 1rem; }
-
-body {
- margin: 0;
- color: var(--fore-color);
- @background: var(--back-color);
- background: var(--back-color) linear-gradient(#ffd200, #ffd200) repeat-y left top;
- background-size: var(--background-margin);
- }
-
-details {
- display: block; }
-
-summary {
- display: list-item; }
-
-abbr[title] {
- border-bottom: none;
- text-decoration: underline dotted; }
-
-input {
- overflow: visible; }
-
-img {
- max-width: 100%;
- height: auto; }
-
-h1, h2, h3, h4, h5, h6 {
- line-height: 1.25;
- margin: calc(1.5 * var(--universal-margin)) var(--universal-margin);
- font-weight: 400; }
- h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
- color: var(--secondary-fore-color);
- display: block;
- margin-top: -0.25rem; }
-
-h1 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio)); }
-
-h2 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) );
- border-style: none none solid none ;
- border-width: thin;
- border-color: var(--border-color); }
-h3 {
- font-size: calc(1rem * var(--heading-ratio) ); }
-
-h4 {
- font-size: calc(1rem * var(--heading-ratio)); }
-
-h5 {
- font-size: 1rem; }
-
-h6 {
- font-size: calc(1rem / var(--heading-ratio)); }
-
-p {
- margin: var(--universal-margin); }
-
-ol, ul {
- margin: var(--universal-margin);
- padding-left: calc(3 * var(--universal-margin)); }
-
-b, strong {
- font-weight: 700; }
-
-hr {
- box-sizing: content-box;
- border: 0;
- line-height: 1.25em;
- margin: var(--universal-margin);
- height: 0.0714285714rem;
- background: linear-gradient(to right, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent); }
-
-blockquote {
- display: block;
- position: relative;
- font-style: italic;
- color: var(--secondary-fore-color);
- margin: var(--universal-margin);
- padding: calc(3 * var(--universal-padding));
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.3rem solid var(--blockquote-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
- blockquote:before {
- position: absolute;
- top: calc(0rem - var(--universal-padding));
- left: 0;
- font-family: sans-serif;
- font-size: 2rem;
- font-weight: 800;
- content: "\201c";
- color: var(--blockquote-color); }
- blockquote[cite]:after {
- font-style: normal;
- font-size: 0.75em;
- font-weight: 700;
- content: "\a— " attr(cite);
- white-space: pre; }
-
-code, kbd, pre, samp {
- font-family: Menlo, Consolas, monospace;
- font-size: 0.85em; }
-
-code {
- background: var(--secondary-back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-kbd {
- background: var(--fore-color);
- color: var(--back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-pre {
- overflow: auto;
- background: var(--secondary-back-color);
- padding: calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.2857142857rem solid var(--pre-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
-
-sup, sub, code, kbd {
- line-height: 0;
- position: relative;
- vertical-align: baseline; }
-
-small, sup, sub, figcaption {
- font-size: 0.75em; }
-
-sup {
- top: -0.5em; }
-
-sub {
- bottom: -0.25em; }
-
-figure {
- margin: var(--universal-margin); }
-
-figcaption {
- color: var(--secondary-fore-color); }
-
-a {
- text-decoration: none; }
- a:link {
- color: var(--a-link-color); }
- a:visited {
- color: var(--a-visited-color); }
- a:hover, a:focus {
- text-decoration: underline; }
-
-/*
- Definitions for the grid system, cards and containers.
-*/
-.container {
- margin: 0 auto;
- padding: 0 calc(1.5 * var(--universal-padding)); }
-
-.row {
- box-sizing: border-box;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- margin: 0 0 0 var(--background-margin); }
-
-.col-sm,
-[class^='col-sm-'],
-[class^='col-sm-offset-'],
-.row[class*='cols-sm-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
-.col-sm,
-.row.cols-sm > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
-.col-sm-1,
-.row.cols-sm-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
-.col-sm-offset-0 {
- margin-left: 0; }
-
-.col-sm-2,
-.row.cols-sm-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
-.col-sm-offset-1 {
- margin-left: 8.3333333333%; }
-
-.col-sm-3,
-.row.cols-sm-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
-.col-sm-offset-2 {
- margin-left: 16.6666666667%; }
-
-.col-sm-4,
-.row.cols-sm-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
-.col-sm-offset-3 {
- margin-left: 25%; }
-
-.col-sm-5,
-.row.cols-sm-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
-.col-sm-offset-4 {
- margin-left: 33.3333333333%; }
-
-.col-sm-6,
-.row.cols-sm-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
-.col-sm-offset-5 {
- margin-left: 41.6666666667%; }
-
-.col-sm-7,
-.row.cols-sm-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
-.col-sm-offset-6 {
- margin-left: 50%; }
-
-.col-sm-8,
-.row.cols-sm-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
-.col-sm-offset-7 {
- margin-left: 58.3333333333%; }
-
-.col-sm-9,
-.row.cols-sm-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
-.col-sm-offset-8 {
- margin-left: 66.6666666667%; }
-
-.col-sm-10,
-.row.cols-sm-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
-.col-sm-offset-9 {
- margin-left: 75%; }
-
-.col-sm-11,
-.row.cols-sm-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
-.col-sm-offset-10 {
- margin-left: 83.3333333333%; }
-
-.col-sm-12,
-.row.cols-sm-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
-.col-sm-offset-11 {
- margin-left: 91.6666666667%; }
-
-.col-sm-normal {
- order: initial; }
-
-.col-sm-first {
- order: -999; }
-
-.col-sm-last {
- order: 999; }
-
-@media screen and (min-width: 500px) {
- .col-md,
- [class^='col-md-'],
- [class^='col-md-offset-'],
- .row[class*='cols-md-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-md,
- .row.cols-md > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-md-1,
- .row.cols-md-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-md-offset-0 {
- margin-left: 0; }
-
- .col-md-2,
- .row.cols-md-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-md-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-md-3,
- .row.cols-md-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-md-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-md-4,
- .row.cols-md-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-md-offset-3 {
- margin-left: 25%; }
-
- .col-md-5,
- .row.cols-md-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-md-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-md-6,
- .row.cols-md-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-md-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-md-7,
- .row.cols-md-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-md-offset-6 {
- margin-left: 50%; }
-
- .col-md-8,
- .row.cols-md-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-md-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-md-9,
- .row.cols-md-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-md-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-md-10,
- .row.cols-md-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-md-offset-9 {
- margin-left: 75%; }
-
- .col-md-11,
- .row.cols-md-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-md-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-md-12,
- .row.cols-md-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-md-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-md-normal {
- order: initial; }
-
- .col-md-first {
- order: -999; }
-
- .col-md-last {
- order: 999; } }
-@media screen and (min-width: 1280px) {
- .col-lg,
- [class^='col-lg-'],
- [class^='col-lg-offset-'],
- .row[class*='cols-lg-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-lg,
- .row.cols-lg > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-lg-1,
- .row.cols-lg-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-lg-offset-0 {
- margin-left: 0; }
-
- .col-lg-2,
- .row.cols-lg-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-lg-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-lg-3,
- .row.cols-lg-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-lg-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-lg-4,
- .row.cols-lg-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-lg-offset-3 {
- margin-left: 25%; }
-
- .col-lg-5,
- .row.cols-lg-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-lg-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-lg-6,
- .row.cols-lg-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-lg-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-lg-7,
- .row.cols-lg-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-lg-offset-6 {
- margin-left: 50%; }
-
- .col-lg-8,
- .row.cols-lg-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-lg-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-lg-9,
- .row.cols-lg-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-lg-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-lg-10,
- .row.cols-lg-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-lg-offset-9 {
- margin-left: 75%; }
-
- .col-lg-11,
- .row.cols-lg-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-lg-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-lg-12,
- .row.cols-lg-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-lg-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-lg-normal {
- order: initial; }
-
- .col-lg-first {
- order: -999; }
-
- .col-lg-last {
- order: 999; } }
-/* Card component CSS variable definitions */
-:root {
- --card-back-color: #3cb4e6;
- --card-fore-color: #03234b;
- --card-border-color: #03234b; }
-
-.card {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-self: center;
- position: relative;
- width: 100%;
- background: var(--card-back-color);
- color: var(--card-fore-color);
- border: 0.0714285714rem solid var(--card-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- overflow: hidden; }
- @media screen and (min-width: 320px) {
- .card {
- max-width: 320px; } }
- .card > .sectione {
- background: var(--card-back-color);
- color: var(--card-fore-color);
- box-sizing: border-box;
- margin: 0;
- border: 0;
- border-radius: 0;
- border-bottom: 0.0714285714rem solid var(--card-border-color);
- padding: var(--universal-padding);
- width: 100%; }
- .card > .sectione.media {
- height: 200px;
- padding: 0;
- -o-object-fit: cover;
- object-fit: cover; }
- .card > .sectione:last-child {
- border-bottom: 0; }
-
-/*
- Custom elements for card elements.
-*/
-@media screen and (min-width: 240px) {
- .card.small {
- max-width: 240px; } }
-@media screen and (min-width: 480px) {
- .card.large {
- max-width: 480px; } }
-.card.fluid {
- max-width: 100%;
- width: auto; }
-
-.card.warning {
- --card-back-color: #e5b8b7;
- --card-fore-color: #3b234b;
- --card-border-color: #8c0078; }
-
-.card.error {
- --card-back-color: #464650;
- --card-fore-color: #ffffff;
- --card-border-color: #8c0078; }
-
-.card > .sectione.dark {
- --card-back-color: #3b234b;
- --card-fore-color: #ffffff; }
-
-.card > .sectione.double-padded {
- padding: calc(1.5 * var(--universal-padding)); }
-
-/*
- Definitions for forms and input elements.
-*/
-/* Input_control module CSS variable definitions */
-:root {
- --form-back-color: #ffe97f;
- --form-fore-color: #03234b;
- --form-border-color: #3cb4e6;
- --input-back-color: #ffffff;
- --input-fore-color: #03234b;
- --input-border-color: #3cb4e6;
- --input-focus-color: #0288d1;
- --input-invalid-color: #d32f2f;
- --button-back-color: #e2e2e2;
- --button-hover-back-color: #dcdcdc;
- --button-fore-color: #212121;
- --button-border-color: transparent;
- --button-hover-border-color: transparent;
- --button-group-border-color: rgba(124, 124, 124, 0.54); }
-
-form {
- background: var(--form-back-color);
- color: var(--form-fore-color);
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding); }
-
-fieldset {
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 4);
- padding: var(--universal-padding); }
-
-legend {
- box-sizing: border-box;
- display: table;
- max-width: 100%;
- white-space: normal;
- font-weight: 500;
- padding: calc(var(--universal-padding) / 2); }
-
-label {
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-.input-group {
- display: inline-block; }
- .input-group.fluid {
- display: flex;
- align-items: center;
- justify-content: center; }
- .input-group.fluid > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
- @media screen and (max-width: 499px) {
- .input-group.fluid {
- align-items: stretch;
- flex-direction: column; } }
- .input-group.vertical {
- display: flex;
- align-items: stretch;
- flex-direction: column; }
- .input-group.vertical > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
-
-[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button {
- height: auto; }
-
-[type="search"] {
- -webkit-appearance: textfield;
- outline-offset: -2px; }
-
-[type="search"]::-webkit-search-cancel-button,
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none; }
-
-input:not([type]), [type="text"], [type="email"], [type="number"], [type="search"],
-[type="password"], [type="url"], [type="tel"], [type="checkbox"], [type="radio"], textarea, select {
- box-sizing: border-box;
- background: var(--input-back-color);
- color: var(--input-fore-color);
- border: 0.0714285714rem solid var(--input-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 2);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
-
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):hover, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus, textarea:hover, textarea:focus, select:hover, select:focus {
- border-color: var(--input-focus-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):invalid, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus:invalid, textarea:invalid, textarea:focus:invalid, select:invalid, select:focus:invalid {
- border-color: var(--input-invalid-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"])[readonly], textarea[readonly], select[readonly] {
- background: var(--secondary-back-color); }
-
-select {
- max-width: 100%; }
-
-option {
- overflow: hidden;
- text-overflow: ellipsis; }
-
-[type="checkbox"], [type="radio"] {
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- position: relative;
- height: calc(1rem + var(--universal-padding) / 2);
- width: calc(1rem + var(--universal-padding) / 2);
- vertical-align: text-bottom;
- padding: 0;
- flex-basis: calc(1rem + var(--universal-padding) / 2) !important;
- flex-grow: 0 !important; }
- [type="checkbox"]:checked:before, [type="radio"]:checked:before {
- position: absolute; }
-
-[type="checkbox"]:checked:before {
- content: '\2713';
- font-family: sans-serif;
- font-size: calc(1rem + var(--universal-padding) / 2);
- top: calc(0rem - var(--universal-padding));
- left: calc(var(--universal-padding) / 4); }
-
-[type="radio"] {
- border-radius: 100%; }
- [type="radio"]:checked:before {
- border-radius: 100%;
- content: '';
- top: calc(0.0714285714rem + var(--universal-padding) / 2);
- left: calc(0.0714285714rem + var(--universal-padding) / 2);
- background: var(--input-fore-color);
- width: 0.5rem;
- height: 0.5rem; }
-
-:placeholder-shown {
- color: var(--input-fore-color); }
-
-::-ms-placeholder {
- color: var(--input-fore-color);
- opacity: 0.54; }
-
-button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0; }
-
-button, html [type="button"], [type="reset"], [type="submit"] {
- -webkit-appearance: button; }
-
-button {
- overflow: visible;
- text-transform: none; }
-
-button, [type="button"], [type="submit"], [type="reset"],
-a.button, label.button, .button,
-a[role="button"], label[role="button"], [role="button"] {
- display: inline-block;
- background: var(--button-back-color);
- color: var(--button-fore-color);
- border: 0.0714285714rem solid var(--button-border-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- text-decoration: none;
- cursor: pointer;
- transition: background 0.3s; }
- button:hover, button:focus, [type="button"]:hover, [type="button"]:focus, [type="submit"]:hover, [type="submit"]:focus, [type="reset"]:hover, [type="reset"]:focus,
- a.button:hover,
- a.button:focus, label.button:hover, label.button:focus, .button:hover, .button:focus,
- a[role="button"]:hover,
- a[role="button"]:focus, label[role="button"]:hover, label[role="button"]:focus, [role="button"]:hover, [role="button"]:focus {
- background: var(--button-hover-back-color);
- border-color: var(--button-hover-border-color); }
-
-input:disabled, input[disabled], textarea:disabled, textarea[disabled], select:disabled, select[disabled], button:disabled, button[disabled], .button:disabled, .button[disabled], [role="button"]:disabled, [role="button"][disabled] {
- cursor: not-allowed;
- opacity: 0.75; }
-
-.button-group {
- display: flex;
- border: 0.0714285714rem solid var(--button-group-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- .button-group > button, .button-group [type="button"], .button-group > [type="submit"], .button-group > [type="reset"], .button-group > .button, .button-group > [role="button"] {
- margin: 0;
- max-width: 100%;
- flex: 1 1 auto;
- text-align: center;
- border: 0;
- border-radius: 0;
- box-shadow: none; }
- .button-group > :not(:first-child) {
- border-left: 0.0714285714rem solid var(--button-group-border-color); }
- @media screen and (max-width: 499px) {
- .button-group {
- flex-direction: column; }
- .button-group > :not(:first-child) {
- border: 0;
- border-top: 0.0714285714rem solid var(--button-group-border-color); } }
-
-/*
- Custom elements for forms and input elements.
-*/
-button.primary, [type="button"].primary, [type="submit"].primary, [type="reset"].primary, .button.primary, [role="button"].primary {
- --button-back-color: #1976d2;
- --button-fore-color: #f8f8f8; }
- button.primary:hover, button.primary:focus, [type="button"].primary:hover, [type="button"].primary:focus, [type="submit"].primary:hover, [type="submit"].primary:focus, [type="reset"].primary:hover, [type="reset"].primary:focus, .button.primary:hover, .button.primary:focus, [role="button"].primary:hover, [role="button"].primary:focus {
- --button-hover-back-color: #1565c0; }
-
-button.secondary, [type="button"].secondary, [type="submit"].secondary, [type="reset"].secondary, .button.secondary, [role="button"].secondary {
- --button-back-color: #d32f2f;
- --button-fore-color: #f8f8f8; }
- button.secondary:hover, button.secondary:focus, [type="button"].secondary:hover, [type="button"].secondary:focus, [type="submit"].secondary:hover, [type="submit"].secondary:focus, [type="reset"].secondary:hover, [type="reset"].secondary:focus, .button.secondary:hover, .button.secondary:focus, [role="button"].secondary:hover, [role="button"].secondary:focus {
- --button-hover-back-color: #c62828; }
-
-button.tertiary, [type="button"].tertiary, [type="submit"].tertiary, [type="reset"].tertiary, .button.tertiary, [role="button"].tertiary {
- --button-back-color: #308732;
- --button-fore-color: #f8f8f8; }
- button.tertiary:hover, button.tertiary:focus, [type="button"].tertiary:hover, [type="button"].tertiary:focus, [type="submit"].tertiary:hover, [type="submit"].tertiary:focus, [type="reset"].tertiary:hover, [type="reset"].tertiary:focus, .button.tertiary:hover, .button.tertiary:focus, [role="button"].tertiary:hover, [role="button"].tertiary:focus {
- --button-hover-back-color: #277529; }
-
-button.inverse, [type="button"].inverse, [type="submit"].inverse, [type="reset"].inverse, .button.inverse, [role="button"].inverse {
- --button-back-color: #212121;
- --button-fore-color: #f8f8f8; }
- button.inverse:hover, button.inverse:focus, [type="button"].inverse:hover, [type="button"].inverse:focus, [type="submit"].inverse:hover, [type="submit"].inverse:focus, [type="reset"].inverse:hover, [type="reset"].inverse:focus, .button.inverse:hover, .button.inverse:focus, [role="button"].inverse:hover, [role="button"].inverse:focus {
- --button-hover-back-color: #111; }
-
-button.small, [type="button"].small, [type="submit"].small, [type="reset"].small, .button.small, [role="button"].small {
- padding: calc(0.5 * var(--universal-padding)) calc(0.75 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-button.large, [type="button"].large, [type="submit"].large, [type="reset"].large, .button.large, [role="button"].large {
- padding: calc(1.5 * var(--universal-padding)) calc(2 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-/*
- Definitions for navigation elements.
-*/
-/* Navigation module CSS variable definitions */
-:root {
- --header-back-color: #03234b;
- --header-hover-back-color: #ffd200;
- --header-fore-color: #ffffff;
- --header-border-color: #3cb4e6;
- --nav-back-color: #ffffff;
- --nav-hover-back-color: #ffe97f;
- --nav-fore-color: #e6007e;
- --nav-border-color: #3cb4e6;
- --nav-link-color: #3cb4e6;
- --footer-fore-color: #ffffff;
- --footer-back-color: #03234b;
- --footer-border-color: #3cb4e6;
- --footer-link-color: #3cb4e6;
- --drawer-back-color: #ffffff;
- --drawer-hover-back-color: #ffe97f;
- --drawer-border-color: #3cb4e6;
- --drawer-close-color: #e6007e; }
-
-header {
- height: 2.75rem;
- background: var(--header-back-color);
- color: var(--header-fore-color);
- border-bottom: 0.0714285714rem solid var(--header-border-color);
- padding: calc(var(--universal-padding) / 4) 0;
- white-space: nowrap;
- overflow-x: auto;
- overflow-y: hidden; }
- header.row {
- box-sizing: content-box; }
- header .logo {
- color: var(--header-fore-color);
- font-size: 1.75rem;
- padding: var(--universal-padding) calc(2 * var(--universal-padding));
- text-decoration: none; }
- header button, header [type="button"], header .button, header [role="button"] {
- box-sizing: border-box;
- position: relative;
- top: calc(0rem - var(--universal-padding) / 4);
- height: calc(3.1875rem + var(--universal-padding) / 2);
- background: var(--header-back-color);
- line-height: calc(3.1875rem - var(--universal-padding) * 1.5);
- text-align: center;
- color: var(--header-fore-color);
- border: 0;
- border-radius: 0;
- margin: 0;
- text-transform: uppercase; }
- header button:hover, header button:focus, header [type="button"]:hover, header [type="button"]:focus, header .button:hover, header .button:focus, header [role="button"]:hover, header [role="button"]:focus {
- background: var(--header-hover-back-color); }
-
-nav {
- background: var(--nav-back-color);
- color: var(--nav-fore-color);
- border: 0.0714285714rem solid var(--nav-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- nav * {
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
- nav a, nav a:visited {
- display: block;
- color: var(--nav-link-color);
- border-radius: var(--universal-border-radius);
- transition: background 0.3s; }
- nav a:hover, nav a:focus, nav a:visited:hover, nav a:visited:focus {
- text-decoration: none;
- background: var(--nav-hover-back-color); }
- nav .sublink-1 {
- position: relative;
- margin-left: calc(2 * var(--universal-padding)); }
- nav .sublink-1:before {
- position: absolute;
- left: calc(var(--universal-padding) - 1 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
- nav .sublink-2 {
- position: relative;
- margin-left: calc(4 * var(--universal-padding)); }
- nav .sublink-2:before {
- position: absolute;
- left: calc(var(--universal-padding) - 3 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
-
-footer {
- background: var(--footer-back-color);
- color: var(--footer-fore-color);
- border-top: 0.0714285714rem solid var(--footer-border-color);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding);
- font-size: 0.875rem; }
- footer a, footer a:visited {
- color: var(--footer-link-color); }
-
-header.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- top: 0; }
-
-footer.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- bottom: 0; }
-
-.drawer-toggle:before {
- display: inline-block;
- position: relative;
- vertical-align: bottom;
- content: '\00a0\2261\00a0';
- font-family: sans-serif;
- font-size: 1.5em; }
-@media screen and (min-width: 500px) {
- .drawer-toggle:not(.persistent) {
- display: none; } }
-
-[type="checkbox"].drawer {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].drawer + * {
- display: block;
- box-sizing: border-box;
- position: fixed;
- top: 0;
- width: 320px;
- height: 100vh;
- overflow-y: auto;
- background: var(--drawer-back-color);
- border: 0.0714285714rem solid var(--drawer-border-color);
- border-radius: 0;
- margin: 0;
- z-index: 1110;
- right: -320px;
- transition: right 0.3s; }
- [type="checkbox"].drawer + * .drawer-close {
- position: absolute;
- top: var(--universal-margin);
- right: var(--universal-margin);
- z-index: 1111;
- width: 2rem;
- height: 2rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].drawer + * .drawer-close:before {
- display: block;
- content: '\00D7';
- color: var(--drawer-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 2rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].drawer + * .drawer-close:hover, [type="checkbox"].drawer + * .drawer-close:focus {
- background: var(--drawer-hover-back-color); }
- @media screen and (max-width: 320px) {
- [type="checkbox"].drawer + * {
- width: 100%; } }
- [type="checkbox"].drawer:checked + * {
- right: 0; }
- @media screen and (min-width: 500px) {
- [type="checkbox"].drawer:not(.persistent) + * {
- position: static;
- height: 100%;
- z-index: 1100; }
- [type="checkbox"].drawer:not(.persistent) + * .drawer-close {
- display: none; } }
-
-/*
- Definitions for the responsive table component.
-*/
-/* Table module CSS variable definitions. */
-:root {
- --table-border-color: #03234b;
- --table-border-separator-color: #03234b;
- --table-head-back-color: #03234b;
- --table-head-fore-color: #ffffff;
- --table-body-back-color: #ffffff;
- --table-body-fore-color: #03234b;
- --table-body-alt-back-color: #f4f4f4; }
-
-table {
- border-collapse: separate;
- border-spacing: 0;
- margin: 0;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- padding: var(--universal-padding);
- padding-top: 0; }
- table caption {
- font-size: 1rem;
- margin: calc(2 * var(--universal-margin)) 0;
- max-width: 100%;
- flex: 0 0 100%; }
- table thead, table tbody {
- display: flex;
- flex-flow: row wrap;
- border: 0.0714285714rem solid var(--table-border-color); }
- table thead {
- z-index: 999;
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0;
- border-bottom: 0.0714285714rem solid var(--table-border-separator-color); }
- table tbody {
- border-top: 0;
- margin-top: calc(0 - var(--universal-margin));
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- table tr {
- display: flex;
- padding: 0; }
- table th, table td {
- padding: calc(0.5 * var(--universal-padding));
- font-size: 0.9rem; }
- table th {
- text-align: left;
- background: var(--table-head-back-color);
- color: var(--table-head-fore-color); }
- table td {
- background: var(--table-body-back-color);
- color: var(--table-body-fore-color);
- border-top: 0.0714285714rem solid var(--table-border-color); }
-
-table:not(.horizontal) {
- overflow: auto;
- max-height: 100%; }
- table:not(.horizontal) thead, table:not(.horizontal) tbody {
- max-width: 100%;
- flex: 0 0 100%; }
- table:not(.horizontal) tr {
- flex-flow: row wrap;
- flex: 0 0 100%; }
- table:not(.horizontal) th, table:not(.horizontal) td {
- flex: 1 0 0%;
- overflow: hidden;
- text-overflow: ellipsis; }
- table:not(.horizontal) thead {
- position: sticky;
- top: 0; }
- table:not(.horizontal) tbody tr:first-child td {
- border-top: 0; }
-
-table.horizontal {
- border: 0; }
- table.horizontal thead, table.horizontal tbody {
- border: 0;
- flex: .2 0 0;
- flex-flow: row nowrap; }
- table.horizontal tbody {
- overflow: auto;
- justify-content: space-between;
- flex: .8 0 0;
- margin-left: 0;
- padding-bottom: calc(var(--universal-padding) / 4); }
- table.horizontal tr {
- flex-direction: column;
- flex: 1 0 auto; }
- table.horizontal th, table.horizontal td {
- width: auto;
- border: 0;
- border-bottom: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal th:not(:first-child), table.horizontal td:not(:first-child) {
- border-top: 0; }
- table.horizontal th {
- text-align: right;
- border-left: 0.0714285714rem solid var(--table-border-color);
- border-right: 0.0714285714rem solid var(--table-border-separator-color); }
- table.horizontal thead tr:first-child {
- padding-left: 0; }
- table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td {
- border-right: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td:first-child {
- border-top-right-radius: 0.25rem; }
- table.horizontal tbody tr:last-child td:last-child {
- border-bottom-right-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:first-child {
- border-top-left-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:last-child {
- border-bottom-left-radius: 0.25rem; }
-
-@media screen and (max-width: 499px) {
- table, table.horizontal {
- border-collapse: collapse;
- border: 0;
- width: 100%;
- display: table; }
- table thead, table th, table.horizontal thead, table.horizontal th {
- border: 0;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- table tbody, table.horizontal tbody {
- border: 0;
- display: table-row-group; }
- table tr, table.horizontal tr {
- display: block;
- border: 0.0714285714rem solid var(--table-border-color);
- border-radius: var(--universal-border-radius);
- background: #ffffff;
- padding: var(--universal-padding);
- margin: var(--universal-margin);
- margin-bottom: calc(1 * var(--universal-margin)); }
- table th, table td, table.horizontal th, table.horizontal td {
- width: auto; }
- table td, table.horizontal td {
- display: block;
- border: 0;
- text-align: right; }
- table td:before, table.horizontal td:before {
- content: attr(data-label);
- float: left;
- font-weight: 600; }
- table th:first-child, table td:first-child, table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0; }
- table tbody tr:last-child td, table.horizontal tbody tr:last-child td {
- border-right: 0; } }
-table tr:nth-of-type(2n) > td {
- background: var(--table-body-alt-back-color); }
-
-@media screen and (max-width: 500px) {
- table tr:nth-of-type(2n) {
- background: var(--table-body-alt-back-color); } }
-:root {
- --table-body-hover-back-color: #90caf9; }
-
-table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); }
-
-@media screen and (max-width: 500px) {
- table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); } }
-/*
- Definitions for contextual background elements, toasts and tooltips.
-*/
-/* Contextual module CSS variable definitions */
-:root {
- --mark-back-color: #3cb4e6;
- --mark-fore-color: #ffffff; }
-
-mark {
- background: var(--mark-back-color);
- color: var(--mark-fore-color);
- font-size: 0.95em;
- line-height: 1em;
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) var(--universal-padding); }
- mark.inline-block {
- display: inline-block;
- font-size: 1em;
- line-height: 1.4;
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-:root {
- --toast-back-color: #424242;
- --toast-fore-color: #fafafa; }
-
-.toast {
- position: fixed;
- bottom: calc(var(--universal-margin) * 3);
- left: 50%;
- transform: translate(-50%, -50%);
- z-index: 1111;
- color: var(--toast-fore-color);
- background: var(--toast-back-color);
- border-radius: calc(var(--universal-border-radius) * 16);
- padding: var(--universal-padding) calc(var(--universal-padding) * 3); }
-
-:root {
- --tooltip-back-color: #212121;
- --tooltip-fore-color: #fafafa; }
-
-.tooltip {
- position: relative;
- display: inline-block; }
- .tooltip:before, .tooltip:after {
- position: absolute;
- opacity: 0;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: all 0.3s;
- z-index: 1010;
- left: 50%; }
- .tooltip:not(.bottom):before, .tooltip:not(.bottom):after {
- bottom: 75%; }
- .tooltip.bottom:before, .tooltip.bottom:after {
- top: 75%; }
- .tooltip:hover:before, .tooltip:hover:after, .tooltip:focus:before, .tooltip:focus:after {
- opacity: 1;
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%); }
- .tooltip:before {
- content: '';
- background: transparent;
- border: var(--universal-margin) solid transparent;
- left: calc(50% - var(--universal-margin)); }
- .tooltip:not(.bottom):before {
- border-top-color: #212121; }
- .tooltip.bottom:before {
- border-bottom-color: #212121; }
- .tooltip:after {
- content: attr(aria-label);
- color: var(--tooltip-fore-color);
- background: var(--tooltip-back-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- white-space: nowrap;
- transform: translateX(-50%); }
- .tooltip:not(.bottom):after {
- margin-bottom: calc(2 * var(--universal-margin)); }
- .tooltip.bottom:after {
- margin-top: calc(2 * var(--universal-margin)); }
-
-:root {
- --modal-overlay-color: rgba(0, 0, 0, 0.45);
- --modal-close-color: #e6007e;
- --modal-close-hover-color: #ffe97f; }
-
-[type="checkbox"].modal {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].modal + div {
- position: fixed;
- top: 0;
- left: 0;
- display: none;
- width: 100vw;
- height: 100vh;
- background: var(--modal-overlay-color); }
- [type="checkbox"].modal + div .card {
- margin: 0 auto;
- max-height: 50vh;
- overflow: auto; }
- [type="checkbox"].modal + div .card .modal-close {
- position: absolute;
- top: 0;
- right: 0;
- width: 1.75rem;
- height: 1.75rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].modal + div .card .modal-close:before {
- display: block;
- content: '\00D7';
- color: var(--modal-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 1.75rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].modal + div .card .modal-close:hover, [type="checkbox"].modal + div .card .modal-close:focus {
- background: var(--modal-close-hover-color); }
- [type="checkbox"].modal:checked + div {
- display: flex;
- flex: 0 1 auto;
- z-index: 1200; }
- [type="checkbox"].modal:checked + div .card .modal-close {
- z-index: 1211; }
-
-:root {
- --collapse-label-back-color: #03234b;
- --collapse-label-fore-color: #ffffff;
- --collapse-label-hover-back-color: #3cb4e6;
- --collapse-selected-label-back-color: #3cb4e6;
- --collapse-border-color: var(--collapse-label-back-color);
- --collapse-selected-border-color: #ceecf8;
- --collapse-content-back-color: #ffffff;
- --collapse-selected-label-border-color: #3cb4e6; }
-
-.collapse {
- width: calc(100% - 2 * var(--universal-margin));
- opacity: 1;
- display: flex;
- flex-direction: column;
- margin: var(--universal-margin);
- border-radius: var(--universal-border-radius); }
- .collapse > [type="radio"], .collapse > [type="checkbox"] {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- .collapse > label {
- flex-grow: 1;
- display: inline-block;
- height: 1.25rem;
- cursor: pointer;
- transition: background 0.2s;
- color: var(--collapse-label-fore-color);
- background: var(--collapse-label-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- padding: calc(1.25 * var(--universal-padding)); }
- .collapse > label:hover, .collapse > label:focus {
- background: var(--collapse-label-hover-back-color); }
- .collapse > label + div {
- flex-basis: auto;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: max-height 0.3s;
- max-height: 1px; }
- .collapse > :checked + label {
- background: var(--collapse-selected-label-back-color);
- border-color: var(--collapse-selected-label-border-color); }
- .collapse > :checked + label + div {
- box-sizing: border-box;
- position: relative;
- width: 100%;
- height: auto;
- overflow: auto;
- margin: 0;
- background: var(--collapse-content-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- border-top: 0;
- padding: var(--universal-padding);
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%);
- max-height: 100%; }
- .collapse > label:not(:first-of-type) {
- border-top: 0; }
- .collapse > label:first-of-type {
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0; }
- .collapse > label:last-of-type:not(:first-of-type) {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- .collapse > label:last-of-type:first-of-type {
- border-radius: var(--universal-border-radius); }
- .collapse > :checked:last-of-type:not(:first-of-type) + label {
- border-radius: 0; }
- .collapse > :checked:last-of-type + label + div {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
-
-/*
- Custom elements for contextual background elements, toasts and tooltips.
-*/
-mark.tertiary {
- --mark-back-color: #3cb4e6; }
-
-mark.tag {
- padding: calc(var(--universal-padding)/2) var(--universal-padding);
- border-radius: 1em; }
-
-/*
- Definitions for progress elements and spinners.
-*/
-/* Progress module CSS variable definitions */
-:root {
- --progress-back-color: #3cb4e6;
- --progress-fore-color: #555; }
-
-progress {
- display: block;
- vertical-align: baseline;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- height: 0.75rem;
- width: calc(100% - 2 * var(--universal-margin));
- margin: var(--universal-margin);
- border: 0;
- border-radius: calc(2 * var(--universal-border-radius));
- background: var(--progress-back-color);
- color: var(--progress-fore-color); }
- progress::-webkit-progress-value {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress::-webkit-progress-bar {
- background: var(--progress-back-color); }
- progress::-moz-progress-bar {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-webkit-progress-value {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-moz-progress-bar {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress.inline {
- display: inline-block;
- vertical-align: middle;
- width: 60%; }
-
-:root {
- --spinner-back-color: #ddd;
- --spinner-fore-color: #555; }
-
-@keyframes spinner-donut-anim {
- 0% {
- transform: rotate(0deg); }
- 100% {
- transform: rotate(360deg); } }
-.spinner {
- display: inline-block;
- margin: var(--universal-margin);
- border: 0.25rem solid var(--spinner-back-color);
- border-left: 0.25rem solid var(--spinner-fore-color);
- border-radius: 50%;
- width: 1.25rem;
- height: 1.25rem;
- animation: spinner-donut-anim 1.2s linear infinite; }
-
-/*
- Custom elements for progress bars and spinners.
-*/
-progress.primary {
- --progress-fore-color: #1976d2; }
-
-progress.secondary {
- --progress-fore-color: #d32f2f; }
-
-progress.tertiary {
- --progress-fore-color: #308732; }
-
-.spinner.primary {
- --spinner-fore-color: #1976d2; }
-
-.spinner.secondary {
- --spinner-fore-color: #d32f2f; }
-
-.spinner.tertiary {
- --spinner-fore-color: #308732; }
-
-/*
- Definitions for icons - powered by Feather (https://feathericons.com/).
-*/
-span[class^='icon-'] {
- display: inline-block;
- height: 1em;
- width: 1em;
- vertical-align: -0.125em;
- background-size: contain;
- margin: 0 calc(var(--universal-margin) / 4); }
- span[class^='icon-'].secondary {
- -webkit-filter: invert(25%);
- filter: invert(25%); }
- span[class^='icon-'].inverse {
- -webkit-filter: invert(100%);
- filter: invert(100%); }
-
-span.icon-alert {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-bookmark {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-calendar {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-credit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-edit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); }
-span.icon-link {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-help {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-home {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-info {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-lock {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-mail {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-location {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-phone {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-rss {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-search {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-settings {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-share {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-cart {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-upload {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-user {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E"); }
-
-/*
- Definitions for STMicroelectronics icons (https://brandportal.st.com/document/26).
-*/
-span.icon-st-update {
- background-image: url("Update.svg"); }
-span.icon-st-add {
- background-image: url("Add button.svg"); }
-
-/*
- Definitions for utilities and helper classes.
-*/
-/* Utility module CSS variable definitions */
-:root {
- --generic-border-color: rgba(0, 0, 0, 0.3);
- --generic-box-shadow: 0 0.2857142857rem 0.2857142857rem 0 rgba(0, 0, 0, 0.125), 0 0.1428571429rem 0.1428571429rem -0.1428571429rem rgba(0, 0, 0, 0.125); }
-
-.hidden {
- display: none !important; }
-
-.visually-hidden {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; }
-
-.bordered {
- border: 0.0714285714rem solid var(--generic-border-color) !important; }
-
-.rounded {
- border-radius: var(--universal-border-radius) !important; }
-
-.circular {
- border-radius: 50% !important; }
-
-.shadowed {
- box-shadow: var(--generic-box-shadow) !important; }
-
-.responsive-margin {
- margin: calc(var(--universal-margin) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-margin {
- margin: calc(var(--universal-margin) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-margin {
- margin: var(--universal-margin) !important; } }
-
-.responsive-padding {
- padding: calc(var(--universal-padding) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-padding {
- padding: calc(var(--universal-padding) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-padding {
- padding: var(--universal-padding) !important; } }
-
-@media screen and (max-width: 499px) {
- .hidden-sm {
- display: none !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .hidden-md {
- display: none !important; } }
-@media screen and (min-width: 1280px) {
- .hidden-lg {
- display: none !important; } }
-@media screen and (max-width: 499px) {
- .visually-hidden-sm {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .visually-hidden-md {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 1280px) {
- .visually-hidden-lg {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-
-/*# sourceMappingURL=mini-custom.css.map */
-
-img[alt="ST logo"] { display: block; margin: auto; width: 75%; max-width: 250px; min-width: 71px; }
-img[alt="Cube logo"] { float: right; width: 30%; max-width: 10rem; min-width: 8rem; padding-right: 1rem;}
-
-.figure {
- display: block;
- margin-left: auto;
- margin-right: auto;
- text-align: center;
-}
\ No newline at end of file
diff --git a/Drivers/BSP/STM324xG_EVAL/_htmresc/st_logo_2020.png b/Drivers/BSP/STM324xG_EVAL/_htmresc/st_logo_2020.png
deleted file mode 100644
index d6cebb5ac7..0000000000
Binary files a/Drivers/BSP/STM324xG_EVAL/_htmresc/st_logo_2020.png and /dev/null differ
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval.c b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval.c
deleted file mode 100644
index 7d35d4efed..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval.c
+++ /dev/null
@@ -1,1063 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval.c
- * @author MCD Application Team
- * @brief This file provides a set of firmware functions to manage LEDs,
- * push-buttons and COM ports available on STM324xG-EVAL evaluation
- * board(MB786) RevB from STMicroelectronics.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info: ------------------------------------------------------------------
- User NOTE
-
- This driver requires the stm324xG_eval_io.c driver to manage the joystick
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval.h"
-#include "stm324xg_eval_io.h"
-
-/** @defgroup BSP BSP
- * @{
- */
-
-/** @defgroup STM324xG_EVAL STM324xG EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_LOW_LEVEL STM324xG EVAL LOW LEVEL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_LOW_LEVEL_Private_TypesDefinitions STM324xG EVAL LOW LEVEL Private TypesDefinitions
- * @{
- */
-typedef struct
-{
- __IO uint16_t REG;
- __IO uint16_t RAM;
-}LCD_CONTROLLER_TypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_LOW_LEVEL_Private_Defines STM324xG EVAL LOW LEVEL Private Defines
- * @{
- */
-
-/**
- * @brief STM324xG EVAL BSP Driver version number V3.0.4
- */
-#define __STM324xG_EVAL_BSP_VERSION_MAIN (0x03) /*!< [31:24] main version */
-#define __STM324xG_EVAL_BSP_VERSION_SUB1 (0x00) /*!< [23:16] sub1 version */
-#define __STM324xG_EVAL_BSP_VERSION_SUB2 (0x04) /*!< [15:8] sub2 version */
-#define __STM324xG_EVAL_BSP_VERSION_RC (0x00) /*!< [7:0] release candidate */
-#define __STM324xG_EVAL_BSP_VERSION ((__STM324xG_EVAL_BSP_VERSION_MAIN << 24)\
- |(__STM324xG_EVAL_BSP_VERSION_SUB1 << 16)\
- |(__STM324xG_EVAL_BSP_VERSION_SUB2 << 8 )\
- |(__STM324xG_EVAL_BSP_VERSION_RC))
-
-#define FMC_BANK3_BASE ((uint32_t)(0x60000000 | 0x08000000))
-#define FMC_BANK3 ((LCD_CONTROLLER_TypeDef *) FMC_BANK3_BASE)
-
-#define I2C_TIMEOUT 100 /*Instance = COM_USART[COM];
- HAL_UART_Init(huart);
-}
-
-/**
- * @brief Configures joystick GPIO and EXTI modes.
- * @param Joy_Mode: Button mode.
- * This parameter can be one of the following values:
- * @arg JOY_MODE_GPIO: Joystick pins will be used as simple IOs
- * @arg JOY_MODE_EXTI: Joystick pins will be connected to EXTI line
- * with interrupt generation capability
- * @retval IO_OK: if all initializations are OK. Other value if error.
- */
-uint8_t BSP_JOY_Init(JOYMode_TypeDef Joy_Mode)
-{
- uint8_t ret = 0;
-
- /* Initialize the IO functionalities */
- ret = BSP_IO_Init();
-
- /* Configure joystick pins in IT mode */
- if(Joy_Mode == JOY_MODE_EXTI)
- {
- /* Configure joystick pins in IT mode */
- BSP_IO_ConfigPin(JOY_ALL_PINS, IO_MODE_IT_FALLING_EDGE);
- }
-
- return ret;
-}
-
-/**
- * @brief Returns the current joystick status.
- * @retval Code of the joystick key pressed
- * This code can be one of the following values:
- * @arg JOY_NONE
- * @arg JOY_SEL
- * @arg JOY_DOWN
- * @arg JOY_LEFT
- * @arg JOY_RIGHT
- * @arg JOY_UP
- */
-JOYState_TypeDef BSP_JOY_GetState(void)
-{
- uint8_t tmp = 0;
-
- /* Read the status joystick pins */
- tmp = (uint8_t)BSP_IO_ReadPin(JOY_ALL_PINS);
-
- /* Check the pressed keys */
- if((tmp & JOY_NONE_PIN) == JOY_NONE)
- {
- return(JOYState_TypeDef) JOY_NONE;
- }
- else if(!(tmp & JOY_SEL_PIN))
- {
- return(JOYState_TypeDef) JOY_SEL;
- }
- else if(!(tmp & JOY_DOWN_PIN))
- {
- return(JOYState_TypeDef) JOY_DOWN;
- }
- else if(!(tmp & JOY_LEFT_PIN))
- {
- return(JOYState_TypeDef) JOY_LEFT;
- }
- else if(!(tmp & JOY_RIGHT_PIN))
- {
- return(JOYState_TypeDef) JOY_RIGHT;
- }
- else if(!(tmp & JOY_UP_PIN))
- {
- return(JOYState_TypeDef) JOY_UP;
- }
- else
- {
- return(JOYState_TypeDef) JOY_NONE;
- }
-}
-
-/*******************************************************************************
- BUS OPERATIONS
-*******************************************************************************/
-
-/**************************** I2C Routines ************************************/
-
-/**
- * @brief Initializes I2C MSP.
- */
-static void I2Cx_MspInit(void)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /*** Configure the GPIOs ***/
- /* Enable GPIO clock */
- EVAL_I2Cx_SCL_SDA_GPIO_CLK_ENABLE();
-
- /* Configure I2C Tx as alternate function */
- GPIO_InitStruct.Pin = EVAL_I2Cx_SCL_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Alternate = EVAL_I2Cx_SCL_SDA_AF;
- HAL_GPIO_Init(EVAL_I2Cx_SCL_SDA_GPIO_PORT, &GPIO_InitStruct);
-
- /* Configure I2C Rx as alternate function */
- GPIO_InitStruct.Pin = EVAL_I2Cx_SDA_PIN;
- HAL_GPIO_Init(EVAL_I2Cx_SCL_SDA_GPIO_PORT, &GPIO_InitStruct);
-
- /*** Configure the I2C peripheral ***/
- /* Enable I2C clock */
- EVAL_I2Cx_CLK_ENABLE();
-
- /* Force the I2C peripheral clock reset */
- EVAL_I2Cx_FORCE_RESET();
-
- /* Release the I2C peripheral clock reset */
- EVAL_I2Cx_RELEASE_RESET();
-
- /* Set priority and enable I2Cx event Interrupt */
- HAL_NVIC_SetPriority(EVAL_I2Cx_EV_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(EVAL_I2Cx_EV_IRQn);
-
- /* Set priority and enable I2Cx error Interrupt */
- HAL_NVIC_SetPriority(EVAL_I2Cx_ER_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(EVAL_I2Cx_ER_IRQn);
-}
-
-/**
- * @brief Initializes I2C HAL.
- */
-static void I2Cx_Init(void)
-{
- if(HAL_I2C_GetState(&heval_I2c) == HAL_I2C_STATE_RESET)
- {
- heval_I2c.Instance = EVAL_I2Cx;
- heval_I2c.Init.ClockSpeed = BSP_I2C_SPEED;
- heval_I2c.Init.DutyCycle = I2C_DUTYCYCLE_2;
- heval_I2c.Init.OwnAddress1 = 0;
- heval_I2c.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
- heval_I2c.Init.DualAddressMode = I2C_DUALADDRESS_DISABLED;
- heval_I2c.Init.OwnAddress2 = 0;
- heval_I2c.Init.GeneralCallMode = I2C_GENERALCALL_DISABLED;
- heval_I2c.Init.NoStretchMode = I2C_NOSTRETCH_DISABLED;
-
- /* Init the I2C */
- I2Cx_MspInit();
- HAL_I2C_Init(&heval_I2c);
- }
-}
-
-/**
- * @brief Configures I2C Interrupt.
- */
-static void I2Cx_ITConfig(void)
-{
- static uint8_t I2C_IT_Enabled = 0;
- GPIO_InitTypeDef GPIO_InitStruct;
-
- if(I2C_IT_Enabled == 0)
- {
- I2C_IT_Enabled = 1;
-
- /* Enable the GPIO EXTI clock */
- __GPIOI_CLK_ENABLE();
- __SYSCFG_CLK_ENABLE();
-
- GPIO_InitStruct.Pin = GPIO_PIN_2;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
- HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
-
- /* Set priority and Enable GPIO EXTI Interrupt */
- HAL_NVIC_SetPriority((IRQn_Type)(EXTI2_IRQn), 0x0F, 0);
- HAL_NVIC_EnableIRQ((IRQn_Type)(EXTI2_IRQn));
- }
-}
-
-/**
- * @brief Reads a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @retval Data to be read
- */
-static uint8_t I2Cx_Read(uint8_t Addr, uint8_t Reg)
-{
- HAL_StatusTypeDef status = HAL_OK;
- uint8_t Value = 0;
-
- status = HAL_I2C_Mem_Read(&heval_I2c, Addr, Reg, I2C_MEMADD_SIZE_8BIT, &Value, 1, I2C_TIMEOUT);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* Execute user timeout callback */
- I2Cx_Error(Addr);
- }
-
- return Value;
-}
-
-/**
- * @brief Writes a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param Value: Data to be written
- */
-static void I2Cx_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- HAL_StatusTypeDef status = HAL_OK;
-
- status = HAL_I2C_Mem_Write(&heval_I2c, Addr, (uint16_t)Reg, I2C_MEMADD_SIZE_8BIT, &Value, 1, I2C_TIMEOUT);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* I2C error occurred */
- I2Cx_Error(Addr);
- }
-}
-
-/**
- * @brief Reads multiple data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param MemAddress Internal memory address
- * @param Buffer: Pointer to data buffer
- * @param Length: Length of the data
- * @retval Number of read data
- */
-static HAL_StatusTypeDef I2Cx_ReadMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddress, uint8_t *Buffer, uint16_t Length)
-{
- HAL_StatusTypeDef status = HAL_OK;
-
- status = HAL_I2C_Mem_Read(&heval_I2c, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, I2C_TIMEOUT);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* I2C error occurred */
- I2Cx_Error(Addr);
- }
- return status;
-}
-
-/**
- * @brief Write a value in a register of the device through BUS in using DMA mode
- * @param Addr: Device address on BUS Bus.
- * @param Reg: The target register address to write
- * @param MemAddress Internal memory address
- * @param Buffer: The target register value to be written
- * @param Length: buffer size to be written
- * @retval HAL status
- */
-static HAL_StatusTypeDef I2Cx_WriteMultiple(uint8_t Addr, uint16_t Reg, uint16_t MemAddress, uint8_t *Buffer, uint16_t Length)
-{
- HAL_StatusTypeDef status = HAL_OK;
-
- status = HAL_I2C_Mem_Write(&heval_I2c, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, I2C_TIMEOUT);
-
- /* Check the communication status */
- if(status != HAL_OK)
- {
- /* Re-Initiaize the I2C Bus */
- I2Cx_Error(Addr);
- }
- return status;
-}
-
-/**
- * @brief Checks if target device is ready for communication.
- * @note This function is used with Memory devices
- * @param DevAddress: Target device address
- * @param Trials: Number of trials
- * @retval HAL status
- */
-static HAL_StatusTypeDef I2Cx_IsDeviceReady(uint16_t DevAddress, uint32_t Trials)
-{
- return (HAL_I2C_IsDeviceReady(&heval_I2c, DevAddress, Trials, I2C_TIMEOUT));
-}
-
-/**
- * @brief Manages error callback by re-initializing I2C.
- * @param Addr: I2C Address
- */
-static void I2Cx_Error(uint8_t Addr)
-{
- /* De-initialize the IOE communication BUS */
- HAL_I2C_DeInit(&heval_I2c);
-
- /* Re-Initiaize the IOE communication BUS */
- I2Cx_Init();
-}
-
-/*************************** FSMC Routines ************************************/
-/**
- * @brief Initializes FSMC_BANK3 MSP.
- */
-static void FSMC_BANK3_MspInit(void)
-{
- GPIO_InitTypeDef GPIO_Init_Structure;
-
- /* Enable FSMC clock */
- __FSMC_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __GPIOD_CLK_ENABLE();
- __GPIOE_CLK_ENABLE();
- __GPIOF_CLK_ENABLE();
- __GPIOG_CLK_ENABLE();
-
- /* Common GPIO configuration */
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF12_FSMC;
-
- /* GPIOD configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_8 |\
- GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 |\
- GPIO_PIN_14 | GPIO_PIN_15;
-
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
-
- /* GPIOE configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3| GPIO_PIN_4 | GPIO_PIN_7 |\
- GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 |\
- GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOE, &GPIO_Init_Structure);
-
- /* GPIOF configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOF, &GPIO_Init_Structure);
-
- /* GPIOG configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_10;
-
- HAL_GPIO_Init(GPIOG, &GPIO_Init_Structure);
-}
-
-/**
- * @brief Initializes LCD IO.
- */
-static void FSMC_BANK3_Init(void)
-{
- SRAM_HandleTypeDef hsram;
- FSMC_NORSRAM_TimingTypeDef SRAM_Timing;
-
- /*** Configure the SRAM Bank 3 ***/
- /* Configure IPs */
- hsram.Instance = FMC_NORSRAM_DEVICE;
- hsram.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
-
- SRAM_Timing.AddressSetupTime = 5;
- SRAM_Timing.AddressHoldTime = 1;
- SRAM_Timing.DataSetupTime = 9;
- SRAM_Timing.BusTurnAroundDuration = 0;
- SRAM_Timing.CLKDivision = 2;
- SRAM_Timing.DataLatency = 2;
- SRAM_Timing.AccessMode = FSMC_ACCESS_MODE_A;
-
- hsram.Init.NSBank = FSMC_NORSRAM_BANK3;
- hsram.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE;
- hsram.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM;
- hsram.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16;
- hsram.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE;
- hsram.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
- hsram.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
- hsram.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
- hsram.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;
- hsram.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
- hsram.Init.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE;
- hsram.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE;
- hsram.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE;
- hsram.Init.PageSize = FSMC_PAGE_SIZE_NONE;
-
- /* Initialize the SRAM controller */
- FSMC_BANK3_MspInit();
- HAL_SRAM_Init(&hsram, &SRAM_Timing, &SRAM_Timing);
-}
-
-/**
- * @brief Writes register value.
- * @param Data: Data to be written
- */
-static void FSMC_BANK3_WriteData(uint16_t Data)
-{
- /* Write 16-bit Reg */
- FMC_BANK3->RAM = Data;
-}
-
-/**
- * @brief Writes register address.
- * @param Reg: Register to be written
- */
-static void FSMC_BANK3_WriteReg(uint8_t Reg)
-{
- /* Write 16-bit Index, then write register */
- FMC_BANK3->REG = Reg;
-}
-
-/**
- * @brief Reads register value.
- * @retval Read value
- */
-static uint16_t FSMC_BANK3_ReadData(void)
-{
- return FMC_BANK3->RAM;
-}
-
-/*******************************************************************************
- LINK OPERATIONS
-*******************************************************************************/
-
-/***************************** LINK IOE ***************************************/
-
-/**
- * @brief Initializes IOE low level.
- */
-void IOE_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief Configures IOE low level Interrupt.
- */
-void IOE_ITConfig(void)
-{
- I2Cx_ITConfig();
-}
-
-/**
- * @brief IOE writes single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param Value: Data to be written
- */
-void IOE_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- I2Cx_Write(Addr, Reg, Value);
-}
-
-/**
- * @brief IOE reads single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @retval Read data
- */
-uint8_t IOE_Read(uint8_t Addr, uint8_t Reg)
-{
- return I2Cx_Read(Addr, Reg);
-}
-
-/**
- * @brief IOE reads multiple data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param Buffer: Pointer to data buffer
- * @param Length: Length of the data
- * @retval Number of read data
- */
-uint16_t IOE_ReadMultiple(uint8_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length)
-{
- return I2Cx_ReadMultiple(Addr, Reg, I2C_MEMADD_SIZE_8BIT, Buffer, Length);
-}
-
-/**
- * @brief IOE delay.
- * @param Delay: Delay in ms
- */
-void IOE_Delay(uint32_t Delay)
-{
- HAL_Delay(Delay);
-}
-
-/********************************* LINK LCD ***********************************/
-
-/**
- * @brief Initializes LCD low level.
- */
-void LCD_IO_Init(void)
-{
- if(Is_LCD_IO_Initialized == 0)
- {
- Is_LCD_IO_Initialized = 1;
- FSMC_BANK3_Init();
- }
-}
-
-/**
- * @brief Writes data on LCD data register.
- * @param Data: Data to be written
- */
-void LCD_IO_WriteData(uint16_t Data)
-{
- /* Write 16-bit Reg */
- FSMC_BANK3_WriteData(Data);
-}
-
-/**
- * @brief Write register value.
- * @param pData Pointer on the register value
- * @param Size Size of byte to transmit to the register
- */
-void LCD_IO_WriteMultipleData(uint8_t *pData, uint32_t Size)
-{
- uint32_t counter;
- uint16_t *ptr = (uint16_t *) pData;
-
- for (counter = 0; counter < Size; counter+=2)
- {
- /* Write 16-bit Reg */
- FSMC_BANK3_WriteData(*ptr);
- ptr++;
- }
-}
-
-/**
- * @brief Writes register on LCD register.
- * @param Reg: Register to be written
- */
-void LCD_IO_WriteReg(uint8_t Reg)
-{
- /* Write 16-bit Index, then Write Reg */
- FSMC_BANK3_WriteReg(Reg);
-}
-
-/**
- * @brief Reads data from LCD data register.
- * @param Reg: Register to be read
- * @retval Read data.
- */
-uint16_t LCD_IO_ReadData(uint16_t Reg)
-{
- FSMC_BANK3_WriteReg(Reg);
-
- /* Read 16-bit Reg */
- return FSMC_BANK3_ReadData();
-}
-
-/********************************* LINK AUDIO *********************************/
-/**
- * @brief Initializes Audio low level.
- */
-void AUDIO_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief DeInitializes Audio low level.
- * @note This function is intentionally kept empty, user should define it.
- */
-void AUDIO_IO_DeInit(void)
-{
-
-}
-
-/**
- * @brief Writes a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param Value: Data to be written
- */
-void AUDIO_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- I2Cx_Write(Addr, Reg, Value);
-}
-
-/**
- * @brief Reads a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @retval Data to be read
- */
-uint8_t AUDIO_IO_Read(uint8_t Addr, uint8_t Reg)
-{
- return I2Cx_Read(Addr, Reg);
-}
-
-/***************************** LINK CAMERA ************************************/
-
-/**
- * @brief Initializes Camera low level.
- */
-void CAMERA_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief Camera writes single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param Value: Data to be written
- */
-void CAMERA_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- I2Cx_Write(Addr, Reg, Value);
-}
-
-/**
- * @brief Camera reads single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @retval Read data
- */
-uint8_t CAMERA_IO_Read(uint8_t Addr, uint8_t Reg)
-{
- return I2Cx_Read(Addr, Reg);
-}
-
-/**
- * @brief Camera delay.
- * @param Delay: Delay in ms
- */
-void CAMERA_Delay(uint32_t Delay)
-{
- HAL_Delay(Delay);
-}
-
-/******************************** LINK I2C EEPROM *****************************/
-
-/**
- * @brief Initializes peripherals used by the I2C EEPROM driver.
- */
-void EEPROM_IO_Init(void)
-{
- I2Cx_Init();
-}
-
-/**
- * @brief Write data to I2C EEPROM driver in using DMA channel
- * @param DevAddress: Target device address
- * @param MemAddress: Internal memory address
- * @param pBuffer: Pointer to data buffer
- * @param BufferSize: Amount of data to be sent
- * @retval HAL status
- */
-HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
-{
- return (I2Cx_WriteMultiple(DevAddress, MemAddress, I2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize));
-}
-
-/**
- * @brief Reads data from I2C EEPROM driver in using DMA channel.
- * @param DevAddress: Target device address
- * @param MemAddress: Internal memory address
- * @param pBuffer: Pointer to data buffer
- * @param BufferSize: Amount of data to be read
- * @retval HAL status
- */
-HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
-{
- return (I2Cx_ReadMultiple(DevAddress, MemAddress, I2C_MEMADD_SIZE_16BIT, pBuffer, BufferSize));
-}
-
-/**
- * @brief Checks if target device is ready for communication.
- * @note This function is used with Memory devices
- * @param DevAddress: Target device address
- * @param Trials: Number of trials
- * @retval HAL status
- */
-HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials)
-{
- return (I2Cx_IsDeviceReady(DevAddress, Trials));
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval.h b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval.h
deleted file mode 100644
index 6485f40878..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval.h
+++ /dev/null
@@ -1,326 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval.h
- * @author MCD Application Team
- * @brief This file contains definitions for STM324xG_EVAL's LEDs,
- * push-buttons and COM ports hardware resources.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324xG_EVAL_H
-#define __STM324xG_EVAL_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL_LOW_LEVEL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_LOW_LEVEL_Exported_Types STM324xG EVAL LOW LEVEL Exported Types
- * @{
- */
-typedef enum
-{
- LED1 = 0,
- LED2 = 1,
- LED3 = 2,
- LED4 = 3
-}Led_TypeDef;
-
-typedef enum
-{
- BUTTON_WAKEUP = 0,
- BUTTON_TAMPER = 1,
- BUTTON_KEY = 2,
- BUTTON_RIGHT = 3,
- BUTTON_LEFT = 4,
- BUTTON_UP = 5,
- BUTTON_DOWN = 6,
- BUTTON_SEL = 7
-}Button_TypeDef;
-
-typedef enum
-{
- BUTTON_MODE_GPIO = 0,
- BUTTON_MODE_EXTI = 1
-}ButtonMode_TypeDef;
-
-typedef enum
-{
- JOY_MODE_GPIO = 0,
- JOY_MODE_EXTI = 1
-}JOYMode_TypeDef;
-
-typedef enum
-{
- JOY_NONE = 0,
- JOY_SEL = 1,
- JOY_DOWN = 2,
- JOY_LEFT = 3,
- JOY_RIGHT = 4,
- JOY_UP = 5
-}JOYState_TypeDef;
-
-typedef enum
-{
- COM1 = 0,
- COM2 = 1
-}COM_TypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_LOW_LEVEL_Exported_Constants STM324xG EVAL LOW LEVEL Exported Constants
- * @{
- */
-
-/**
- * @brief Define for STM324xG_EVAL board
- */
-#if !defined (USE_STM324xG_EVAL)
- #define USE_STM324xG_EVAL
-#endif
-
-/** @addtogroup STM324xG_EVAL_LOW_LEVEL_LED STM324xG EVAL LOW LEVEL LED
- * @{
- */
-#define LEDn 4
-
-#define LED1_PIN GPIO_PIN_6
-#define LED1_GPIO_PORT GPIOG
-#define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
-#define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
-
-#define LED2_PIN GPIO_PIN_8
-#define LED2_GPIO_PORT GPIOG
-#define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
-#define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
-
-#define LED3_PIN GPIO_PIN_9
-#define LED3_GPIO_PORT GPIOI
-#define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE()
-#define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE()
-
-#define LED4_PIN GPIO_PIN_7
-#define LED4_GPIO_PORT GPIOC
-#define LED4_GPIO_CLK RCC_AHB1Periph_GPIOC
-#define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-
-#define LEDx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) LED1_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 1) LED2_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 2) LED3_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 3) LED4_GPIO_CLK_ENABLE(); \
- }while(0)
-#define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) LED1_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 1) LED2_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 2) LED3_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 3) LED4_GPIO_CLK_DISABLE(); \
- }while(0)
-/**
- * @}
- */
-
-/** @addtogroup STM324xG_EVAL_LOW_LEVEL_BUTTON STM324xG EVAL LOW LEVEL BUTTON
- * @{
- */
-/* Joystick pins are connected to IO Expander (accessible through I2C1 interface) */
-#define BUTTONn 3
-
-/**
- * @brief Wakeup push-button
- */
-#define WAKEUP_BUTTON_PIN GPIO_PIN_0
-#define WAKEUP_BUTTON_GPIO_PORT GPIOA
-#define WAKEUP_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define WAKEUP_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define WAKEUP_BUTTON_EXTI_IRQn EXTI0_IRQn
-
-/**
- * @brief Tamper push-button
- */
-#define TAMPER_BUTTON_PIN GPIO_PIN_13
-#define TAMPER_BUTTON_GPIO_PORT GPIOC
-#define TAMPER_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define TAMPER_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-#define TAMPER_BUTTON_EXTI_IRQn EXTI15_10_IRQn
-
-/**
- * @brief Key push-button
- */
-#define KEY_BUTTON_PIN GPIO_PIN_15
-#define KEY_BUTTON_GPIO_PORT GPIOG
-#define KEY_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
-#define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
-#define KEY_BUTTON_EXTI_IRQn EXTI15_10_IRQn
-
-#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) WAKEUP_BUTTON_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 1) TAMPER_BUTTON_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 2) KEY_BUTTON_GPIO_CLK_ENABLE(); \
- }while(0)
-#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) WAKEUP_BUTTON_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 1) TAMPER_BUTTON_GPIO_CLK_DISABLE(); else \
- if ((__INDEX__) == 2) KEY_BUTTON_GPIO_CLK_DISABLE(); \
- }while(0)
-/**
- * @}
- */
-
-/** @addtogroup STM324xG_EVAL_LOW_LEVEL_COM STM324xG EVAL LOW LEVEL COM
- * @{
- */
-#define COMn 1
-
-/**
- * @brief Definition for COM port1, connected to USART3
- */
-#define EVAL_COM1 USART3
-#define EVAL_COM1_CLK_ENABLE() __HAL_RCC_USART3_CLK_ENABLE()
-#define EVAL_COM1_CLK_DISABLE() __HAL_RCC_USART3_CLK_DISABLE()
-
-#define EVAL_COM1_TX_PIN GPIO_PIN_10
-#define EVAL_COM1_TX_GPIO_PORT GPIOC
-#define EVAL_COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define EVAL_COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-#define EVAL_COM1_TX_AF GPIO_AF7_USART3
-
-#define EVAL_COM1_RX_PIN GPIO_PIN_11
-#define EVAL_COM1_RX_GPIO_PORT GPIOC
-#define EVAL_COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define EVAL_COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
-#define EVAL_COM1_RX_AF GPIO_AF7_USART3
-
-#define EVAL_COM1_IRQn USART3_IRQn
-
-#define EVAL_COMx_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_CLK_ENABLE(); \
- }while(0)
-#define EVAL_COMx_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_CLK_DISABLE(); \
- }while(0)
-
-#define EVAL_COMx_TX_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_TX_GPIO_CLK_ENABLE(); \
- }while(0)
-#define EVAL_COMx_TX_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_TX_GPIO_CLK_DISABLE(); \
- }while(0)
-
-#define EVAL_COMx_RX_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_RX_GPIO_CLK_ENABLE(); \
- }while(0)
-#define EVAL_COMx_RX_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_RX_GPIO_CLK_DISABLE(); \
- }while(0)
-
-/**
- * @brief Joystick Pins definition
- */
-#define JOY_SEL_PIN IO_PIN_7
-#define JOY_DOWN_PIN IO_PIN_6
-#define JOY_LEFT_PIN IO_PIN_5
-#define JOY_RIGHT_PIN IO_PIN_4
-#define JOY_UP_PIN IO_PIN_3
-#define JOY_NONE_PIN JOY_ALL_PINS
-#define JOY_ALL_PINS (IO_PIN_3 | IO_PIN_4 | IO_PIN_5 | IO_PIN_6 | IO_PIN_7)
-
-/* Exported constantIO -------------------------------------------------------*/
-/* I2C clock speed configuration (in Hz)
- WARNING:
- Make sure that this define is not already declared in other files (ie.
- stm324xg_eval.h file). It can be used in parallel by other modules. */
-#ifndef BSP_I2C_SPEED
- #define BSP_I2C_SPEED 100000
-#endif /* BSP_I2C_SPEED */
-
-#define IO_I2C_ADDRESS 0x88
-#define TS_I2C_ADDRESS 0x82
-#define CAMERA_I2C_ADDRESS 0x60
-#define AUDIO_I2C_ADDRESS 0x94
-/* For M24C64 devices, E0, E1 and E2 pins are all used for device
- address selection (no need for additional address lines). According to the
- Hardware connection on the board (on STM324xG-EVAL board E0 = E1 = E2 = 0) */
-#define EEPROM_I2C_ADDRESS 0xA0
-
-/* User can use this section to tailor I2Cx/I2Cx instance used and associated
- resources */
-/* Definition for I2Cx clock resources */
-#define EVAL_I2Cx I2C1
-#define EVAL_I2Cx_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE()
-#define EVAL_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define EVAL_I2Cx_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-
-#define EVAL_I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
-#define EVAL_I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
-
-/* Definition for I2Cx Pins */
-#define EVAL_I2Cx_SCL_PIN GPIO_PIN_6
-#define EVAL_I2Cx_SCL_SDA_GPIO_PORT GPIOB
-#define EVAL_I2Cx_SCL_SDA_AF GPIO_AF4_I2C1
-#define EVAL_I2Cx_SDA_PIN GPIO_PIN_9
-
-/* I2C interrupt requests */
-#define EVAL_I2Cx_EV_IRQn I2C1_EV_IRQn
-#define EVAL_I2Cx_ER_IRQn I2C1_ER_IRQn
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_LOW_LEVEL_Exported_Functions STM324xG EVAL LOW LEVEL Exported Functions
- * @{
- */
-uint32_t BSP_GetVersion(void);
-void BSP_LED_Init(Led_TypeDef Led);
-void BSP_LED_On(Led_TypeDef Led);
-void BSP_LED_Off(Led_TypeDef Led);
-void BSP_LED_Toggle(Led_TypeDef Led);
-void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef Button_Mode);
-uint32_t BSP_PB_GetState(Button_TypeDef Button);
-void BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef *huart);
-uint8_t BSP_JOY_Init(JOYMode_TypeDef Joy_Mode);
-JOYState_TypeDef BSP_JOY_GetState(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324xG_EVAL_H */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_audio.c b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_audio.c
deleted file mode 100644
index e560b0554c..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_audio.c
+++ /dev/null
@@ -1,658 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_audio.c
- * @author MCD Application Team
- * @brief This file provides the Audio driver for the STM324xG-EVAL evaluation
- * board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/*==============================================================================
- User NOTES
-How To use this driver:
------------------------
- + This driver supports STM32F4xx devices on STM324xG-EVAL Evaluation board.
- + Call the function BSP_AUDIO_OUT_Init(
- OutputDevice: physical output mode (OUTPUT_DEVICE_SPEAKER,
- OUTPUT_DEVICE_HEADPHONE, OUTPUT_DEVICE_AUTO or
- OUTPUT_DEVICE_BOTH)
- Volume: initial volume to be set (0 is min (mute), 100 is max (100%)
- AudioFreq: Audio frequency in Hz (8000, 16000, 22500, 32000 ...)
- this parameter is relative to the audio file/stream type.
- )
- This function configures all the hardware required for the audio application (codec, I2C, I2S,
- GPIOs, DMA and interrupt if needed). This function returns 0 if configuration is OK.
- If the returned value is different from 0 or the function is stuck then the communication with
- the codec or the IOExpander has failed (try to un-plug the power or reset device in this case).
- - OUTPUT_DEVICE_SPEAKER: only speaker will be set as output for the audio stream.
- - OUTPUT_DEVICE_HEADPHONE: only headphones will be set as output for the audio stream.
- - OUTPUT_DEVICE_AUTO: Selection of output device is made through external switch (implemented
- into the audio jack on the evaluation board). When the Headphone is connected it is used
- as output. When the headphone is disconnected from the audio jack, the output is
- automatically switched to Speaker.
- - OUTPUT_DEVICE_BOTH: both Speaker and Headphone are used as outputs for the audio stream
- at the same time.
- + Call the function BSP_AUDIO_OUT_Play(
- pBuffer: pointer to the audio data file address
- Size: size of the buffer to be sent in Bytes
- )
- to start playing (for the first time) from the audio file/stream.
- + Call the function BSP_AUDIO_OUT_Pause() to pause playing
- + Call the function BSP_AUDIO_OUT_Resume() to resume playing.
- Note. After calling BSP_AUDIO_OUT_Pause() function for pause, only BSP_AUDIO_OUT_Resume() should be called
- for resume (it is not allowed to call BSP_AUDIO_OUT_Play() in this case).
- Note. This function should be called only when the audio file is played or paused (not stopped).
- + For each mode, you may need to implement the relative callback functions into your code.
- The Callback functions are named AUDIO_OUT_XXX_CallBack() and only their prototypes are declared in
- the stm324xg_eval_audio.h file. (refer to the example for more details on the callbacks implementations)
- + To Stop playing, to modify the volume level or to mute, use the functions
- BSP_AUDIO_OUT_Stop(), BSP_AUDIO_OUT_SetVolume(), AUDIO_OUT_SetFrequency() BSP_AUDIO_OUT_SetOutputMode and BSP_AUDIO_OUT_SetMute().
- + The driver API and the callback functions are at the end of the stm324xg_eval_audio.h file.
-
-Driver architecture:
- -------------------
- + This driver provide the High Audio Layer: consists of the function API exported in the stm324xg_eval_audio.h file
- (BSP_AUDIO_OUT_Init(), BSP_AUDIO_OUT_Play() ...)
- + This driver provide also the Media Access Layer (MAL): which consists of functions allowing to access the media containing/
- providing the audio file/stream. These functions are also included as local functions into
- the stm324xg_eval_audio_codec.c file (I2Sx_MspInit() and I2Sx_Init())
-
- Known Limitations:
--------------------
- 1- When using the Speaker, if the audio file quality is not high enough, the speaker output
- may produce high and uncomfortable noise level. To avoid this issue, to use speaker
- output properly, try to increase audio file sampling rate (typically higher than 48KHz).
- This operation will lead to larger file size.
- 2- Communication with the audio codec (through I2C) may be corrupted if it is interrupted by some
- user interrupt routines (in this case, interrupts could be disabled just before the start of
- communication then re-enabled when it is over). Note that this communication is only done at
- the configuration phase (BSP_AUDIO_OUT_Init() or BSP_AUDIO_OUT_Stop()) and when Volume control modification is
- performed (BSP_AUDIO_OUT_SetVolume() or AUDIO_OUT_Mute() or BSP_AUDIO_OUT_SetOutputMode()).
- When the audio data is played, no communication is required with the audio codec.
- 3- Parsing of audio file is not implemented (in order to determine audio file properties: Mono/Stereo, Data size,
- File size, Audio Frequency, Audio Data header size ...). The configuration is fixed for the given audio file.
- 4- Supports only Stereo audio streaming. To play mono audio streams, each data should be sent twice
- on the I2S or should be duplicated on the source buffer. Or convert the stream in stereo before playing.
- 5- Supports only 16-bits audio data size.
-==============================================================================*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval_audio.h"
-#include "stm324xg_eval_io.h" /* IOExpander driver is included in order to allow
- CS43L22 codec reset pin management on the evaluation board */
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_AUDIO STM324xG EVAL AUDIO
- * @brief This file includes the low layer audio driver available on STM324xG-EVAL
- * evaluation board.
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_AUDIO_Private_Defines STM324xG EVAL AUDIO Private Defines
- * @{
- */
-/* These PLL parameters are valid when the f(VCO clock) = 1Mhz */
-const uint32_t I2SFreq[8] = {8000, 11025, 16000, 22050, 32000, 44100, 48000, 96000};
-const uint32_t I2SPLLN[8] = {256, 429, 213, 429, 426, 271, 258, 344};
-const uint32_t I2SPLLR[8] = {5, 4, 4, 4, 4, 6, 3, 1};
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_AUDIO_Private_Variables STM324xG EVAL AUDIO Private Variables
- * @{
- */
-AUDIO_DrvTypeDef *audio_drv;
-I2S_HandleTypeDef haudio_i2s;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_AUDIO_Private_Function_Prototypes STM324xG EVAL AUDIO Private Function Prototypes
- * @{
- */
-static void I2Sx_Init(uint32_t AudioFreq);
-static void I2Sx_DeInit(void);
-static void CODEC_Reset(void);
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_AUDIO_Private_Functions STM324xG EVAL AUDIO Private Functions
- * @{
- */
-
-/**
- * @brief Configures the audio peripherals.
- * @param OutputDevice: OUTPUT_DEVICE_SPEAKER, OUTPUT_DEVICE_HEADPHONE,
- * OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO .
- * @param Volume: Initial volume level (from 0 (Mute) to 100 (Max))
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @note This function configure also that the I2S PLL input clock.
- * @retval 0 if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
-{
- uint8_t ret = AUDIO_ERROR;
-
- /* Disable I2S */
- I2Sx_DeInit();
-
- /* Configure PLL clock depending on AudioFreq */
- BSP_AUDIO_OUT_ClockConfig(&haudio_i2s, AudioFreq, NULL);
-
- /* I2S data transfer preparation:
- Prepare the Media to be used for the audio transfer from memory to I2S peripheral */
- haudio_i2s.Instance = AUDIO_I2Sx;
- if(HAL_I2S_GetState(&haudio_i2s) == HAL_I2S_STATE_RESET)
- {
- /* Init the I2S MSP: this __weak function can be redefined by the application*/
- BSP_AUDIO_OUT_MspInit(&haudio_i2s, NULL);
- }
- /* Configure the I2S peripheral */
- I2Sx_Init(AudioFreq);
-
- /* Reset the Codec Registers */
- CODEC_Reset();
-
- if(((cs43l22_drv.ReadID(AUDIO_I2C_ADDRESS)) & CS43L22_ID_MASK) == CS43L22_ID)
- {
- /* Initialize the audio driver structure */
- audio_drv = &cs43l22_drv;
- ret = AUDIO_OK;
- }
- else
- {
- ret = AUDIO_ERROR;
- }
-
- if(ret == AUDIO_OK)
- {
- audio_drv->Init(AUDIO_I2C_ADDRESS, OutputDevice, Volume, AudioFreq);
- }
-
- return ret;
-}
-
-/**
- * @brief De-initialize the audio peripherals.
- * @retval None
- */
-void BSP_AUDIO_OUT_DeInit(void)
-{
- I2Sx_DeInit();
- /* DeInit the I2S MSP : this __weak function can be rewritten by the application */
- BSP_AUDIO_OUT_MspDeInit(&haudio_i2s, NULL);
-}
-
-/**
- * @brief Starts playing audio stream from a data buffer for a determined size.
- * @param pBuffer: Pointer to the buffer
- * @param Size: Number of audio data BYTES.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size)
-{
- /* Call the audio Codec Play function */
- if(audio_drv->Play(AUDIO_I2C_ADDRESS, pBuffer, Size) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Update the Media layer and enable it for play */
- HAL_I2S_Transmit_DMA(&haudio_i2s, pBuffer, DMA_MAX(Size/AUDIODATA_SIZE));
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Sends n-Bytes on the I2S interface.
- * @param pData: Pointer to data address
- * @param Size: Number of data to be written.
- */
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
-{
- HAL_I2S_Transmit_DMA(&haudio_i2s, pData, Size);
-}
-
-/**
- * @brief Pauses the audio file stream.
- * In case of using DMA, the DMA Pause feature is used.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Pause(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(audio_drv->Pause(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer pause function */
- HAL_I2S_DMAPause(&haudio_i2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Resumes the audio file stream.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Resume(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(audio_drv->Resume(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer pause/resume function */
- HAL_I2S_DMAResume(&haudio_i2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Stops audio playing and Power down the Audio Codec.
- * @param Option: could be one of the following parameters
- * - CODEC_PDWN_SW: for software power off (by writing registers).
- * Then no need to reconfigure the Codec after power on.
- * - CODEC_PDWN_HW: completely shut down the codec (physically).
- * Then need to reconfigure the Codec after power on.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
-{
- /* Call the Media layer stop function */
- HAL_I2S_DMAStop(&haudio_i2s);
-
- /* Call Audio Codec Stop function */
- if(audio_drv->Stop(AUDIO_I2C_ADDRESS, Option) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- if(Option == CODEC_PDWN_HW)
- {
- /* Wait at least 1ms */
- HAL_Delay(1);
-
- /* Reset the pin */
- BSP_IO_WritePin(AUDIO_RESET_PIN, RESET);
- }
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Controls the current audio volume level.
- * @param Volume: Volume level to be set in percentage from 0% to 100% (0 for
- * Mute and 100 for Max volume level).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
-{
- /* Call the codec volume control function with converted volume value */
- if(audio_drv->SetVolume(AUDIO_I2C_ADDRESS, Volume) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Enables or disables the MUTE mode by software
- * @param Cmd: could be AUDIO_MUTE_ON to mute sound or AUDIO_MUTE_OFF to
- * unmute the codec and restore previous volume level.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
-{
- /* Call the Codec Mute function */
- if(audio_drv->SetMute(AUDIO_I2C_ADDRESS, Cmd) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Switch dynamically (while audio file is played) the output target
- * (speaker or headphone).
- * @note This function modifies a global variable of the audio codec driver: OutputDev.
- * @param Output: specifies the audio output target: OUTPUT_DEVICE_SPEAKER,
- * OUTPUT_DEVICE_HEADPHONE, OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output)
-{
- /* Call the Codec output Device function */
- if(audio_drv->SetOutputMode(AUDIO_I2C_ADDRESS, Output) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Updates the audio frequency.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
-{
- /* Configure PLL clock depending on AudioFreq */
- BSP_AUDIO_OUT_ClockConfig(&haudio_i2s, AudioFreq, NULL);
-
- /* Update the I2S audio frequency configuration */
- I2Sx_Init(AudioFreq);
-}
-
-/**
- * @brief Clock Config.
- * @param hi2s: might be required to set audio peripheral predivider if any.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @param Params
- * @note This API is called by BSP_AUDIO_OUT_Init() and BSP_AUDIO_OUT_SetFrequency()
- * Being __weak it can be overwritten by the application
- * @retval None
- */
-__weak void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params)
-{
- RCC_PeriphCLKInitTypeDef RCC_ExCLKInitStruct;
- uint8_t index = 0, freqindex = 0xFF;
-
- for(index = 0; index < 8; index++)
- {
- if(I2SFreq[index] == AudioFreq)
- {
- freqindex = index;
- }
- }
- HAL_RCCEx_GetPeriphCLKConfig(&RCC_ExCLKInitStruct);
- if(freqindex != 0xFF)
- {
- /* I2S clock config
- PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) × (PLLI2SN/PLLM)
- I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
- RCC_ExCLKInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2S;
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SN = I2SPLLN[freqindex];
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SR = I2SPLLR[freqindex];
- HAL_RCCEx_PeriphCLKConfig(&RCC_ExCLKInitStruct);
- }
- else /* Default PLL I2S configuration */
- {
- /* I2S clock config
- PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) × (PLLI2SN/PLLM)
- I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
- RCC_ExCLKInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2S;
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SN = 258;
- RCC_ExCLKInitStruct.PLLI2S.PLLI2SR = 3;
- HAL_RCCEx_PeriphCLKConfig(&RCC_ExCLKInitStruct);
- }
-}
-
-/**
- * @brief Initializes BSP_AUDIO_OUT MSP.
- * @param hi2s: I2S handle
- * @param Params
- */
-__weak void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- static DMA_HandleTypeDef hdma_i2sTx;
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable I2S clock */
- AUDIO_I2Sx_CLK_ENABLE();
-
- /* Enable SCK, SD and WS GPIO clock */
- AUDIO_I2Sx_SCK_SD_WS_CLK_ENABLE();
-
- /* CODEC_I2S pins configuration: WS, SCK and SD pins */
- GPIO_InitStruct.Pin = AUDIO_I2Sx_WS_PIN | AUDIO_I2Sx_SCK_PIN | AUDIO_I2Sx_SD_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Alternate = AUDIO_I2Sx_SCK_SD_WS_AF;
- HAL_GPIO_Init(AUDIO_I2Sx_SCK_SD_WS_GPIO_PORT, &GPIO_InitStruct);
-
- /* Enable MCK GPIO clock */
- AUDIO_I2Sx_MCK_CLK_ENABLE();
-
- /* CODEC_I2S pins configuration: MCK pin */
- GPIO_InitStruct.Pin = AUDIO_I2Sx_MCK_PIN;
- HAL_GPIO_Init(AUDIO_I2Sx_MCK_GPIO_PORT, &GPIO_InitStruct);
-
- /* Enable the DMA clock */
- AUDIO_I2Sx_DMAx_CLK_ENABLE();
-
- if(hi2s->Instance == AUDIO_I2Sx)
- {
- /* Configure the hdma_i2sTx handle parameters */
- hdma_i2sTx.Init.Channel = AUDIO_I2Sx_DMAx_CHANNEL;
- hdma_i2sTx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_i2sTx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_i2sTx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_i2sTx.Init.PeriphDataAlignment = AUDIO_I2Sx_DMAx_PERIPH_DATA_SIZE;
- hdma_i2sTx.Init.MemDataAlignment = AUDIO_I2Sx_DMAx_MEM_DATA_SIZE;
- hdma_i2sTx.Init.Mode = DMA_NORMAL;
- hdma_i2sTx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_i2sTx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- hdma_i2sTx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_i2sTx.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_i2sTx.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- hdma_i2sTx.Instance = AUDIO_I2Sx_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hi2s, hdmatx, hdma_i2sTx);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_i2sTx);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&hdma_i2sTx);
- }
-
- /* I2S DMA IRQ Channel configuration */
- HAL_NVIC_SetPriority(AUDIO_I2Sx_DMAx_IRQ, AUDIO_IRQ_PREPRIO, 0);
- HAL_NVIC_EnableIRQ(AUDIO_I2Sx_DMAx_IRQ);
-}
-
-/**
- * @brief De-Initializes BSP_AUDIO_OUT MSP.
- * @param hi2s: I2S handle
- * @param Params
- */
-__weak void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Disable I2S clock */
- AUDIO_I2Sx_CLK_DISABLE();
-
- /* CODEC_I2S pins configuration: WS, SCK and SD pins */
- GPIO_InitStruct.Pin = AUDIO_I2Sx_WS_PIN | AUDIO_I2Sx_SCK_PIN | AUDIO_I2Sx_SD_PIN;
- HAL_GPIO_DeInit(AUDIO_I2Sx_SCK_SD_WS_GPIO_PORT, GPIO_InitStruct.Pin);
-
- /* CODEC_I2S pins configuration: MCK pin */
- GPIO_InitStruct.Pin = AUDIO_I2Sx_MCK_PIN;
- HAL_GPIO_DeInit(AUDIO_I2Sx_MCK_GPIO_PORT, GPIO_InitStruct.Pin);
-}
-
-/**
- * @brief Tx Transfer completed callbacks
- * @param hi2s: I2S handle
- */
-void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Manage the remaining file size and new address offset: This function
- should be coded by user (its prototype is already declared in stm324xg_eval_audio.h) */
- BSP_AUDIO_OUT_TransferComplete_CallBack();
-}
-
-/**
- * @brief Tx Transfer Half completed callbacks
- * @param hi2s: I2S handle
- */
-void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Manage the remaining file size and new address offset: This function
- should be coded by user (its prototype is already declared in stm324xg_eval_audio.h) */
- BSP_AUDIO_OUT_HalfTransfer_CallBack();
-}
-
-/**
- * @brief I2S error callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s)
-{
- BSP_AUDIO_OUT_Error_CallBack();
-}
-
-/**
- * @brief Manages the DMA full Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA FIFO error event.
- */
-__weak void BSP_AUDIO_OUT_Error_CallBack(void)
-{
-}
-
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-/**
- * @brief Initializes the Audio Codec audio interface (I2S).
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- */
-static void I2Sx_Init(uint32_t AudioFreq)
-{
- /* Initialize the haudio_i2s Instance parameter */
- haudio_i2s.Instance = AUDIO_I2Sx;
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(&haudio_i2s);
-
- haudio_i2s.Init.Mode = I2S_MODE_MASTER_TX;
- haudio_i2s.Init.Standard = I2S_STANDARD;
- haudio_i2s.Init.DataFormat = I2S_DATAFORMAT_16B;
- haudio_i2s.Init.AudioFreq = AudioFreq;
- haudio_i2s.Init.CPOL = I2S_CPOL_LOW;
- haudio_i2s.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
-
- /* Init the I2S */
- HAL_I2S_Init(&haudio_i2s);
-}
-
-/**
- * @brief Deinitialize the Audio Codec audio interface (I2S).
- */
-static void I2Sx_DeInit(void)
-{
- /* Initialize the haudio_i2s Instance parameter */
- haudio_i2s.Instance = AUDIO_I2Sx;
-
- /* Disable I2S peripheral */
- __HAL_I2S_DISABLE(&haudio_i2s);
-
- HAL_I2S_DeInit(&haudio_i2s);
-}
-
-/**
- * @brief Resets the audio codec. It restores the default configuration of the
- * codec (this function shall be called before initializing the codec).
- * @note This function calls an external driver function: The IO Expander driver.
- */
-static void CODEC_Reset(void)
-{
- /* Configure the IO Expander (to use the Codec Reset pin mapped on the IOExpander) */
- BSP_IO_Init();
-
- BSP_IO_ConfigPin(AUDIO_RESET_PIN, IO_MODE_OUTPUT);
-
- /* Power Down the codec */
- BSP_IO_WritePin(AUDIO_RESET_PIN, RESET);
-
- /* Wait for a delay to insure registers erasing */
- HAL_Delay(CODEC_RESET_DELAY);
-
- /* Power on the codec */
- BSP_IO_WritePin(AUDIO_RESET_PIN, SET);
-
- /* Wait for a delay to insure registers erasing */
- HAL_Delay(CODEC_RESET_DELAY);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_audio.h b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_audio.h
deleted file mode 100644
index 82d5a639e6..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_audio.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_audio.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324xg_eval_audio.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324xG_EVAL_AUDIO_H
-#define __STM324xG_EVAL_AUDIO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "../Components/cs43l22/cs43l22.h"
-#include "stm324xg_eval.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL_AUDIO
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_AUDIO_Exported_Constants STM324xG EVAL AUDIO Exported Constants
- * @{
- */
-/* Audio Reset Pin definition */
-#define AUDIO_RESET_PIN IO_PIN_2
-
-/* I2S peripheral configuration defines */
-#define AUDIO_I2Sx SPI2
-#define AUDIO_I2Sx_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE()
-#define AUDIO_I2Sx_CLK_DISABLE() __HAL_RCC_SPI2_CLK_DISABLE()
-#define AUDIO_I2Sx_SCK_SD_WS_AF GPIO_AF5_SPI2
-#define AUDIO_I2Sx_SCK_SD_WS_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE()
-#define AUDIO_I2Sx_MCK_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define AUDIO_I2Sx_WS_PIN GPIO_PIN_0
-#define AUDIO_I2Sx_SCK_PIN GPIO_PIN_1
-#define AUDIO_I2Sx_SD_PIN GPIO_PIN_3
-#define AUDIO_I2Sx_MCK_PIN GPIO_PIN_6
-#define AUDIO_I2Sx_SCK_SD_WS_GPIO_PORT GPIOI
-#define AUDIO_I2Sx_MCK_GPIO_PORT GPIOC
-
-/* I2S DMA Stream definitions */
-#define AUDIO_I2Sx_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define AUDIO_I2Sx_DMAx_STREAM DMA1_Stream4
-#define AUDIO_I2Sx_DMAx_CHANNEL DMA_CHANNEL_0
-#define AUDIO_I2Sx_DMAx_IRQ DMA1_Stream4_IRQn
-#define AUDIO_I2Sx_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
-#define AUDIO_I2Sx_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
-#define DMA_MAX_SZE 0xFFFF
-
-#define AUDIO_I2Sx_DMAx_IRQHandler DMA1_Stream4_IRQHandler
-
-/*------------------------------------------------------------------------------
- CONFIGURATION: Audio Driver Configuration parameters
-------------------------------------------------------------------------------*/
-/* Select the interrupt preemption priority for the DMA interrupt */
-#define AUDIO_IRQ_PREPRIO 0x0F /* Select the preemption priority level(0 is the highest) */
-
-#define AUDIODATA_SIZE 2 /* 16-bits audio data size */
-
-/* Audio status definition */
-#define AUDIO_OK 0x00
-#define AUDIO_ERROR 0x01
-#define AUDIO_TIMEOUT 0x02
-
-/*------------------------------------------------------------------------------
- OPTIONAL Configuration defines parameters
-------------------------------------------------------------------------------*/
-/* Delay for the Codec to be correctly reset */
-#define CODEC_RESET_DELAY 5
-
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_AUDIO_Exported_Macros STM324xG EVAL AUDIO Exported Macros
- * @{
- */
-#define DMA_MAX(x) (((x) <= DMA_MAX_SZE)? (x):DMA_MAX_SZE)
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_AUDIO_Exported_Functions STM324xG EVAL AUDIO Exported Functions
- * @{
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
-void BSP_AUDIO_OUT_DeInit(void);
-uint8_t BSP_AUDIO_OUT_Play(uint16_t *pBuffer, uint32_t Size);
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size);
-uint8_t BSP_AUDIO_OUT_Pause(void);
-uint8_t BSP_AUDIO_OUT_Resume(void);
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option);
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume);
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq);
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd);
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output);
-
-/* User Callbacks: user has to implement these functions in his code if they are needed. */
-/* This function is called when the requested data has been completely transferred.*/
-void BSP_AUDIO_OUT_TransferComplete_CallBack(void);
-
-/* This function is called when half of the requested buffer has been transferred. */
-void BSP_AUDIO_OUT_HalfTransfer_CallBack(void);
-
-/* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-void BSP_AUDIO_OUT_Error_CallBack(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
-void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
-void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324xG_EVAL_AUDIO_H */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_camera.c b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_camera.c
deleted file mode 100644
index 8620467e73..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_camera.c
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_camera.c
- * @author MCD Application Team
- * @brief This file includes the driver for Camera module mounted on
- * STM324xG-EVAL evaluation board(MB786).
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info: ------------------------------------------------------------------
- User NOTES
-1. How to use this driver:
---------------------------
- - This driver is used to drive the Camera.
- - The OV2640 component driver MUST be included with this driver.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the Camera using the BSP_CAMERA_Init() function.
- o Start the Camera capture or snapshot using CAMERA_Start() function.
- o Suspend, resume or stop the Camera capture using the following functions:
- - BSP_CAMERA_Suspend()
- - BSP_CAMERA_Resume()
- - BSP_CAMERA_Stop()
-
- + Options
- o Increase or decrease on the fly the brightness and/or contrast
- using the following function:
- - BSP_CAMERA_ContrastBrightnessConfig
- o Add a special effect on the fly using the following functions:
- - BSP_CAMERA_BlackWhiteConfig()
- - BSP_CAMERA_ColorEffectConfig()
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval_camera.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_CAMERA STM324xG EVAL CAMERA
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_CAMERA_Private_Variables STM324xG EVAL CAMERA Private Variables
- * @{
- */
-static DCMI_HandleTypeDef hdcmi_eval;
-CAMERA_DrvTypeDef *camera_drv;
-uint32_t current_resolution;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_CAMERA_Private_FunctionPrototypes STM324xG EVAL CAMERA Private FunctionPrototypes
- * @{
- */
-static uint32_t GetSize(uint32_t resolution);
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_CAMERA_Private_Functions STM324xG EVAL CAMERA Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the Camera.
- * @param Resolution: Camera resolution
- * @retval Camera status
- */
-uint8_t BSP_CAMERA_Init(uint32_t Resolution)
-{
- DCMI_HandleTypeDef *phdcmi;
- uint8_t ret = CAMERA_ERROR;
-
- /* Get the DCMI handle structure */
- phdcmi = &hdcmi_eval;
-
- /*** Configures the DCMI to interface with the Camera module ***/
- /* DCMI configuration */
- phdcmi->Init.CaptureRate = DCMI_CR_ALL_FRAME;
- phdcmi->Init.HSPolarity = DCMI_HSPOLARITY_LOW;
- phdcmi->Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;
- phdcmi->Init.VSPolarity = DCMI_VSPOLARITY_LOW;
- phdcmi->Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;
- phdcmi->Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;
- phdcmi->Instance = DCMI;
-
- /* DCMI Initialization */
- BSP_CAMERA_MspInit();
- HAL_DCMI_Init(phdcmi);
-
- if(ov2640_drv.ReadID(CAMERA_I2C_ADDRESS) == OV2640_ID)
- {
- /* Initialize the Camera driver structure */
- camera_drv = &ov2640_drv;
-
- /* Camera Init */
- camera_drv->Init(CAMERA_I2C_ADDRESS, Resolution);
-
- /* Return CAMERA_OK status */
- ret = CAMERA_OK;
- }
-
- current_resolution = Resolution;
-
- return ret;
-}
-
-/**
- * @brief Starts the Camera capture in continuous mode.
- * @param buff: pointer to the Camera output buffer
- */
-void BSP_CAMERA_ContinuousStart(uint8_t *buff)
-{
- /* Start the Camera capture */
- HAL_DCMI_Start_DMA(&hdcmi_eval, DCMI_MODE_CONTINUOUS, (uint32_t)buff, GetSize(current_resolution));
-}
-
-/**
- * @brief Starts the Camera capture in snapshot mode.
- * @param buff: pointer to the Camera output buffer
- */
-void BSP_CAMERA_SnapshotStart(uint8_t *buff)
-{
- /* Start the Camera capture */
- HAL_DCMI_Start_DMA(&hdcmi_eval, DCMI_MODE_SNAPSHOT, (uint32_t)buff, GetSize(current_resolution));
-}
-
-/**
- * @brief Suspends the Camera capture.
- */
-void BSP_CAMERA_Suspend(void)
-{
- /* Suspend the Camera Capture */
- HAL_DCMI_Suspend(&hdcmi_eval);
-}
-
-/**
- * @brief Resumes the Camera capture.
- */
-void BSP_CAMERA_Resume(void)
-{
- /* Start the Camera Capture */
- HAL_DCMI_Resume(&hdcmi_eval);
-}
-
-/**
- * @brief Stops the Camera capture.
- * @retval Camera status
- */
-uint8_t BSP_CAMERA_Stop(void)
-{
- DCMI_HandleTypeDef *phdcmi;
-
- uint8_t ret = CAMERA_ERROR;
-
- /* Get the DCMI handle structure */
- phdcmi = &hdcmi_eval;
-
- if(HAL_DCMI_Stop(phdcmi) == HAL_OK)
- {
- ret = CAMERA_OK;
- }
-
- return ret;
-}
-
-/**
- * @brief Configures the Camera contrast and brightness.
- * @param contrast_level: Contrast level
- * This parameter can be one of the following values:
- * @arg CAMERA_CONTRAST_LEVEL4: for contrast +2
- * @arg CAMERA_CONTRAST_LEVEL3: for contrast +1
- * @arg CAMERA_CONTRAST_LEVEL2: for contrast 0
- * @arg CAMERA_CONTRAST_LEVEL1: for contrast -1
- * @arg CAMERA_CONTRAST_LEVEL0: for contrast -2
- * @param brightness_level: Brightness level
- * This parameter can be one of the following values:
- * @arg CAMERA_BRIGHTNESS_LEVEL4: for brightness +2
- * @arg CAMERA_BRIGHTNESS_LEVEL3: for brightness +1
- * @arg CAMERA_BRIGHTNESS_LEVEL2: for brightness 0
- * @arg CAMERA_BRIGHTNESS_LEVEL1: for brightness -1
- * @arg CAMERA_BRIGHTNESS_LEVEL0: for brightness -2
- */
-void BSP_CAMERA_ContrastBrightnessConfig(uint32_t contrast_level, uint32_t brightness_level)
-{
- if(camera_drv->Config != NULL)
- {
- camera_drv->Config(CAMERA_I2C_ADDRESS, CAMERA_CONTRAST_BRIGHTNESS, contrast_level, brightness_level);
- }
-}
-
-/**
- * @brief Configures the Camera white balance.
- * @param Mode: black_white mode
- * This parameter can be one of the following values:
- * @arg CAMERA_BLACK_WHITE_BW
- * @arg CAMERA_BLACK_WHITE_NEGATIVE
- * @arg CAMERA_BLACK_WHITE_BW_NEGATIVE
- * @arg CAMERA_BLACK_WHITE_NORMAL
- */
-void BSP_CAMERA_BlackWhiteConfig(uint32_t Mode)
-{
- if(camera_drv->Config != NULL)
- {
- camera_drv->Config(CAMERA_I2C_ADDRESS, CAMERA_BLACK_WHITE, Mode, 0);
- }
-}
-
-/**
- * @brief Configures the Camera color effect.
- * @param Effect: Color effect
- * This parameter can be one of the following values:
- * @arg CAMERA_COLOR_EFFECT_ANTIQUE
- * @arg CAMERA_COLOR_EFFECT_BLUE
- * @arg CAMERA_COLOR_EFFECT_GREEN
- * @arg CAMERA_COLOR_EFFECT_RED
- */
-void BSP_CAMERA_ColorEffectConfig(uint32_t Effect)
-{
- if(camera_drv->Config != NULL)
- {
- camera_drv->Config(CAMERA_I2C_ADDRESS, CAMERA_COLOR_EFFECT, Effect, 0);
- }
-}
-
-/**
- * @brief Handles DCMI interrupt request.
- */
-void BSP_CAMERA_IRQHandler(void)
-{
- HAL_DCMI_IRQHandler(&hdcmi_eval);
-}
-
-/**
- * @brief Handles DMA interrupt request.
- */
-void BSP_CAMERA_DMA_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(hdcmi_eval.DMA_Handle);
-}
-
-/**
- * @brief Get the capture size.
- * @param resolution: the current resolution.
- * @retval cpature size
- */
-static uint32_t GetSize(uint32_t resolution)
-{
- uint32_t size = 0;
-
- /* Get capture size */
- switch (resolution)
- {
- case CAMERA_R160x120:
- {
- size = 0x2580;
- }
- break;
- case CAMERA_R320x240:
- {
- size = 0x9600;
- }
- break;
- default:
- {
- break;
- }
- }
-
- return size;
-}
-
-/**
- * @brief Initializes the DCMI MSP.
- */
-__weak void BSP_CAMERA_MspInit(void)
-{
- static DMA_HandleTypeDef hdma;
- GPIO_InitTypeDef GPIO_Init_Structure;
- DCMI_HandleTypeDef *hdcmi = &hdcmi_eval;
-
- /*** Enable peripherals and GPIO clocks ***/
- /* Enable DCMI clock */
- __HAL_RCC_DCMI_CLK_ENABLE();
-
- /* Enable DMA2 clock */
- __HAL_RCC_DMA2_CLK_ENABLE();
-
- /* Enable GPIO clocks */
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOH_CLK_ENABLE();
- __HAL_RCC_GPIOI_CLK_ENABLE();
-
- /*** Configure the GPIO ***/
- /* Configure DCMI GPIO as alternate function */
- GPIO_Init_Structure.Pin = GPIO_PIN_6;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOA, &GPIO_Init_Structure);
-
- GPIO_Init_Structure.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 |\
- GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_14;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOH, &GPIO_Init_Structure);
-
- GPIO_Init_Structure.Pin = GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 |\
- GPIO_PIN_7;
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF13_DCMI;
- HAL_GPIO_Init(GPIOI, &GPIO_Init_Structure);
-
- /*** Configure the DMA streams ***/
- /* Configure the DMA handler for Transmission process */
- hdma.Init.Channel = DMA_CHANNEL_1;
- hdma.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma.Init.MemInc = DMA_MINC_ENABLE;
- hdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- hdma.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- hdma.Init.Mode = DMA_CIRCULAR;
- hdma.Init.Priority = DMA_PRIORITY_HIGH;
- hdma.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- hdma.Instance = DMA2_Stream1;
-
- /* Associate the initialized DMA handle to the DCMI handle */
- __HAL_LINKDMA(hdcmi, DMA_Handle, hdma);
-
- /*** Configure the NVIC for DCMI and DMA ***/
- /* NVIC configuration for DCMI transfer complete interrupt */
- HAL_NVIC_SetPriority(DCMI_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(DCMI_IRQn);
-
- /* NVIC configuration for DMA2 transfer complete interrupt */
- HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(hdcmi->DMA_Handle);
-}
-
-/**
- * @brief Line event callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_LineEventCallback();
-}
-
-/**
- * @brief Line Event callback.
- */
-__weak void BSP_CAMERA_LineEventCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_LineEventCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief VSYNC event callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_VsyncEventCallback();
-}
-
-/**
- * @brief VSYNC Event callback.
- */
-__weak void BSP_CAMERA_VsyncEventCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_VsyncEventCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief Frame event callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_FrameEventCallback();
-}
-
-/**
- * @brief Frame Event callback.
- */
-__weak void BSP_CAMERA_FrameEventCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_FrameEventCallback could be implemented in the user file
- */
-}
-
-/**
- * @brief Error callback
- * @param hdcmi: pointer to the DCMI handle
- */
-void HAL_DCMI_ErrorCallback(DCMI_HandleTypeDef *hdcmi)
-{
- BSP_CAMERA_ErrorCallback();
-}
-
-/**
- * @brief Error callback.
- */
-__weak void BSP_CAMERA_ErrorCallback(void)
-{
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_DCMI_ErrorCallback could be implemented in the user file
- */
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_camera.h b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_camera.h
deleted file mode 100644
index d110ec4399..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_camera.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_camera.h
- * @author MCD Application Team
- * @brief This file contains all the functions prototypes for the
- * stm324xg_eval_camera.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324xG_EVAL_CAMERA_H
-#define __STM324xG_EVAL_CAMERA_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval.h"
-#include "stm324xg_eval_io.h"
-
-/* Include Camera component Driver */
-#include "../Components/ov2640/ov2640.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL_CAMERA
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_CAMERA_Exported_Types STM324xG EVAL CAMERA Exported Types
- * @{
- */
-
-/**
- * @brief Camera status structure definition
- */
-typedef enum
-{
- CAMERA_OK = 0x00,
- CAMERA_ERROR = 0x01,
- CAMERA_TIMEOUT = 0x02
-}Camera_StatusTypeDef;
-
-#define RESOLUTION_R160x120 CAMERA_R160x120 /* QQVGA Resolution */
-#define RESOLUTION_R320x240 CAMERA_R320x240 /* QVGA Resolution */
-
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_CAMERA_Exported_Constants STM324xG EVAL CAMERA Exported Constants
- * @{
- */
-#define CAMERA_I2C_ADDRESS 0x60
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_CAMERA_Exported_Functions STM324xG EVAL CAMERA Exported Functions
- * @{
- */
-uint8_t BSP_CAMERA_Init(uint32_t Resolution);
-void BSP_CAMERA_ContinuousStart(uint8_t *buff);
-void BSP_CAMERA_SnapshotStart(uint8_t *buff);
-void BSP_CAMERA_Suspend(void);
-void BSP_CAMERA_Resume(void);
-uint8_t BSP_CAMERA_Stop(void);
-void BSP_CAMERA_LineEventCallback(void);
-void BSP_CAMERA_VsyncEventCallback(void);
-void BSP_CAMERA_FrameEventCallback(void);
-void BSP_CAMERA_ErrorCallback(void);
-void BSP_CAMERA_MspInit(void);
-
-/* Camera features functions prototype */
-void BSP_CAMERA_ContrastBrightnessConfig(uint32_t contrast_level, uint32_t brightness_level);
-void BSP_CAMERA_BlackWhiteConfig(uint32_t Mode);
-void BSP_CAMERA_ColorEffectConfig(uint32_t Effect);
-
-/* To be called in DCMI_IRQHandler function */
-void BSP_CAMERA_IRQHandler(void);
-/* To be called in DMA2_Stream1_IRQHandler function */
-void BSP_CAMERA_DMA_IRQHandler(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324xG_EVAL_CAMERA_H */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_eeprom.c b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_eeprom.c
deleted file mode 100644
index 13af423592..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_eeprom.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_eeprom.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage an I2C M24C64
- * EEPROM memory.
- *
- * ===================================================================
- * Notes:
- * - This driver is intended for STM32F4xx families devices only.
- * - The I2C EEPROM memory (M24C64) is available on STM324xG-EVAL
- * - To use this driver you have to connect the eeprom jumper (JP24).
- * ===================================================================
- *
- * It implements a high level communication layer for read and write
- * from/to this memory. The needed STM32F4xx hardware resources (I2C and
- * GPIO) are defined in stm32f4xg_eval.h file, and the initialization is
- * performed in EEPROM_IO_Init() function declared in stm32f4xg_eval.c
- * file.
- * You can easily tailor this driver to any other development board,
- * by just adapting the defines for hardware resources and
- * EEPROM_IO_Init() function.
- *
- * @note In this driver, basic read and write functions (BSP_EEPROM_ReadBuffer()
- * and EEPROM_WritePage()) use Polling mode to perform the data transfer
- * to/from EEPROM memory.
- *
- * +-----------------------------------------------------------------+
- * | Pin assignment for M24C64 EEPROM |
- * +---------------------------------------+-----------+-------------+
- * | STM32F4xx I2C Pins | EEPROM | Pin |
- * +---------------------------------------+-----------+-------------+
- * | . | E0 | 1 (0V) |
- * | . | E1 | 2 (0V) |
- * | . | E2 | 3 (0V) |
- * | . | VSS(GND)| 4 (0V) |
- * | SDA | SDA | 5 |
- * | SCL | SCL | 6 |
- * | JP24 | /WS | 7 |
- * | . | VDD | 8 (3.3V) |
- * +---------------------------------------+-----------+-------------+
- *
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval_eeprom.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_EEPROM STM324xG EVAL EEPROM
- * @brief This file includes the I2C EEPROM driver of STM32F4xG-EVAL evaluation board.
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_EEPROM_Private_Variables STM324xG EVAL EEPROM Private Variables
- * @{
- */
-__IO uint32_t EEPROMTimeout = EEPROM_READ_TIMEOUT;
-__IO uint16_t EEPROMDataRead;
-__IO uint8_t EEPROMDataWrite;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_EEPROM_Private_Function_Prototypes STM324xG EVAL EEPROM Private Function Prototypes
- * @{
- */
-static uint32_t EEPROM_WritePage(uint8_t* pBuffer, uint16_t WriteAddr, uint8_t* NumByteToWrite);
-static uint32_t EEPROM_WaitEepromStandbyState(void);
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_EEPROM_Private_Functions STM324xG EVAL EEPROM Private Functions
- * @{
- */
-
-/**
- * @brief Initializes peripherals used by the I2C EEPROM driver.
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0)
- */
-uint32_t BSP_EEPROM_Init(void)
-{
- /* I2C Initialization */
- EEPROM_IO_Init();
-
- /* Select the EEPROM address and check if OK */
- if(EEPROM_IO_IsDeviceReady(EEPROM_I2C_ADDRESS, EEPROM_MAX_TRIALS) != HAL_OK)
- {
- return EEPROM_FAIL;
- }
- return EEPROM_OK;
-}
-
-/**
- * @brief Reads a block of data from the EEPROM.
- * @param pBuffer: pointer to the buffer that receives the data read from
- * the EEPROM.
- * @param ReadAddr: EEPROM's internal address to start reading from.
- * @param NumByteToRead: pointer to the variable holding number of bytes to
- * be read from the EEPROM.
- *
- * @note The variable pointed by NumByteToRead is reset to 0 when all the
- * data are read from the EEPROM. Application should monitor this
- * variable in order know when the transfer is complete.
- *
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_ReadBuffer(uint8_t* pBuffer, uint16_t ReadAddr, uint16_t* NumByteToRead)
-{
- uint32_t buffersize = *NumByteToRead;
-
- /* Set the pointer to the Number of data to be read */
- EEPROMDataRead = *NumByteToRead;
-
- if(EEPROM_IO_ReadData(EEPROM_I2C_ADDRESS, ReadAddr, pBuffer, buffersize) != HAL_OK)
- {
- BSP_EEPROM_TIMEOUT_UserCallback();
- return EEPROM_FAIL;
- }
-
- /* If all operations OK, return EEPROM_OK (0) */
- return EEPROM_OK;
-}
-
-/**
- * @brief Writes buffer of data to the I2C EEPROM.
- * @param pBuffer: pointer to the buffer containing the data to be written
- * to the EEPROM.
- * @param WriteAddr: EEPROM's internal address to write to.
- * @param NumByteToWrite: number of bytes to write to the EEPROM.
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-uint32_t BSP_EEPROM_WriteBuffer(uint8_t* pBuffer, uint16_t WriteAddr, uint16_t NumByteToWrite)
-{
- uint8_t numofpage = 0, numofsingle = 0, count = 0;
- uint16_t addr = 0;
- uint8_t dataindex = 0;
- uint32_t status = EEPROM_OK;
-
- addr = WriteAddr % EEPROM_PAGESIZE;
- count = EEPROM_PAGESIZE - addr;
- numofpage = NumByteToWrite / EEPROM_PAGESIZE;
- numofsingle = NumByteToWrite % EEPROM_PAGESIZE;
-
- /* If WriteAddr is EEPROM_PAGESIZE aligned */
- if(addr == 0)
- {
- /* If NumByteToWrite < EEPROM_PAGESIZE */
- if(numofpage == 0)
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- /* Start writing data */
- status = EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- /* If NumByteToWrite > EEPROM_PAGESIZE */
- else
- {
- while(numofpage--)
- {
- /* Store the number of data to be written */
- dataindex = EEPROM_PAGESIZE;
- status = EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
-
- WriteAddr += EEPROM_PAGESIZE;
- pBuffer += EEPROM_PAGESIZE;
- }
-
- if(numofsingle!=0)
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- status = EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- }
- }
- /* If WriteAddr is not EEPROM_PAGESIZE aligned */
- else
- {
- /* If NumByteToWrite < EEPROM_PAGESIZE */
- if(numofpage == 0)
- {
- /* If the number of data to be written is more than the remaining space
- in the current page: */
- if(NumByteToWrite > count)
- {
- /* Store the number of data to be written */
- dataindex = count;
- /* Write the data contained in same page */
- status = EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
-
- /* Store the number of data to be written */
- dataindex = (NumByteToWrite - count);
- /* Write the remaining data in the following page */
- status = EEPROM_WritePage((uint8_t*)(pBuffer + count), (WriteAddr + count), (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- else
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- status = EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- }
- /* If NumByteToWrite > EEPROM_PAGESIZE */
- else
- {
- NumByteToWrite -= count;
- numofpage = NumByteToWrite / EEPROM_PAGESIZE;
- numofsingle = NumByteToWrite % EEPROM_PAGESIZE;
-
- if(count != 0)
- {
- /* Store the number of data to be written */
- dataindex = count;
- status = EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- WriteAddr += count;
- pBuffer += count;
- }
-
- while(numofpage--)
- {
- /* Store the number of data to be written */
- dataindex = EEPROM_PAGESIZE;
- status = EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- WriteAddr += EEPROM_PAGESIZE;
- pBuffer += EEPROM_PAGESIZE;
- }
- if(numofsingle != 0)
- {
- /* Store the number of data to be written */
- dataindex = numofsingle;
- status = EEPROM_WritePage(pBuffer, WriteAddr, (uint8_t*)(&dataindex));
- if(status != EEPROM_OK)
- {
- return status;
- }
- }
- }
- }
-
- /* If all operations OK, return EEPROM_OK (0) */
- return EEPROM_OK;
-}
-
-/**
- * @brief Writes more than one byte to the EEPROM with a single WRITE cycle.
- *
- * @note The number of bytes (combined to write start address) must not
- * cross the EEPROM page boundary. This function can only write into
- * the boundaries of an EEPROM page.
- * This function doesn't check on boundaries condition (in this driver
- * the function BSP_EEPROM_WriteBuffer() which calls EEPROM_WritePage() is
- * responsible of checking on Page boundaries).
- *
- * @param pBuffer: pointer to the buffer containing the data to be written to
- * the EEPROM.
- * @param WriteAddr: EEPROM's internal address to write to.
- * @param NumByteToWrite: pointer to the variable holding number of bytes to
- * be written into the EEPROM.
- *
- * @note The variable pointed by NumByteToWrite is reset to 0 when all the
- * data are written to the EEPROM. Application should monitor this
- * variable in order know when the transfer is complete.
- *
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-static uint32_t EEPROM_WritePage(uint8_t* pBuffer, uint16_t WriteAddr, uint8_t* NumByteToWrite)
-{
- uint32_t buffersize = *NumByteToWrite;
- uint32_t status = EEPROM_OK;
-
- /* Set the pointer to the Number of data to be written */
- EEPROMDataWrite = *NumByteToWrite;
- if(EEPROM_IO_WriteData(EEPROM_I2C_ADDRESS, WriteAddr, pBuffer, buffersize) != HAL_OK)
- {
- BSP_EEPROM_TIMEOUT_UserCallback();
- status = EEPROM_FAIL;
- }
-
- while(EEPROM_WaitEepromStandbyState() != EEPROM_OK)
- {
- return EEPROM_FAIL;
- }
-
- /* If all operations OK, return EEPROM_OK (0) */
- return status;
-}
-
-/**
- * @brief Waits for EEPROM Standby state.
- *
- * @note This function allows to wait and check that EEPROM has finished the
- * last operation. It is mostly used after Write operation: after receiving
- * the buffer to be written, the EEPROM may need additional time to actually
- * perform the write operation. During this time, it doesn't answer to
- * I2C packets addressed to it. Once the write operation is complete
- * the EEPROM responds to its address.
- *
- * @retval EEPROM_OK (0) if operation is correctly performed, else return value
- * different from EEPROM_OK (0) or the timeout user callback.
- */
-static uint32_t EEPROM_WaitEepromStandbyState(void)
-{
- /* Check if the maximum allowed number of trials has bee reached */
- if(EEPROM_IO_IsDeviceReady(EEPROM_I2C_ADDRESS, EEPROM_MAX_TRIALS) != HAL_OK)
- {
- /* If the maximum number of trials has been reached, exit the function */
- BSP_EEPROM_TIMEOUT_UserCallback();
- return EEPROM_TIMEOUT;
- }
- return EEPROM_OK;
-}
-
-/**
- * @brief Basic management of the timeout situation.
- */
-__weak void BSP_EEPROM_TIMEOUT_UserCallback(void)
-{
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_eeprom.h b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_eeprom.h
deleted file mode 100644
index f01f55d28d..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_eeprom.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_eeprom.h
- * @author MCD Application Team
- * @brief This file contains all the functions prototypes for
- * the stm32f4xg_eval_eeprom.c firmware driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F4xG_EVAL_EEPROM_H
-#define __STM32F4xG_EVAL_EEPROM_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL_EEPROM
- * @brief This file includes the I2C EEPROM driver of STM32F4xG-EVAL evaluation board.
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_EEPROM_Exported_Constants STM324xG EVAL EEPROM Exported Constants
- * @{
- */
-/* EEPROM hardware address and page size */
-#define EEPROM_PAGESIZE 32
-#define EEPROM_MAX_SIZE 0x2000 /* 64Kbit*/
-/* Maximum Timeout values for flags and events waiting loops: This timeout is based
- on systick set to 1ms.
- Timeout for read based if read all the EEPROM: EEPROM_MAX_SIZE * BSP_I2C_SPEED (640ms) */
-#define EEPROM_READ_TIMEOUT ((uint32_t)(1000))
-/* Timeout for write based on max write which is EEPROM_PAGESIZE bytes: EEPROM_PAGESIZE * BSP_I2C_SPEED (320us)*/
-#define EEPROM_WRITE_TIMEOUT ((uint32_t)(1000))
-
-/* Maximum number of trials for EEPROM_WaitEepromStandbyState() function */
-#define EEPROM_MAX_TRIALS 3000
-
-#define EEPROM_OK 0
-#define EEPROM_FAIL 1
-#define EEPROM_TIMEOUT 2
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_EEPROM_Exported_Functions STM324xG EVAL EEPROM Exported Functions
- * @{
- */
-uint32_t BSP_EEPROM_Init(void);
-uint32_t BSP_EEPROM_ReadBuffer(uint8_t *pBuffer, uint16_t ReadAddr, uint16_t *NumByteToRead);
-uint32_t BSP_EEPROM_WriteBuffer(uint8_t *pBuffer, uint16_t WriteAddr, uint16_t NumByteToWrite);
-
-/* USER Callbacks: This function is declared as __weak in EEPROM driver and
- should be implemented into user application.
- BSP_EEPROM_TIMEOUT_UserCallback() function is called whenever a timeout condition
- occurs during communication (waiting on an event that doesn't occur, bus
- errors, busy devices ...). */
-void BSP_EEPROM_TIMEOUT_UserCallback(void);
-
-/* Link function for I2C EEPROM peripheral */
-void EEPROM_IO_Init(void);
-HAL_StatusTypeDef EEPROM_IO_WriteData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_ReadData(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef EEPROM_IO_IsDeviceReady(uint16_t DevAddress, uint32_t Trials);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F4xG_EVAL_EEPROM_H */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_io.c b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_io.c
deleted file mode 100644
index 29a8622913..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_io.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_io.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage the IO pins
- * on STM324xG-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the IO module of the STM324xG-EVAL evaluation
- board.
- - The STMPE811 IO expander device component driver must be included with this
- driver in order to run the IO functionalities commanded by the IO expander
- device mounted on the evaluation board.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the IO module using the BSP_IO_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- communication layer configuration to start the IO functionalities use.
-
- + IO functionalities use
- o The IO pin mode is configured when calling the function BSP_IO_ConfigPin(), you
- must specify the desired IO mode by choosing the "IO_ModeTypedef" parameter
- predefined value.
- o If an IO pin is used in interrupt mode, the function BSP_IO_ITGetStatus() is
- needed to get the interrupt status. To clear the IT pending bits, you should
- call the function BSP_IO_ITClear() with specifying the IO pending bit to clear.
- o The IT is handled using the corresponding external interrupt IRQ handler,
- the user IT callback treatment is implemented on the same external interrupt
- callback.
- o To get/set an IO pin combination state you can use the functions
- BSP_IO_ReadPin()/BSP_IO_WritePin() or the function BSP_IO_TogglePin() to toggle the pin
- state.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval_io.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_IO STM324xG EVAL IO
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_IO_Private_Types_Definitions STM324xG EVAL IO Private Types Definitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_IO_Private_Variables STM324xG EVAL IO Private Variables
- * @{
- */
-static IO_DrvTypeDef *io_driver;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_IO_Private_Functions STM324xG EVAL IO Private Functions
- * @{
- */
-
-/**
- * @brief Initializes and configures the IO functionalities and configures all
- * necessary hardware resources (GPIOs, clocks..).
- * @note BSP_IO_Init() is using HAL_Delay() function to ensure that stmpe811
- * IO Expander is correctly reset. HAL_Delay() function provides accurate
- * delay (in milliseconds) based on variable incremented in SysTick ISR.
- * This implies that if BSP_IO_Init() is called from a peripheral ISR process,
- * then the SysTick interrupt must have higher priority (numerically lower)
- * than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
- * @retval IO_OK: if all initializations are OK. Other value if error.
- */
-uint8_t BSP_IO_Init(void)
-{
- uint8_t ret = IO_ERROR;
-
- if(stmpe811_io_drv.ReadID(IO_I2C_ADDRESS) == STMPE811_ID)
- {
- /* Initialize the IO driver structure */
- io_driver = &stmpe811_io_drv;
-
- io_driver->Init(IO_I2C_ADDRESS);
- io_driver->Start(IO_I2C_ADDRESS, IO_PIN_ALL);
-
- ret = IO_OK;
- }
-
- return ret;
-}
-
-/**
- * @brief Gets the selected pins IT status.
- * @param IO_Pin: Selected pins to check the status.
- * This parameter can be any combination of the IO pins.
- * @retval IO_OK: if read status OK. Other value if error.
- */
-uint8_t BSP_IO_ITGetStatus(uint16_t IO_Pin)
-{
- /* Return the IO Pin IT status */
- return (io_driver->ITStatus(IO_I2C_ADDRESS, IO_Pin));
-}
-
-/**
- * @brief Clears the selected IO IT pending bit.
- * @param IO_Pin: Selected pins to check the status.
- * This parameter can be any combination of the IO pins.
- */
-void BSP_IO_ITClear(uint16_t IO_Pin)
-{
- io_driver->ClearIT(IO_I2C_ADDRESS, IO_Pin);
-}
-
-/**
- * @brief Configures the IO pin(s) according to IO mode structure value.
- * @param IO_Pin: Output pin to be set or reset.
- * This parameter can be one of the following values:
- * @arg STMPE811_PIN_x: where x can be from 0 to 7
- * @param IO_Mode: IO pin mode to configure
- * This parameter can be one of the following values:
- * @arg IO_MODE_INPUT
- * @arg IO_MODE_OUTPUT
- * @arg IO_MODE_IT_RISING_EDGE
- * @arg IO_MODE_IT_FALLING_EDGE
- * @arg IO_MODE_IT_LOW_LEVEL
- * @arg IO_MODE_IT_HIGH_LEVEL
- * @retval IO_OK: if all initializations are OK. Other value if error.
- */
-uint8_t BSP_IO_ConfigPin(uint16_t IO_Pin, IO_ModeTypedef IO_Mode)
-{
- /* Configure the selected IO pin(s) mode */
- io_driver->Config(IO_I2C_ADDRESS, IO_Pin, IO_Mode);
-
- return IO_OK;
-}
-
-/**
- * @brief Sets the selected pins state.
- * @param IO_Pin: Selected pins to write.
- * This parameter can be any combination of the IO pins.
- * @param PinState: New pins state to write
- */
-void BSP_IO_WritePin(uint16_t IO_Pin, uint8_t PinState)
-{
- io_driver->WritePin(IO_I2C_ADDRESS, IO_Pin, PinState);
-}
-
-/**
- * @brief Gets the selected pins current state.
- * @param IO_Pin: Selected pins to read.
- * This parameter can be any combination of the IO pins.
- * @retval The current pins state
- */
-uint16_t BSP_IO_ReadPin(uint16_t IO_Pin)
-{
- return(io_driver->ReadPin(IO_I2C_ADDRESS, IO_Pin));
-}
-
-/**
- * @brief Toggles the selected pins state
- * @param IO_Pin: Selected pins to toggle.
- * This parameter can be any combination of the IO pins.
- */
-void BSP_IO_TogglePin(uint16_t IO_Pin)
-{
- if(io_driver->ReadPin(IO_I2C_ADDRESS, IO_Pin) == 1) /* Set */
- {
- io_driver->WritePin(IO_I2C_ADDRESS, IO_Pin, 0); /* Reset */
- }
- else
- {
- io_driver->WritePin(IO_I2C_ADDRESS, IO_Pin, 1); /* Set */
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_io.h b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_io.h
deleted file mode 100644
index 3220b2b573..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_io.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_io.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324xg_eval_io.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324xG_EVAL_IO_H
-#define __STM324xG_EVAL_IO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval.h"
-/* Include IO component driver */
-#include "../Components/stmpe811/stmpe811.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_IO STM324xG EVAL IO
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_IO_Exported_Types STM324xG EVAL IO Exported Types
- * @{
- */
-typedef enum
-{
- IO_OK = 0x00,
- IO_ERROR = 0x01,
- IO_TIMEOUT = 0x02
-}IO_StatusTypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_IO_Exported_Constants STM324xG EVAL IO Exported Constants
- * @{
- */
-#define IO_PIN_0 0x01
-#define IO_PIN_1 0x02
-#define IO_PIN_2 0x04
-#define IO_PIN_3 0x08
-#define IO_PIN_4 0x10
-#define IO_PIN_5 0x20
-#define IO_PIN_6 0x40
-#define IO_PIN_7 0x80
-#define IO_PIN_ALL 0xFF
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_IO_Exported_Functions STM324xG EVAL IO Exported Functions
- * @{
- */
-uint8_t BSP_IO_Init(void);
-void BSP_IO_ITClear(uint16_t IO_Pin);
-uint8_t BSP_IO_ITGetStatus(uint16_t IO_Pin);
-uint8_t BSP_IO_ConfigPin(uint16_t IO_Pin, IO_ModeTypedef IO_Mode);
-void BSP_IO_WritePin(uint16_t IO_Pin, uint8_t PinState);
-uint16_t BSP_IO_ReadPin(uint16_t IO_Pin);
-void BSP_IO_TogglePin(uint16_t IO_Pin);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324xG_EVAL_IO_H */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_lcd.c b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_lcd.c
deleted file mode 100644
index 250172475b..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_lcd.c
+++ /dev/null
@@ -1,1001 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_lcd.c
- * @author MCD Application Team
- * @brief This file includes the driver for Liquid Crystal Display (LCD) module
- * mounted on STM324xG-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive indirectly an LCD TFT.
- - This driver supports the ILI9325 LCD mounted on MB785 daughter board
- - The ILI9325 component driver MUST be included with this driver.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the LCD using the BSP_LCD_Init() function.
-
- + Display on LCD
- o Clear the hole LCD using the BSP_LCD_Clear() function or only one specified
- string line using the BSP_LCD_ClearStringLine() function.
- o Display a character on the specified line and column using the BSP_LCD_DisplayChar()
- function or a complete string line using the BSP_LCD_DisplayStringAtLine() function.
- o Display a string line on the specified position (x,y in pixel) and align mode
- using the BSP_LCD_DisplayStringAtLine() function.
- o Draw and fill basic shapes (dot, line, rectangle, circle, ellipse, .. bitmap, raw picture)
- on LCD using a set of functions.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval_lcd.h"
-#include "../../../Utilities/Fonts/fonts.h"
-#include "../../../Utilities/Fonts/font24.c"
-#include "../../../Utilities/Fonts/font20.c"
-#include "../../../Utilities/Fonts/font16.c"
-#include "../../../Utilities/Fonts/font12.c"
-#include "../../../Utilities/Fonts/font8.c"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_LCD STM324xG EVAL LCD
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_LCD_Private_Defines STM324xG EVAL LCD Private Defines
- * @{
- */
-#define POLY_X(Z) ((int32_t)((Points + (Z))->X))
-#define POLY_Y(Z) ((int32_t)((Points + (Z))->Y))
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_LCD_Private_Macros STM324xG EVAL LCD Private Macros
- * @{
- */
-#define ABS(X) ((X) > 0 ? (X) : -(X))
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_LCD_Private_Variables STM324xG EVAL LCD Private Variables
- * @{
- */
-LCD_DrawPropTypeDef DrawProp;
-static LCD_DrvTypeDef *lcd_drv;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_LCD_Private_FunctionPrototypes STM324xG EVAL LCD Private FunctionPrototypes
- * @{
- */
-static void DrawChar(uint16_t Xpos, uint16_t Ypos, const uint8_t *c);
-static void SetDisplayWindow(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-static void FillTriangle(uint16_t x1, uint16_t x2, uint16_t x3, uint16_t y1, uint16_t y2, uint16_t y3);
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_LCD_Private_Functions STM324xG EVAL LCD Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the LCD.
- * @retval LCD state
- */
-uint8_t BSP_LCD_Init(void)
-{
- uint8_t ret = LCD_ERROR;
-
- /* Default value for draw propriety */
- DrawProp.BackColor = 0xFFFF;
- DrawProp.pFont = &Font24;
- DrawProp.TextColor = 0x0000;
-
- if(ili9325_drv.ReadID() == ILI9325_ID)
- {
- lcd_drv = &ili9325_drv;
-
- /* LCD Init */
- lcd_drv->Init();
-
- /* Initialize the font */
- BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
-
- ret = LCD_OK;
- }
-
- return ret;
-}
-
-/**
- * @brief Gets the LCD X size.
- * @retval Used LCD X size
- */
-uint32_t BSP_LCD_GetXSize(void)
-{
- return(lcd_drv->GetLcdPixelWidth());
-}
-
-/**
- * @brief Gets the LCD Y size.
- * @retval Used LCD Y size
- */
-uint32_t BSP_LCD_GetYSize(void)
-{
- return(lcd_drv->GetLcdPixelHeight());
-}
-
-/**
- * @brief Gets the LCD text color.
- * @retval Used text color.
- */
-uint16_t BSP_LCD_GetTextColor(void)
-{
- return DrawProp.TextColor;
-}
-
-/**
- * @brief Gets the LCD background color.
- * @retval Used background color
- */
-uint16_t BSP_LCD_GetBackColor(void)
-{
- return DrawProp.BackColor;
-}
-
-/**
- * @brief Sets the LCD text color.
- * @param Color: Text color code RGB(5-6-5)
- */
-void BSP_LCD_SetTextColor(uint16_t Color)
-{
- DrawProp.TextColor = Color;
-}
-
-/**
- * @brief Sets the LCD background color.
- * @param Color: Background color code RGB(5-6-5)
- */
-void BSP_LCD_SetBackColor(uint16_t Color)
-{
- DrawProp.BackColor = Color;
-}
-
-/**
- * @brief Sets the LCD text font.
- * @param fonts: Font to be used
- */
-void BSP_LCD_SetFont(sFONT *fonts)
-{
- DrawProp.pFont = fonts;
-}
-
-/**
- * @brief Gets the LCD text font.
- * @retval Used font
- */
-sFONT *BSP_LCD_GetFont(void)
-{
- return DrawProp.pFont;
-}
-
-/**
- * @brief Clears the hole LCD.
- * @param Color: Color of the background
- */
-void BSP_LCD_Clear(uint16_t Color)
-{
- uint32_t counter = 0;
- uint32_t color_backup = DrawProp.TextColor;
- DrawProp.TextColor = Color;
-
- for(counter = 0; counter < BSP_LCD_GetYSize(); counter++)
- {
- BSP_LCD_DrawHLine(0, counter, BSP_LCD_GetXSize());
- }
- DrawProp.TextColor = color_backup;
- BSP_LCD_SetTextColor(DrawProp.TextColor);
-}
-
-/**
- * @brief Clears the selected line.
- * @param Line: Line to be cleared
- * This parameter can be one of the following values:
- * @arg 0..9: if the Current fonts is Font16x24
- * @arg 0..19: if the Current fonts is Font12x12 or Font8x12
- * @arg 0..29: if the Current fonts is Font8x8
- */
-void BSP_LCD_ClearStringLine(uint16_t Line)
-{
- uint32_t color_backup = DrawProp.TextColor;
- DrawProp.TextColor = DrawProp.BackColor;;
-
- /* Draw a rectangle with background color */
- BSP_LCD_FillRect(0, (Line * DrawProp.pFont->Height), BSP_LCD_GetXSize(), DrawProp.pFont->Height);
-
- DrawProp.TextColor = color_backup;
- BSP_LCD_SetTextColor(DrawProp.TextColor);
-}
-
-/**
- * @brief Displays one character.
- * @param Xpos: Start column address
- * @param Ypos: Line where to display the character shape.
- * @param Ascii: Character ascii code
- * This parameter must be a number between Min_Data = 0x20 and Max_Data = 0x7E
- */
-void BSP_LCD_DisplayChar(uint16_t Xpos, uint16_t Ypos, uint8_t Ascii)
-{
- DrawChar(Xpos, Ypos, &DrawProp.pFont->table[(Ascii-' ') *\
- DrawProp.pFont->Height * ((DrawProp.pFont->Width + 7) / 8)]);
-}
-
-/**
- * @brief Displays characters on the LCD.
- * @param Xpos: X position (in pixel)
- * @param Ypos: Y position (in pixel)
- * @param Text: Pointer to string to display on LCD
- * @param Mode: Display mode
- * This parameter can be one of the following values:
- * @arg CENTER_MODE
- * @arg RIGHT_MODE
- * @arg LEFT_MODE
- */
-void BSP_LCD_DisplayStringAt(uint16_t Xpos, uint16_t Ypos, uint8_t *Text, Line_ModeTypdef Mode)
-{
- uint16_t refcolumn = 1, i = 0;
- uint32_t size = 0, xsize = 0;
- uint8_t *ptr = Text;
-
- /* Get the text size */
- while (*ptr++) size ++ ;
-
- /* Characters number per line */
- xsize = (BSP_LCD_GetXSize()/DrawProp.pFont->Width);
-
- switch (Mode)
- {
- case CENTER_MODE:
- {
- refcolumn = Xpos + ((xsize - size)* DrawProp.pFont->Width) / 2;
- break;
- }
- case LEFT_MODE:
- {
- refcolumn = Xpos;
- break;
- }
- case RIGHT_MODE:
- {
- refcolumn = - Xpos + ((xsize - size)*DrawProp.pFont->Width);
- break;
- }
- default:
- {
- refcolumn = Xpos;
- break;
- }
- }
-
- /* Send the string character by character on lCD */
- while ((*Text != 0) & (((BSP_LCD_GetXSize() - (i*DrawProp.pFont->Width)) & 0xFFFF) >= DrawProp.pFont->Width))
- {
- /* Display one character on LCD */
- BSP_LCD_DisplayChar(refcolumn, Ypos, *Text);
- /* Decrement the column position by 16 */
- refcolumn += DrawProp.pFont->Width;
- /* Point on the next character */
- Text++;
- i++;
- }
-}
-
-/**
- * @brief Displays a character on the LCD.
- * @param Line: Line where to display the character shape
- * This parameter can be one of the following values:
- * @arg 0..9: if the Current fonts is Font16x24
- * @arg 0..19: if the Current fonts is Font12x12 or Font8x12
- * @arg 0..29: if the Current fonts is Font8x8
- * @param ptr: Pointer to string to display on LCD
- */
-void BSP_LCD_DisplayStringAtLine(uint16_t Line, uint8_t *ptr)
-{
- BSP_LCD_DisplayStringAt(0, LINE(Line), ptr, LEFT_MODE);
-}
-
-/**
- * @brief Reads an LCD pixel.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @retval RGB pixel color
- */
-uint16_t BSP_LCD_ReadPixel(uint16_t Xpos, uint16_t Ypos)
-{
- uint16_t ret = 0;
-
- if(lcd_drv->ReadPixel != NULL)
- {
- ret = lcd_drv->ReadPixel(Xpos, Ypos);
- }
-
- return ret;
-}
-
-/**
- * @brief Draws a pixel on LCD.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param RGB_Code: Pixel color in RGB mode (5-6-5)
- */
-void BSP_LCD_DrawPixel(uint16_t Xpos, uint16_t Ypos, uint16_t RGB_Code)
-{
- if(lcd_drv->WritePixel != NULL)
- {
- lcd_drv->WritePixel(Xpos, Ypos, RGB_Code);
- }
-}
-
-/**
- * @brief Draws an horizontal line.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Length: Line length
- */
-void BSP_LCD_DrawHLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length)
-{
- uint32_t index = 0;
-
- if(lcd_drv->DrawHLine != NULL)
- {
- lcd_drv->DrawHLine(DrawProp.TextColor, Xpos, Ypos, Length);
- }
- else
- {
- for(index = 0; index < Length; index++)
- {
- BSP_LCD_DrawPixel((Xpos + index), Ypos, DrawProp.TextColor);
- }
- }
-}
-
-/**
- * @brief Draws a vertical line.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Length: Line length
- */
-void BSP_LCD_DrawVLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length)
-{
- uint32_t index = 0;
-
- if(lcd_drv->DrawVLine != NULL)
- {
- lcd_drv->DrawVLine(DrawProp.TextColor, Xpos, Ypos, Length);
- }
- else
- {
- for(index = 0; index < Length; index++)
- {
- BSP_LCD_DrawPixel(Xpos, Ypos + index, DrawProp.TextColor);
- }
- }
-}
-
-/**
- * @brief Draws an uni-line (between two points).
- * @param x1: Point 1 X position
- * @param y1: Point 1 Y position
- * @param x2: Point 2 X position
- * @param y2: Point 2 Y position
- */
-void BSP_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
-{
- int16_t deltax = 0, deltay = 0, x = 0, y = 0, xinc1 = 0, xinc2 = 0,
- yinc1 = 0, yinc2 = 0, den = 0, num = 0, numadd = 0, numpixels = 0,
- curpixel = 0;
-
- deltax = ABS(x2 - x1); /* The difference between the x's */
- deltay = ABS(y2 - y1); /* The difference between the y's */
- x = x1; /* Start x off at the first pixel */
- y = y1; /* Start y off at the first pixel */
-
- if (x2 >= x1) /* The x-values are increasing */
- {
- xinc1 = 1;
- xinc2 = 1;
- }
- else /* The x-values are decreasing */
- {
- xinc1 = -1;
- xinc2 = -1;
- }
-
- if (y2 >= y1) /* The y-values are increasing */
- {
- yinc1 = 1;
- yinc2 = 1;
- }
- else /* The y-values are decreasing */
- {
- yinc1 = -1;
- yinc2 = -1;
- }
-
- if (deltax >= deltay) /* There is at least one x-value for every y-value */
- {
- xinc1 = 0; /* Don't change the x when numerator >= denominator */
- yinc2 = 0; /* Don't change the y for every iteration */
- den = deltax;
- num = deltax / 2;
- numadd = deltay;
- numpixels = deltax; /* There are more x-values than y-values */
- }
- else /* There is at least one y-value for every x-value */
- {
- xinc2 = 0; /* Don't change the x for every iteration */
- yinc1 = 0; /* Don't change the y when numerator >= denominator */
- den = deltay;
- num = deltay / 2;
- numadd = deltax;
- numpixels = deltay; /* There are more y-values than x-values */
- }
-
- for (curpixel = 0; curpixel <= numpixels; curpixel++)
- {
- BSP_LCD_DrawPixel(x, y, DrawProp.TextColor); /* Draw the current pixel */
- num += numadd; /* Increase the numerator by the top of the fraction */
- if (num >= den) /* Check if numerator >= denominator */
- {
- num -= den; /* Calculate the new numerator value */
- x += xinc1; /* Change the x as appropriate */
- y += yinc1; /* Change the y as appropriate */
- }
- x += xinc2; /* Change the x as appropriate */
- y += yinc2; /* Change the y as appropriate */
- }
-}
-
-/**
- * @brief Draws a rectangle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Width: Rectangle width
- * @param Height: Rectangle height
- */
-void BSP_LCD_DrawRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- /* Draw horizontal lines */
- BSP_LCD_DrawHLine(Xpos, Ypos, Width);
- BSP_LCD_DrawHLine(Xpos, (Ypos+ Height), Width);
-
- /* Draw vertical lines */
- BSP_LCD_DrawVLine(Xpos, Ypos, Height);
- BSP_LCD_DrawVLine((Xpos + Width), Ypos, Height);
-}
-
-/**
- * @brief Draws a circle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Radius: Circle radius
- */
-void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
-{
- int32_t D; /* Decision Variable */
- uint32_t CurX; /* Current X Value */
- uint32_t CurY; /* Current Y Value */
-
- D = 3 - (Radius << 1);
- CurX = 0;
- CurY = Radius;
-
- while (CurX <= CurY)
- {
- BSP_LCD_DrawPixel((Xpos + CurX), (Ypos - CurY), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos - CurX), (Ypos - CurY), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos + CurY), (Ypos - CurX), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos - CurY), (Ypos - CurX), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos + CurX), (Ypos + CurY), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos - CurX), (Ypos + CurY), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos + CurY), (Ypos + CurX), DrawProp.TextColor);
-
- BSP_LCD_DrawPixel((Xpos - CurY), (Ypos + CurX), DrawProp.TextColor);
-
- /* Initialize the font */
- BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
-
- if (D < 0)
- {
- D += (CurX << 2) + 6;
- }
- else
- {
- D += ((CurX - CurY) << 2) + 10;
- CurY--;
- }
- CurX++;
- }
-}
-
-/**
- * @brief Draws an poly-line (between many points).
- * @param Points: Pointer to the points array
- * @param PointCount: Number of points
- */
-void BSP_LCD_DrawPolygon(pPoint Points, uint16_t PointCount)
-{
- int16_t X = 0, Y = 0;
-
- if(PointCount < 2)
- {
- return;
- }
-
- BSP_LCD_DrawLine(Points->X, Points->Y, (Points+PointCount-1)->X, (Points+PointCount-1)->Y);
-
- while(--PointCount)
- {
- X = Points->X;
- Y = Points->Y;
- Points++;
- BSP_LCD_DrawLine(X, Y, Points->X, Points->Y);
- }
-
-}
-
-/**
- * @brief Draws an ellipse on LCD.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param XRadius: Ellipse X radius
- * @param YRadius: Ellipse Y radius
- */
-void BSP_LCD_DrawEllipse(int Xpos, int Ypos, int XRadius, int YRadius)
-{
- int x = 0, y = -YRadius, err = 2-2*XRadius, e2;
- float K = 0, rad1 = 0, rad2 = 0;
-
- rad1 = XRadius;
- rad2 = YRadius;
-
- K = (float)(rad2/rad1);
-
- do {
- BSP_LCD_DrawPixel((Xpos-(uint16_t)(x/K)), (Ypos+y), DrawProp.TextColor);
- BSP_LCD_DrawPixel((Xpos+(uint16_t)(x/K)), (Ypos+y), DrawProp.TextColor);
- BSP_LCD_DrawPixel((Xpos+(uint16_t)(x/K)), (Ypos-y), DrawProp.TextColor);
- BSP_LCD_DrawPixel((Xpos-(uint16_t)(x/K)), (Ypos-y), DrawProp.TextColor);
-
- e2 = err;
- if (e2 <= x) {
- err += ++x*2+1;
- if (-y == x && e2 <= y) e2 = 0;
- }
- if (e2 > y) err += ++y*2+1;
- }
- while (y <= 0);
-}
-
-/**
- * @brief Draws a bitmap picture (16 bpp).
- * @param Xpos: Bmp X position in the LCD
- * @param Ypos: Bmp Y position in the LCD
- * @param pbmp: Pointer to Bmp picture address.
- */
-void BSP_LCD_DrawBitmap(uint16_t Xpos, uint16_t Ypos, uint8_t *pbmp)
-{
- uint32_t height = 0;
- uint32_t width = 0;
-
- /* Read bitmap width */
- width = pbmp[18] + (pbmp[19] << 8) + (pbmp[20] << 16) + (pbmp[21] << 24);
-
- /* Read bitmap height */
- height = pbmp[22] + (pbmp[23] << 8) + (pbmp[24] << 16) + (pbmp[25] << 24);
-
- SetDisplayWindow(Xpos, Ypos, width, height);
-
- if(lcd_drv->DrawBitmap != NULL)
- {
- lcd_drv->DrawBitmap(Xpos, Ypos, pbmp);
- }
- SetDisplayWindow(0, 0, BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
-}
-
-/**
- * @brief Draws RGB Image (16 bpp).
- * @param Xpos: X position in the LCD
- * @param Ypos: Y position in the LCD
- * @param Xsize: X size in the LCD
- * @param Ysize: Y size in the LCD
- * @param pdata: Pointer to the RGB Image address.
- */
-void BSP_LCD_DrawRGBImage(uint16_t Xpos, uint16_t Ypos, uint16_t Xsize, uint16_t Ysize, uint8_t *pdata)
-{
-
- SetDisplayWindow(Xpos, Ypos, Xsize, Ysize);
-
- if(lcd_drv->DrawRGBImage != NULL)
- {
- lcd_drv->DrawRGBImage(Xpos, Ypos, Xsize, Ysize, pdata);
- }
- SetDisplayWindow(0, 0, BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
-}
-
-/**
- * @brief Draws a full rectangle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Width: Rectangle width
- * @param Height: Rectangle height
- */
-void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- BSP_LCD_SetTextColor(DrawProp.TextColor);
- do
- {
- BSP_LCD_DrawHLine(Xpos, Ypos++, Width);
- }
- while(Height--);
-}
-
-/**
- * @brief Draws a full circle.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param Radius: Circle radius
- */
-void BSP_LCD_FillCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
-{
- int32_t D; /* Decision Variable */
- uint32_t CurX; /* Current X Value */
- uint32_t CurY; /* Current Y Value */
-
- D = 3 - (Radius << 1);
-
- CurX = 0;
- CurY = Radius;
-
- BSP_LCD_SetTextColor(DrawProp.TextColor);
-
- while (CurX <= CurY)
- {
- if(CurY > 0)
- {
- BSP_LCD_DrawHLine(Xpos - CurY, Ypos + CurX, 2*CurY);
- BSP_LCD_DrawHLine(Xpos - CurY, Ypos - CurX, 2*CurY);
- }
-
- if(CurX > 0)
- {
- BSP_LCD_DrawHLine(Xpos - CurX, Ypos - CurY, 2*CurX);
- BSP_LCD_DrawHLine(Xpos - CurX, Ypos + CurY, 2*CurX);
- }
- if (D < 0)
- {
- D += (CurX << 2) + 6;
- }
- else
- {
- D += ((CurX - CurY) << 2) + 10;
- CurY--;
- }
- CurX++;
- }
-
- BSP_LCD_SetTextColor(DrawProp.TextColor);
- BSP_LCD_DrawCircle(Xpos, Ypos, Radius);
-}
-
-/**
- * @brief Draws a full poly-line (between many points).
- * @param Points: Pointer to the points array
- * @param PointCount: Number of points
- */
-void BSP_LCD_FillPolygon(pPoint Points, uint16_t PointCount)
-{
-
- int16_t X = 0, Y = 0, X2 = 0, Y2 = 0, X_center = 0, Y_center = 0, X_first = 0, Y_first = 0, pixelX = 0, pixelY = 0, counter = 0;
- uint16_t IMAGE_LEFT = 0, IMAGE_RIGHT = 0, IMAGE_TOP = 0, IMAGE_BOTTOM = 0;
-
- IMAGE_LEFT = IMAGE_RIGHT = Points->X;
- IMAGE_TOP= IMAGE_BOTTOM = Points->Y;
-
- for(counter = 1; counter < PointCount; counter++)
- {
- pixelX = POLY_X(counter);
- if(pixelX < IMAGE_LEFT)
- {
- IMAGE_LEFT = pixelX;
- }
- if(pixelX > IMAGE_RIGHT)
- {
- IMAGE_RIGHT = pixelX;
- }
-
- pixelY = POLY_Y(counter);
- if(pixelY < IMAGE_TOP)
- {
- IMAGE_TOP = pixelY;
- }
- if(pixelY > IMAGE_BOTTOM)
- {
- IMAGE_BOTTOM = pixelY;
- }
- }
-
- if(PointCount < 2)
- {
- return;
- }
-
- X_center = (IMAGE_LEFT + IMAGE_RIGHT)/2;
- Y_center = (IMAGE_BOTTOM + IMAGE_TOP)/2;
-
- X_first = Points->X;
- Y_first = Points->Y;
-
- while(--PointCount)
- {
- X = Points->X;
- Y = Points->Y;
- Points++;
- X2 = Points->X;
- Y2 = Points->Y;
-
- FillTriangle(X, X2, X_center, Y, Y2, Y_center);
- FillTriangle(X, X_center, X2, Y, Y_center, Y2);
- FillTriangle(X_center, X2, X, Y_center, Y2, Y);
- }
-
- FillTriangle(X_first, X2, X_center, Y_first, Y2, Y_center);
- FillTriangle(X_first, X_center, X2, Y_first, Y_center, Y2);
- FillTriangle(X_center, X2, X_first, Y_center, Y2, Y_first);
-}
-
-/**
- * @brief Draws a full ellipse.
- * @param Xpos: X position
- * @param Ypos: Y position
- * @param XRadius: Ellipse X radius
- * @param YRadius: Ellipse Y radius
- */
-void BSP_LCD_FillEllipse(int Xpos, int Ypos, int XRadius, int YRadius)
-{
- int x = 0, y = -YRadius, err = 2-2*XRadius, e2;
- float K = 0, rad1 = 0, rad2 = 0;
-
- rad1 = XRadius;
- rad2 = YRadius;
-
- K = (float)(rad2/rad1);
-
- do
- {
- BSP_LCD_DrawHLine((Xpos-(uint16_t)(x/K)), (Ypos+y), (2*(uint16_t)(x/K) + 1));
- BSP_LCD_DrawHLine((Xpos-(uint16_t)(x/K)), (Ypos-y), (2*(uint16_t)(x/K) + 1));
-
- e2 = err;
- if (e2 <= x)
- {
- err += ++x*2+1;
- if (-y == x && e2 <= y) e2 = 0;
- }
- if (e2 > y) err += ++y*2+1;
- }
- while (y <= 0);
-}
-
-/**
- * @brief Enables the display.
- */
-void BSP_LCD_DisplayOn(void)
-{
- lcd_drv->DisplayOn();
-}
-
-/**
- * @brief Disables the display.
- */
-void BSP_LCD_DisplayOff(void)
-{
- lcd_drv->DisplayOff();
-}
-
-/******************************************************************************
- Static Function
-*******************************************************************************/
-
-/**
- * @brief Draws a character on LCD.
- * @param Xpos: Line where to display the character shape
- * @param Ypos: Start column address
- * @param c: Pointer to the character data
- */
-static void DrawChar(uint16_t Xpos, uint16_t Ypos, const uint8_t *c)
-{
- uint32_t i = 0, j = 0;
- uint16_t height, width;
- uint8_t offset;
- uint8_t *pchar;
- uint32_t line;
-
- height = DrawProp.pFont->Height;
- width = DrawProp.pFont->Width;
-
- offset = 8 *((width + 7)/8) - width ;
-
- for(i = 0; i < height; i++)
- {
- pchar = ((uint8_t *)c + (width + 7)/8 * i);
-
- switch(((width + 7)/8))
- {
- case 1:
- line = pchar[0];
- break;
-
- case 2:
- line = (pchar[0]<< 8) | pchar[1];
- break;
-
- case 3:
- default:
- line = (pchar[0]<< 16) | (pchar[1]<< 8) | pchar[2];
- break;
- }
-
- for (j = 0; j < width; j++)
- {
- if(line & (1 << (width- j + offset- 1)))
- {
- BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp.TextColor);
- }
- else
- {
- BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp.BackColor);
- }
- }
- Ypos++;
- }
-}
-
-/**
- * @brief Sets display window.
- * @param Xpos: LCD X position
- * @param Ypos: LCD Y position
- * @param Width: LCD window width
- * @param Height: LCD window height
- */
-static void SetDisplayWindow(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height)
-{
- if(lcd_drv->SetDisplayWindow != NULL)
- {
- lcd_drv->SetDisplayWindow(Xpos, Ypos, Width, Height);
- }
-}
-
-/**
- * @brief Fills a triangle (between 3 points).
- * @param x1: Point 1 X position
- * @param y1: Point 1 Y position
- * @param x2: Point 2 X position
- * @param y2: Point 2 Y position
- * @param x3: Point 3 X position
- * @param y3: Point 3 Y position
- */
-static void FillTriangle(uint16_t x1, uint16_t x2, uint16_t x3, uint16_t y1, uint16_t y2, uint16_t y3)
-{
- int16_t deltax = 0, deltay = 0, x = 0, y = 0, xinc1 = 0, xinc2 = 0,
- yinc1 = 0, yinc2 = 0, den = 0, num = 0, numadd = 0, numpixels = 0,
- curpixel = 0;
-
- deltax = ABS(x2 - x1); /* The difference between the x's */
- deltay = ABS(y2 - y1); /* The difference between the y's */
- x = x1; /* Start x off at the first pixel */
- y = y1; /* Start y off at the first pixel */
-
- if (x2 >= x1) /* The x-values are increasing */
- {
- xinc1 = 1;
- xinc2 = 1;
- }
- else /* The x-values are decreasing */
- {
- xinc1 = -1;
- xinc2 = -1;
- }
-
- if (y2 >= y1) /* The y-values are increasing */
- {
- yinc1 = 1;
- yinc2 = 1;
- }
- else /* The y-values are decreasing */
- {
- yinc1 = -1;
- yinc2 = -1;
- }
-
- if (deltax >= deltay) /* There is at least one x-value for every y-value */
- {
- xinc1 = 0; /* Don't change the x when numerator >= denominator */
- yinc2 = 0; /* Don't change the y for every iteration */
- den = deltax;
- num = deltax / 2;
- numadd = deltay;
- numpixels = deltax; /* There are more x-values than y-values */
- }
- else /* There is at least one y-value for every x-value */
- {
- xinc2 = 0; /* Don't change the x for every iteration */
- yinc1 = 0; /* Don't change the y when numerator >= denominator */
- den = deltay;
- num = deltay / 2;
- numadd = deltax;
- numpixels = deltay; /* There are more y-values than x-values */
- }
-
- for (curpixel = 0; curpixel <= numpixels; curpixel++)
- {
- BSP_LCD_DrawLine(x, y, x3, y3);
-
- num += numadd; /* Increase the numerator by the top of the fraction */
- if (num >= den) /* Check if numerator >= denominator */
- {
- num -= den; /* Calculate the new numerator value */
- x += xinc1; /* Change the x as appropriate */
- y += yinc1; /* Change the y as appropriate */
- }
- x += xinc2; /* Change the x as appropriate */
- y += yinc2; /* Change the y as appropriate */
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_lcd.h b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_lcd.h
deleted file mode 100644
index 61c46212a1..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_lcd.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_lcd.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324xg_eval_lcd.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324XG_EVAL_LCD_H
-#define __STM324XG_EVAL_LCD_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval.h"
-#include "../Components/ili9325/ili9325.h"
-#include "../../../Utilities/Fonts/fonts.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL_LCD
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_LCD_Exported_Types STM324xG EVAL LCD Exported Types
- * @{
- */
-typedef struct
-{
- uint32_t TextColor;
- uint32_t BackColor;
- sFONT *pFont;
-}LCD_DrawPropTypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_LCD_Exported_Constants STM324xG EVAL LCD Exported Constants
- * @{
- */
-/**
- * @brief LCD status structure definition
- */
-#define LCD_OK 0x00
-#define LCD_ERROR 0x01
-#define LCD_TIMEOUT 0x02
-
-typedef struct
-{
- int16_t X;
- int16_t Y;
-}Point, * pPoint;
-
-/**
- * @brief Line mode structures definition
- */
-typedef enum
-{
- CENTER_MODE = 0x01, /* Center mode */
- RIGHT_MODE = 0x02, /* Right mode */
- LEFT_MODE = 0x03 /* Left mode */
-}Line_ModeTypdef;
-
-/**
- * @brief LCD color
- */
-#define LCD_COLOR_BLUE 0x001F
-#define LCD_COLOR_GREEN 0x07E0
-#define LCD_COLOR_RED 0xF800
-#define LCD_COLOR_CYAN 0x07FF
-#define LCD_COLOR_MAGENTA 0xF81F
-#define LCD_COLOR_YELLOW 0xFFE0
-#define LCD_COLOR_LIGHTBLUE 0x841F
-#define LCD_COLOR_LIGHTGREEN 0x87F0
-#define LCD_COLOR_LIGHTRED 0xFC10
-#define LCD_COLOR_LIGHTCYAN 0x87FF
-#define LCD_COLOR_LIGHTMAGENTA 0xFC1F
-#define LCD_COLOR_LIGHTYELLOW 0xFFF0
-#define LCD_COLOR_DARKBLUE 0x0010
-#define LCD_COLOR_DARKGREEN 0x0400
-#define LCD_COLOR_DARKRED 0x8000
-#define LCD_COLOR_DARKCYAN 0x0410
-#define LCD_COLOR_DARKMAGENTA 0x8010
-#define LCD_COLOR_DARKYELLOW 0x8400
-#define LCD_COLOR_WHITE 0xFFFF
-#define LCD_COLOR_LIGHTGRAY 0xD69A
-#define LCD_COLOR_GRAY 0x8410
-#define LCD_COLOR_DARKGRAY 0x4208
-#define LCD_COLOR_BLACK 0x0000
-#define LCD_COLOR_BROWN 0xA145
-#define LCD_COLOR_ORANGE 0xFD20
-
-/**
- * @brief LCD default font
- */
-#define LCD_DEFAULT_FONT Font24
-
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_LCD_Exported_Functions STM324xG EVAL LCD Exported Functions
- * @{
- */
-uint8_t BSP_LCD_Init(void);
-uint32_t BSP_LCD_GetXSize(void);
-uint32_t BSP_LCD_GetYSize(void);
-
-uint16_t BSP_LCD_GetTextColor(void);
-uint16_t BSP_LCD_GetBackColor(void);
-void BSP_LCD_SetTextColor(__IO uint16_t Color);
-void BSP_LCD_SetBackColor(__IO uint16_t Color);
-void BSP_LCD_SetFont(sFONT *fonts);
-sFONT *BSP_LCD_GetFont(void);
-
-void BSP_LCD_Clear(uint16_t Color);
-void BSP_LCD_ClearStringLine(uint16_t Line);
-void BSP_LCD_DisplayStringAtLine(uint16_t Line, uint8_t *ptr);
-void BSP_LCD_DisplayStringAt(uint16_t Xpos, uint16_t Ypos, uint8_t *Text, Line_ModeTypdef Mode);
-void BSP_LCD_DisplayChar(uint16_t Xpos, uint16_t Ypos, uint8_t Ascii);
-
-uint16_t BSP_LCD_ReadPixel(uint16_t Xpos, uint16_t Ypos);
-void BSP_LCD_DrawPixel(uint16_t Xpos, uint16_t Ypos, uint16_t RGB_Code);
-void BSP_LCD_DrawHLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length);
-void BSP_LCD_DrawVLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length);
-void BSP_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
-void BSP_LCD_DrawRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius);
-void BSP_LCD_DrawPolygon(pPoint Points, uint16_t PointCount);
-void BSP_LCD_DrawEllipse(int Xpos, int Ypos, int XRadius, int YRadius);
-void BSP_LCD_DrawBitmap(uint16_t Xpos, uint16_t Ypos, uint8_t *pbmp);
-void BSP_LCD_DrawRGBImage(uint16_t Xpos, uint16_t Ypos, uint16_t Xsize, uint16_t Ysize, uint8_t *pbmp);
-void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
-void BSP_LCD_FillCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius);
-void BSP_LCD_FillPolygon(pPoint Points, uint16_t PointCount);
-void BSP_LCD_FillEllipse(int Xpos, int Ypos, int XRadius, int YRadius);
-
-void BSP_LCD_DisplayOff(void);
-void BSP_LCD_DisplayOn(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324XG_EVAL_LCD_H */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sd.c b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sd.c
deleted file mode 100644
index 918e89ae31..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sd.c
+++ /dev/null
@@ -1,498 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_sd.c
- * @author MCD Application Team
- * @brief This file includes the uSD card driver mounted on STM324xG-EVAL
- * evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the micro SD external card mounted on STM324xG-EVAL
- evaluation board.
- - This driver does not need a specific component driver for the micro SD device
- to be included with.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the micro SD card using the BSP_SD_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- SDIO interface configuration to interface with the external micro SD. It
- also includes the micro SD initialization sequence.
- o To check the SD card presence you can use the function BSP_SD_IsDetected() which
- returns the detection status
- o If SD presence detection interrupt mode is desired, you must configure the
- SD detection interrupt mode by calling the function BSP_SD_ITConfig(). The interrupt
- is generated as an external interrupt whenever the micro SD card is
- plugged/unplugged in/from the evaluation board. The SD detection interrupt
- is handled by calling the function BSP_SD_DetectIT() which is called in the IRQ
- handler file, the user callback is implemented in the function BSP_SD_DetectCallback().
- o The function BSP_SD_GetCardInfo() is used to get the micro SD card information
- which is stored in the structure "HAL_SD_CardInfoTypedef".
-
- + Micro SD card operations
- o The micro SD card can be accessed with read/write block(s) operations once
- it is ready for access. The access can be performed whether using the polling
- mode by calling the functions BSP_SD_ReadBlocks()/BSP_SD_WriteBlocks(), or by DMA
- transfer using the functions BSP_SD_ReadBlocks_DMA()/BSP_SD_WriteBlocks_DMA()
- o The DMA transfer complete is used with interrupt mode. Once the SD transfer
- is complete, the SD interrupt is handled using the function BSP_SD_IRQHandler(),
- the DMA Tx/Rx transfer complete are handled using the functions
- BSP_SD_DMA_Tx_IRQHandler()/BSP_SD_DMA_Rx_IRQHandler(). The corresponding user callbacks
- are implemented by the user at application level.
- o The SD erase block(s) is performed using the function BSP_SD_Erase() with specifying
- the number of blocks to erase.
- o The SD runtime status is returned when calling the function BSP_SD_GetCardState().
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval_sd.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_SD STM324xG EVAL SD
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_SD_Private_Variables STM324xG EVAL SD Private Variables
- * @{
- */
-SD_HandleTypeDef uSdHandle;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_SD_Private_Functions STM324xG EVAL SD Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the SD card device.
- * @retval SD status.
- */
-uint8_t BSP_SD_Init(void)
-{
- uint8_t SD_state = MSD_OK;
-
- /* uSD device interface configuration */
- uSdHandle.Instance = SDIO;
-
- uSdHandle.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
- uSdHandle.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
- uSdHandle.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
- uSdHandle.Init.BusWide = SDIO_BUS_WIDE_1B;
- uSdHandle.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
- uSdHandle.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV;
-
- /* Check if the SD card is plugged in the slot */
- if(BSP_SD_IsDetected() != SD_PRESENT)
- {
- return MSD_ERROR;
- }
-
- /* Msp SD initialization */
- BSP_SD_MspInit(&uSdHandle, NULL);
-
- if(HAL_SD_Init(&uSdHandle) != HAL_OK)
- {
- SD_state = MSD_ERROR;
- }
-
- /* Configure SD Bus width */
- if(SD_state == MSD_OK)
- {
- /* Enable wide operation */
- if(HAL_SD_ConfigWideBusOperation(&uSdHandle, SDIO_BUS_WIDE_4B) != HAL_OK)
- {
- SD_state = MSD_ERROR;
- }
- else
- {
- SD_state = MSD_OK;
- }
- }
-
- return SD_state;
-}
-
-/**
- * @brief Configures Interrupt mode for SD detection pin.
- * @retval Returns 0
- */
-uint8_t BSP_SD_ITConfig(void)
-{
- GPIO_InitTypeDef GPIO_Init_Structure;
-
- /* Configure Interrupt mode for SD detection pin */
- GPIO_Init_Structure.Mode = GPIO_MODE_IT_RISING_FALLING;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Pin = SD_DETECT_PIN;
- HAL_GPIO_Init(SD_DETECT_GPIO_PORT, &GPIO_Init_Structure);
-
- /* NVIC configuration for SDIO interrupts */
- HAL_NVIC_SetPriority(SD_DETECT_IRQn, 0x0E, 0);
- HAL_NVIC_EnableIRQ(SD_DETECT_IRQn);
-
- return 0;
-}
-
-/**
- * @brief Detects if SD card is correctly plugged in the memory slot or not.
- * @retval Returns if SD is detected or not
- */
-uint8_t BSP_SD_IsDetected(void)
-{
- __IO uint8_t status = SD_PRESENT;
-
- /* Check SD card detect pin */
- if(HAL_GPIO_ReadPin(SD_DETECT_GPIO_PORT, SD_DETECT_PIN) != GPIO_PIN_RESET)
- {
- status = SD_NOT_PRESENT;
- }
-
- return status;
-}
-/**
- * @brief SD detect IT treatment
- */
-void BSP_SD_DetectIT(void)
-{
- /* SD detect IT callback */
- BSP_SD_DetectCallback();
-
-}
-
-/**
- * @brief SD detect IT detection callback
- */
-__weak void BSP_SD_DetectCallback(void)
-{
- /* NOTE: This function Should not be modified, when the callback is needed,
- the BSP_SD_DetectCallback could be implemented in the user file
- */
-
-}
-
-/**
- * @brief Reads block(s) from a specified address in an SD card, in polling mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param ReadAddr: Address from where data is to be read
- * @param NumOfBlocks: Number of SD blocks to read
- * @param Timeout: Timeout for read operation
- * @retval SD status
- */
-uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout)
-{
- if(HAL_SD_ReadBlocks(&uSdHandle, (uint8_t *)pData, ReadAddr, NumOfBlocks, Timeout) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Writes block(s) to a specified address in an SD card, in polling mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param WriteAddr: Address from where data is to be written
- * @param NumOfBlocks: Number of SD blocks to write
- * @param Timeout: Timeout for write operation
- * @retval SD status
- */
-uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout)
-{
- if(HAL_SD_WriteBlocks(&uSdHandle, (uint8_t *)pData, WriteAddr, NumOfBlocks, Timeout) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Reads block(s) from a specified address in an SD card, in DMA mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param ReadAddr: Address from where data is to be read
- * @param NumOfBlocks: Number of SD blocks to read
- * @retval SD status
- */
-uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks)
-{
- /* Read block(s) in DMA transfer mode */
- if(HAL_SD_ReadBlocks_DMA(&uSdHandle, (uint8_t *)pData, ReadAddr, NumOfBlocks) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Writes block(s) to a specified address in an SD card, in DMA mode.
- * @param pData: Pointer to the buffer that will contain the data to transmit
- * @param WriteAddr: Address from where data is to be written
- * @param NumOfBlocks: Number of SD blocks to write
- * @retval SD status
- */
-uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks)
-{
- /* Write block(s) in DMA transfer mode */
- if(HAL_SD_WriteBlocks_DMA(&uSdHandle, (uint8_t *)pData, WriteAddr, NumOfBlocks) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Erases the specified memory area of the given SD card.
- * @param StartAddr: Start byte address
- * @param EndAddr: End byte address
- * @retval SD status
- */
-uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr)
-{
- if(HAL_SD_Erase(&uSdHandle, StartAddr, EndAddr) != HAL_OK)
- {
- return MSD_ERROR;
- }
- else
- {
- return MSD_OK;
- }
-}
-
-/**
- * @brief Initializes the SD MSP.
- * @param hsd: SD handle
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_SD_MspInit(SD_HandleTypeDef *hsd, void *Params)
-{
- static DMA_HandleTypeDef dmaRxHandle;
- static DMA_HandleTypeDef dmaTxHandle;
- GPIO_InitTypeDef GPIO_Init_Structure;
-
- /* Enable SDIO clock */
- __HAL_RCC_SDIO_CLK_ENABLE();
-
- /* Enable DMA2 clocks */
- __DMAx_TxRx_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __SD_DETECT_GPIO_CLK_ENABLE();
-
- /* Common GPIO configuration */
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF12_SDIO;
-
- /* GPIOC configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12;
-
- HAL_GPIO_Init(GPIOC, &GPIO_Init_Structure);
-
- /* GPIOD configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_2;
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
-
- /* SD Card detect pin configuration */
- GPIO_Init_Structure.Mode = GPIO_MODE_INPUT;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Pin = SD_DETECT_PIN;
- HAL_GPIO_Init(SD_DETECT_GPIO_PORT, &GPIO_Init_Structure);
-
- /* NVIC configuration for SDIO interrupts */
- HAL_NVIC_SetPriority(SDIO_IRQn, 0x0E, 0);
- HAL_NVIC_EnableIRQ(SDIO_IRQn);
-
- /* Configure DMA Rx parameters */
- dmaRxHandle.Init.Channel = SD_DMAx_Rx_CHANNEL;
- dmaRxHandle.Init.Direction = DMA_PERIPH_TO_MEMORY;
- dmaRxHandle.Init.PeriphInc = DMA_PINC_DISABLE;
- dmaRxHandle.Init.MemInc = DMA_MINC_ENABLE;
- dmaRxHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- dmaRxHandle.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- dmaRxHandle.Init.Mode = DMA_PFCTRL;
- dmaRxHandle.Init.Priority = DMA_PRIORITY_VERY_HIGH;
- dmaRxHandle.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- dmaRxHandle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dmaRxHandle.Init.MemBurst = DMA_MBURST_INC4;
- dmaRxHandle.Init.PeriphBurst = DMA_PBURST_INC4;
-
- dmaRxHandle.Instance = SD_DMAx_Rx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsd, hdmarx, dmaRxHandle);
-
- /* Deinitialize the stream for new transfer */
- HAL_DMA_DeInit(&dmaRxHandle);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(&dmaRxHandle);
-
- /* Configure DMA Tx parameters */
- dmaTxHandle.Init.Channel = SD_DMAx_Tx_CHANNEL;
- dmaTxHandle.Init.Direction = DMA_MEMORY_TO_PERIPH;
- dmaTxHandle.Init.PeriphInc = DMA_PINC_DISABLE;
- dmaTxHandle.Init.MemInc = DMA_MINC_ENABLE;
- dmaTxHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- dmaTxHandle.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- dmaTxHandle.Init.Mode = DMA_PFCTRL;
- dmaTxHandle.Init.Priority = DMA_PRIORITY_VERY_HIGH;
- dmaTxHandle.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- dmaTxHandle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dmaTxHandle.Init.MemBurst = DMA_MBURST_INC4;
- dmaTxHandle.Init.PeriphBurst = DMA_PBURST_INC4;
-
- dmaTxHandle.Instance = SD_DMAx_Tx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsd, hdmatx, dmaTxHandle);
-
- /* Deinitialize the stream for new transfer */
- HAL_DMA_DeInit(&dmaTxHandle);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(&dmaTxHandle);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SD_DMAx_Rx_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(SD_DMAx_Rx_IRQn);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SD_DMAx_Tx_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(SD_DMAx_Tx_IRQn);
-}
-
-/**
- * @brief Gets the current SD card data status.
- * @retval Data transfer state.
- * This value can be one of the following values:
- * @arg SD_TRANSFER_OK: No data transfer is acting
- * @arg SD_TRANSFER_BUSY: Data transfer is acting
- */
-uint8_t BSP_SD_GetCardState(void)
-{
- return((HAL_SD_GetCardState(&uSdHandle) == HAL_SD_CARD_TRANSFER ) ? SD_TRANSFER_OK : SD_TRANSFER_BUSY);
-}
-
-
-/**
- * @brief Get SD information about specific SD card.
- * @param CardInfo: Pointer to HAL_SD_CardInfoTypedef structure
- * @retval None
- */
-void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo)
-{
- /* Get SD card Information */
- HAL_SD_GetCardInfo(&uSdHandle, CardInfo);
-}
-
-/**
- * @brief SD Abort callbacks
- * @param hsd: SD handle
- * @retval None
- */
-void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd)
-{
- BSP_SD_AbortCallback();
-}
-
-/**
- * @brief Tx Transfer completed callbacks
- * @param hsd: SD handle
- * @retval None
- */
-void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd)
-{
- BSP_SD_WriteCpltCallback();
-}
-
-/**
- * @brief Rx Transfer completed callbacks
- * @param hsd: SD handle
- * @retval None
- */
-void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd)
-{
- BSP_SD_ReadCpltCallback();
-}
-
-/**
- * @brief BSP SD Abort callbacks
- * @retval None
- */
-__weak void BSP_SD_AbortCallback(void)
-{
-
-}
-
-/**
- * @brief BSP Tx Transfer completed callbacks
- * @retval None
- */
-__weak void BSP_SD_WriteCpltCallback(void)
-{
-
-}
-
-/**
- * @brief BSP Rx Transfer completed callbacks
- * @retval None
- */
-__weak void BSP_SD_ReadCpltCallback(void)
-{
-
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sd.h b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sd.h
deleted file mode 100644
index 68f9df86ef..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sd.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_sd.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324xg_eval_sd.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324xG_EVAL_SD_H
-#define __STM324xG_EVAL_SD_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL_SD
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_SD_Exported_Types STM324xG EVAL SD Exported Types
- * @{
- */
-
-/**
- * @brief SD Card information structure
- */
-#define BSP_SD_CardInfo HAL_SD_CardInfoTypeDef
-/**
- * @}
- */
-
-
-/** @defgroup STM324xG_EVAL_SD_Exported_Constants STM324xG EVAL SD Exported Constants
- * @{
- */
-/**
- * @brief SD status structure definition
- */
-#define MSD_OK ((uint8_t)0x00)
-#define MSD_ERROR ((uint8_t)0x01)
-
-/**
- * @brief SD transfer state definition
- */
-#define SD_TRANSFER_OK ((uint8_t)0x00)
-#define SD_TRANSFER_BUSY ((uint8_t)0x01)
-
-#define SD_DETECT_PIN GPIO_PIN_13
-#define SD_DETECT_GPIO_PORT GPIOH
-#define __SD_DETECT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOH_CLK_ENABLE()
-#define SD_DETECT_IRQn EXTI15_10_IRQn
-
-#define SD_DATATIMEOUT ((uint32_t)100000000)
-
-#define SD_PRESENT ((uint8_t)0x01)
-#define SD_NOT_PRESENT ((uint8_t)0x00)
-
-/* DMA definitions for SD DMA transfer */
-#define __DMAx_TxRx_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
-#define SD_DMAx_Tx_CHANNEL DMA_CHANNEL_4
-#define SD_DMAx_Rx_CHANNEL DMA_CHANNEL_4
-#define SD_DMAx_Tx_STREAM DMA2_Stream6
-#define SD_DMAx_Rx_STREAM DMA2_Stream3
-#define SD_DMAx_Tx_IRQn DMA2_Stream6_IRQn
-#define SD_DMAx_Rx_IRQn DMA2_Stream3_IRQn
-#define BSP_SD_IRQHandler SDIO_IRQHandler
-#define BSP_SD_DMA_Tx_IRQHandler DMA2_Stream6_IRQHandler
-#define BSP_SD_DMA_Rx_IRQHandler DMA2_Stream3_IRQHandler
-#define SD_DetectIRQHandler() HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13)
-
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_SD_Exported_Functions STM324xG EVAL SD Exported Functions
- * @{
- */
-uint8_t BSP_SD_Init(void);
-uint8_t BSP_SD_ITConfig(void);
-void BSP_SD_DetectIT(void);
-void BSP_SD_DetectCallback(void);
-uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout);
-uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout);
-uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks);
-uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks);
-uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr);
-uint8_t BSP_SD_GetCardState(void);
-void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo);
-uint8_t BSP_SD_IsDetected(void);
-
-/* These functions can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_SD_MspInit(SD_HandleTypeDef *hsd, void *Params);
-void BSP_SD_Detect_MspInit(SD_HandleTypeDef *hsd, void *Params);
-void BSP_SD_MspDeInit(SD_HandleTypeDef *hsd, void *Params);
-void BSP_SD_AbortCallback(void);
-void BSP_SD_WriteCpltCallback(void);
-void BSP_SD_ReadCpltCallback(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324xG_EVAL_SD_H */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sram.c b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sram.c
deleted file mode 100644
index bd285f7a66..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sram.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_sram.c
- * @author MCD Application Team
- * @brief This file includes the SRAM driver for the IS61WV102416BLL-10MLI memory
- * device mounted on STM324xG-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the IS61WV102416BLL-10MLI SRAM external memory mounted
- on STM324xG-EVAL evaluation board.
- - This driver does not need a specific component driver for the SRAM device
- to be included with.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the SRAM external memory using the BSP_SRAM_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- FMC controller configuration to interface with the external SRAM memory.
-
- + SRAM read/write operations
- o SRAM external memory can be accessed with read/write operations once it is
- initialized.
- Read/write operation can be performed with AHB access using the functions
- BSP_SRAM_ReadData()/BSP_SRAM_WriteData(), or by DMA transfer using the functions
- BSP_SRAM_ReadData_DMA()/BSP_SRAM_WriteData_DMA().
- o The AHB access is performed with 16-bit width transaction, the DMA transfer
- configuration is fixed at single (no burst) halfword transfer
- (see the SRAM_MspInit() static function).
- o User can implement his own functions for read/write access with his desired
- configurations.
- o If interrupt mode is used for DMA transfer, the function BSP_SRAM_DMA_IRQHandler()
- is called in IRQ handler file, to serve the generated interrupt once the DMA
- transfer is complete.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval_sram.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_SRAM STM324xG EVAL SRAM
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_SRAM_Private_Variables STM324xG EVAL SRAM Private Variables
- * @{
- */
-static SRAM_HandleTypeDef sramHandle;
-static FMC_NORSRAM_TimingTypeDef Timing;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_SRAM_Private_Functions STM324xG EVAL SRAM Private Functions
- * @{
- */
-
-/**
- * @brief Initializes the SRAM device.
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_Init(void)
-{
- sramHandle.Instance = FMC_NORSRAM_DEVICE;
- sramHandle.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
-
- /* SRAM device configuration */
- Timing.AddressSetupTime = 2;
- Timing.AddressHoldTime = 1;
- Timing.DataSetupTime = 2;
- Timing.BusTurnAroundDuration = 1;
- Timing.CLKDivision = 2;
- Timing.DataLatency = 2;
- Timing.AccessMode = FSMC_ACCESS_MODE_A;
-
- sramHandle.Init.NSBank = FSMC_NORSRAM_BANK2;
- sramHandle.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE;
- sramHandle.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM;
- sramHandle.Init.MemoryDataWidth = SRAM_MEMORY_WIDTH;
- sramHandle.Init.BurstAccessMode = SRAM_BURSTACCESS;
- sramHandle.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
- sramHandle.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
- sramHandle.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
- sramHandle.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;
- sramHandle.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
- sramHandle.Init.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE;
- sramHandle.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE;
- sramHandle.Init.WriteBurst = SRAM_WRITEBURST;
-
- /* SRAM controller initialization */
- BSP_SRAM_MspInit();
- if(HAL_SRAM_Init(&sramHandle, &Timing, &Timing) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Reads an amount of data from the SRAM device in polling mode.
- * @param uwStartAddress : Read start address
- * @param pData: Pointer to data to be read
- * @param uwDataSize: Size of read data from the memory
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_ReadData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SRAM_Read_16b(&sramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Reads an amount of data from the SRAM device in DMA mode.
- * @param uwStartAddress : Read start address
- * @param pData: Pointer to data to be read
- * @param uwDataSize: Size of read data from the memory
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_ReadData_DMA(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SRAM_Read_DMA(&sramHandle, (uint32_t *)uwStartAddress, (uint32_t *)pData, uwDataSize) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Writes an amount of data from the SRAM device in polling mode.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of written data from the memory
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_WriteData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SRAM_Write_16b(&sramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Writes an amount of data from the SRAM device in DMA mode.
- * @param uwStartAddress: Write start address
- * @param pData: Pointer to data to be written
- * @param uwDataSize: Size of written data from the memory
- * @retval SRAM status
- */
-uint8_t BSP_SRAM_WriteData_DMA(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize)
-{
- if(HAL_SRAM_Write_DMA(&sramHandle, (uint32_t *)uwStartAddress, (uint32_t *)pData, uwDataSize) != HAL_OK)
- {
- return SRAM_ERROR;
- }
- else
- {
- return SRAM_OK;
- }
-}
-
-/**
- * @brief Handles SRAM DMA transfer interrupt request.
- */
-void BSP_SRAM_DMA_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(sramHandle.hdma);
-}
-
-/**
- * @brief Initializes SRAM MSP.
- */
-__weak void BSP_SRAM_MspInit(void)
-{
- static DMA_HandleTypeDef dmaHandle;
- GPIO_InitTypeDef GPIO_Init_Structure;
- SRAM_HandleTypeDef *hsram = &sramHandle;
-
- /* Enable FMC clock */
- __HAL_RCC_FSMC_CLK_ENABLE();
-
- /* Enable chosen DMAx clock */
- __SRAM_DMAx_CLK_ENABLE();
-
- /* Enable GPIOs clock */
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
- __HAL_RCC_GPIOF_CLK_ENABLE();
- __HAL_RCC_GPIOG_CLK_ENABLE();
-
- /* Common GPIO configuration */
- GPIO_Init_Structure.Mode = GPIO_MODE_AF_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- GPIO_Init_Structure.Alternate = GPIO_AF12_FSMC;
-
- /* GPIOD configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_8 |\
- GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 |\
- GPIO_PIN_14 | GPIO_PIN_15;
-
- HAL_GPIO_Init(GPIOD, &GPIO_Init_Structure);
-
- /* GPIOE configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3| GPIO_PIN_4 | GPIO_PIN_7 |\
- GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 |\
- GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOE, &GPIO_Init_Structure);
-
- /* GPIOF configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
- HAL_GPIO_Init(GPIOF, &GPIO_Init_Structure);
-
- /* GPIOG configuration */
- GPIO_Init_Structure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3 | GPIO_PIN_4 |\
- GPIO_PIN_5 | GPIO_PIN_9;
-
- HAL_GPIO_Init(GPIOG, &GPIO_Init_Structure);
-
-
- /* Configure common DMA parameters */
- dmaHandle.Init.Channel = SRAM_DMAx_CHANNEL;
- dmaHandle.Init.Direction = DMA_MEMORY_TO_MEMORY;
- dmaHandle.Init.PeriphInc = DMA_PINC_ENABLE;
- dmaHandle.Init.MemInc = DMA_MINC_ENABLE;
- dmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
- dmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
- dmaHandle.Init.Mode = DMA_NORMAL;
- dmaHandle.Init.Priority = DMA_PRIORITY_HIGH;
- dmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- dmaHandle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- dmaHandle.Init.MemBurst = DMA_MBURST_INC8;
- dmaHandle.Init.PeriphBurst = DMA_PBURST_INC8;
-
- dmaHandle.Instance = SRAM_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hsram, hdma, dmaHandle);
-
- /* Deinitialize the stream for new transfer */
- HAL_DMA_DeInit(&dmaHandle);
-
- /* Configure the DMA stream */
- HAL_DMA_Init(&dmaHandle);
-
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(SRAM_DMAx_IRQn, 0x0F, 0);
- HAL_NVIC_EnableIRQ(SRAM_DMAx_IRQn);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sram.h b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sram.h
deleted file mode 100644
index a217a3f883..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_sram.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_sram.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324xg_eval_sram.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324xG_EVAL_SRAM_H
-#define __STM324xG_EVAL_SRAM_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL_SRAM
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_SRAM_Exported_Constants STM324xG EVAL SRAM Exported Constants
- * @{
- */
-
-/**
- * @brief SD status structure definition
- */
-#define SRAM_OK 0x00
-#define SRAM_ERROR 0x01
-
-#define SRAM_DEVICE_ADDR ((uint32_t)0x64000000)
-#define SRAM_DEVICE_SIZE ((uint32_t)0x200000) /* SRAM device size in Bytes */
-
-/* #define SRAM_MEMORY_WIDTH FSMC_NORSRAM_MEM_BUS_WIDTH_8 */
-#define SRAM_MEMORY_WIDTH FSMC_NORSRAM_MEM_BUS_WIDTH_16
-
-#define SRAM_BURSTACCESS FSMC_BURST_ACCESS_MODE_DISABLE
-/* #define SRAM_BURSTACCESS FSMC_BURST_ACCESS_MODE_ENABLE */
-
-#define SRAM_WRITEBURST FSMC_WRITE_BURST_DISABLE
-/* #define SRAM_WRITEBURST FSMC_WRITE_BURST_ENABLE */
-
-/* DMA definitions for SRAM DMA transfer */
-#define __SRAM_DMAx_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE
-#define SRAM_DMAx_CHANNEL DMA_CHANNEL_0
-#define SRAM_DMAx_STREAM DMA2_Stream0
-#define SRAM_DMAx_IRQn DMA2_Stream0_IRQn
-#define SRAM_DMAx_IRQHandler DMA2_Stream0_IRQHandler
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_SRAM_Exported_Functions STM324xG EVAL SRAM Exported Functions
- * @{
- */
-uint8_t BSP_SRAM_Init(void);
-uint8_t BSP_SRAM_ReadData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SRAM_ReadData_DMA(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SRAM_WriteData(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-uint8_t BSP_SRAM_WriteData_DMA(uint32_t uwStartAddress, uint16_t *pData, uint32_t uwDataSize);
-void BSP_SRAM_DMA_IRQHandler(void);
-void BSP_SRAM_MspInit(void);
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324xG_EVAL_SRAM_H */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_ts.c b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_ts.c
deleted file mode 100644
index a191d7a021..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_ts.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_ts.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage the touch
- * screen on STM324xG-EVAL evaluation board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* File Info : -----------------------------------------------------------------
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver is used to drive the touch screen module of the STM324xG-EVAL
- evaluation board on the ILI9325 LCD mounted on MB785 daughter board .
- - The STMPE811 IO expander device component driver must be included with this
- driver in order to run the TS module commanded by the IO expander device
- mounted on the evaluation board.
-
-2. Driver description:
----------------------
- + Initialization steps:
- o Initialize the TS module using the BSP_TS_Init() function. This
- function includes the MSP layer hardware resources initialization and the
- communication layer configuration to start the TS use. The LCD size properties
- (x and y) are passed as parameters.
- o If TS interrupt mode is desired, you must configure the TS interrupt mode
- by calling the function BSP_TS_ITConfig(). The TS interrupt mode is generated
- as an external interrupt whenever a touch is detected.
-
- + Touch screen use
- o The touch screen state is captured whenever the function BSP_TS_GetState() is
- used. This function returns information about the last LCD touch occurred
- in the TS_StateTypeDef structure.
- o If TS interrupt mode is used, the function BSP_TS_ITGetStatus() is needed to get
- the interrupt status. To clear the IT pending bits, you should call the
- function BSP_TS_ITClear().
- o The IT is handled using the corresponding external interrupt IRQ handler,
- the user IT callback treatment is implemented on the same external interrupt
- callback.
-
-------------------------------------------------------------------------------*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval_ts.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_TS STM324xG EVAL TS
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_TS_Private_Variables STM324xG EVAL TS Private Variables
- * @{
- */
-static TS_DrvTypeDef *ts_driver;
-static uint16_t ts_x_boundary, ts_y_boundary;
-static uint8_t ts_orientation;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_TS_Private_Function_Prototypes STM324xG EVAL TS Private Function Prototypes
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_TS_Private_Functions STM324xG EVAL TS Private Functions
- * @{
- */
-
-/**
- * @brief Initializes and configures the touch screen functionalities and
- * configures all necessary hardware resources (GPIOs, clocks..).
- * @param xSize: Maximum X size of the TS area on LCD
- * @param ySize: Maximum Y size of the TS area on LCD
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_Init(uint16_t xSize, uint16_t ySize)
-{
- uint8_t ret = TS_ERROR;
-
- if(stmpe811_ts_drv.ReadID(TS_I2C_ADDRESS) == STMPE811_ID)
- {
- /* Initialize the TS driver structure */
- ts_driver = &stmpe811_ts_drv;
-
- /* Initialize x and y positions boundaries */
- ts_x_boundary = xSize;
- ts_y_boundary = ySize;
- ts_orientation = TS_SWAP_XY;
- ret = TS_OK;
- }
-
- if(ret == TS_OK)
- {
- /* Initialize the LL TS Driver */
- ts_driver->Init(TS_I2C_ADDRESS);
- ts_driver->Start(TS_I2C_ADDRESS);
- }
-
- return ret;
-}
-
-/**
- * @brief Configures and enables the touch screen interrupts.
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_ITConfig(void)
-{
- /* Call component driver to enable TS ITs */
- ts_driver->EnableIT(TS_I2C_ADDRESS);
-
- return TS_OK;
-}
-
-/**
- * @brief Gets the touch screen interrupt status.
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_ITGetStatus(void)
-{
- /* Call component driver to enable TS ITs */
- return (ts_driver->GetITStatus(TS_I2C_ADDRESS));
-}
-
-/**
- * @brief Returns status and positions of the touch screen.
- * @param TS_State: Pointer to touch screen current state structure
- * @retval TS_OK if all initializations are OK. Other value if error.
- */
-uint8_t BSP_TS_GetState(TS_StateTypeDef *TS_State)
-{
- static uint32_t _x = 0, _y = 0;
- uint16_t xDiff, yDiff , x , y;
- uint16_t swap;
-
- TS_State->TouchDetected = ts_driver->DetectTouch(TS_I2C_ADDRESS);
-
- if(TS_State->TouchDetected)
- {
- ts_driver->GetXY(TS_I2C_ADDRESS, &x, &y);
-
- if(ts_orientation & TS_SWAP_X)
- {
- x = 4096 - x;
- }
-
- if(ts_orientation & TS_SWAP_Y)
- {
- y = 4096 - y;
- }
-
- if(ts_orientation & TS_SWAP_XY)
- {
- swap = y;
- y = x;
- x = swap;
- }
-
- xDiff = x > _x? (x - _x): (_x - x);
- yDiff = y > _y? (y - _y): (_y - y);
-
- if (xDiff + yDiff > 5)
- {
- _x = x;
- _y = y;
- }
-
- TS_State->x = (ts_x_boundary * _x) >> 12;
- TS_State->y = (ts_y_boundary * _y) >> 12;
- }
-
- return TS_OK;
-}
-
-/**
- * @brief Clears all touch screen interrupts.
- */
-void BSP_TS_ITClear(void)
-{
- ts_driver->ClearIT(TS_I2C_ADDRESS);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_ts.h b/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_ts.h
deleted file mode 100644
index 23609d9e4a..0000000000
--- a/Drivers/BSP/STM324xG_EVAL/stm324xg_eval_ts.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- ******************************************************************************
- * @file stm324xg_eval_ts.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * the stm324xg_eval_ts.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM324xG_EVAL_TS_H
-#define __STM324xG_EVAL_TS_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm324xg_eval.h"
-/* Include IOExpander(STMPE811) component Driver */
-#include "../Components/stmpe811/stmpe811.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL
- * @{
- */
-
-/** @addtogroup STM324xG_EVAL_TS
- * @{
- */
-
-/** @defgroup STM324xG_EVAL_TS_Exported_Types STM324xG EVAL TS Exported Types
- * @{
- */
-typedef struct
-{
- uint16_t TouchDetected;
- uint16_t x;
- uint16_t y;
- uint16_t z;
-}TS_StateTypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_TS_Exported_Constants STM324xG EVAL TS Exported Constants
- * @{
- */
-#define TS_SWAP_NONE 0x00
-#define TS_SWAP_X 0x01
-#define TS_SWAP_Y 0x02
-#define TS_SWAP_XY 0x04
-
-typedef enum
-{
- TS_OK = 0x00,
- TS_ERROR = 0x01,
- TS_TIMEOUT = 0x02
-}TS_StatusTypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM324xG_EVAL_TS_Exported_Functions STM324xG EVAL TS Exported Functions
- * @{
- */
-uint8_t BSP_TS_Init(uint16_t xSize, uint16_t ySize);
-uint8_t BSP_TS_GetState(TS_StateTypeDef *TS_State);
-uint8_t BSP_TS_ITConfig(void);
-uint8_t BSP_TS_ITGetStatus(void);
-void BSP_TS_ITClear(void);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM324xG_EVAL_TS_H */
diff --git a/Drivers/BSP/STM32F4-Discovery b/Drivers/BSP/STM32F4-Discovery
new file mode 160000
index 0000000000..49fcaf442e
--- /dev/null
+++ b/Drivers/BSP/STM32F4-Discovery
@@ -0,0 +1 @@
+Subproject commit 49fcaf442e7d9b5970567eb0c833d66d1333e726
diff --git a/Drivers/BSP/STM32F4-Discovery/LICENSE.md b/Drivers/BSP/STM32F4-Discovery/LICENSE.md
deleted file mode 100644
index 479c4f6826..0000000000
--- a/Drivers/BSP/STM32F4-Discovery/LICENSE.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright 2017 STMicroelectronics.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors
-may be used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Drivers/BSP/STM32F4-Discovery/README.md b/Drivers/BSP/STM32F4-Discovery/README.md
deleted file mode 100644
index d35b2d358a..0000000000
--- a/Drivers/BSP/STM32F4-Discovery/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# BSP STM32F4-DISCOVERY Component
-
-![latest tag](https://img.shields.io/github/v/tag/STMicroelectronics/stm32f4-discovery.svg?color=brightgreen)
-
-## Overview
-
-**STM32Cube** is an STMicroelectronics original initiative to ease developers' life by reducing efforts, time and cost.
-
-**STM32Cube** covers the overall STM32 products portfolio. It includes a comprehensive embedded software platform delivered for each STM32 series.
- * The CMSIS modules (core and device) corresponding to the ARM(tm) core implemented in this STM32 product.
- * The STM32 HAL-LL drivers, an abstraction layer offering a set of APIs ensuring maximized portability across the STM32 portfolio.
- * The BSP drivers of each evaluation, demonstration or nucleo board provided for this STM32 series.
- * A consistent set of middleware libraries such as RTOS, USB, FatFS, graphics, touch sensing library...
- * A full set of software projects (basic examples, applications, and demonstrations) for each board provided for this STM32 series.
-
-Two models of publication are proposed for the STM32Cube embedded software:
- * The monolithic **MCU Package**: all STM32Cube software modules of one STM32 series are present (Drivers, Middleware, Projects, Utilities) in the repository (usual name **STM32Cubexx**, xx corresponding to the STM32 series).
- * The **MCU component**: each STM32Cube software module being part of the STM32Cube MCU Package, is delivered as an individual repository, allowing the user to select and get only the required software functions.
-
-## Description
-
-This **stm32f4-discovery** MCU component repository is one element of the **STM32CubeF4** MCU embedded software package, providing the **STM32F4-DISCOVERY** BSP BOARD component part.
-
-## Release note
-
-Details about the content of this release are available in the release note [here](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/stm32f4-discovery/blob/main/Release_Notes.html).
-
-## Compatibility information
-
-Below is the list of the BSP *component* drivers to be used with this BSP *board* driver. It is **crucial** that you use a consistent set of CMSIS - HAL - BSP versions, as mentioned in [this](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/STM32CubeF4/blob/master/Release_Notes.html) release note.
-
-* [stm32-bsp-common](https://github.com/STMicroelectronics/stm32-bsp-common)
-* [stm32-cs43l22](https://github.com/STMicroelectronics/stm32-cs43l22)
-* [stm32-lis302dl](https://github.com/STMicroelectronics/stm32-lis302dl)
-* [stm32-lis3dsh](https://github.com/STMicroelectronics/stm32-lis3dsh)
-
-## Troubleshooting
-
-Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) guide.
diff --git a/Drivers/BSP/STM32F4-Discovery/Release_Notes.html b/Drivers/BSP/STM32F4-Discovery/Release_Notes.html
deleted file mode 100644
index 2983113e76..0000000000
--- a/Drivers/BSP/STM32F4-Discovery/Release_Notes.html
+++ /dev/null
@@ -1,231 +0,0 @@
-
-
-
-
-
-
- Release Notes for STM32F4-Discovery Board Drivers
-
-
-
-
-
-
-
This directory contains the board drivers to demonstrate the capabilities of the STM32F4-Discovery Board Drivers.
-
-
-
Update History
-
-
-
-
Main Changes
-
-
Update Release_Notes.html to support new format
-
-
-
-
-
-
-
Main Changes
-
-
All source files: update disclaimer to add reference to the new license agreement.
-
-
-
-
-
-
-
Main Changes
-
-
Remove date & version
-
Add general description of BSP drivers
-
stm32f4_discovery_audio.c/.h:
-
-
Aligned with PDM library v3.0.0
-
-
Note
-
-
This version must be used with v3.0.0 of PDM library
-
-
-
-
-
-
-
-
Main Changes
-
-
Replace __PPP_CLK_ENABLE/DISABLE with __HAL_RCC_PPP_ENABLE/DISABLE
-
Add BSP_AUDIO_OUT_ClockConfig, BSP_AUDIO_OUT_MspInit and BSP_AUDIO_OUT_MspDeInit as weak functions
-
Add BSP_AUDIO_IN_ClockConfig, BSP_AUDIO_IN_MspInit and BSP_AUDIO_IN_MspDeInit as weak functions
-
-
-
-
-
-
-
Main Changes
-
-
General updates to fix doxygen errors
-
Add STM32F4-Discovery_BSP_User_Manual.chm file
-
-
-
-
-
-
-
Main Changes
-
-
stm32f4_discovery.c
-
-
Add AUDIO_IO_DeInit() function to align with BSP Components Common drivers V4.0.0
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f4_discovery.c/.h
-
-
Align to STM32F4xx HAL Driver V1.3.0 for __HAL_RCC_PPP_CLK_ENABLE()
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f4_discovery_accelerometer.h
-
-
Change “" byâ€/" in the include path to fix compilation issue under Linux
-
-
stm32f4_discovery_audio.c/.h
-
-
BSP_AUDIO_OUT_Init(): Fix limitation on the I2S clock configuration
-
Change “" byâ€/" in the include path to fix compilation issue under Linux
-
-
stm32f4_discovery.c/.h
-
-
Change I2C_SPEED used define by BSP_I2C_SPEED
-
-
Miscellaneous comments update
-
-
-
-
-
-
-
Main Changes
-
-
stm32f4_discovery_audio.c/.h
-
-
BSP_AUDIO_OUT_Play(): uses the buffer size in byte instead of half-word
-
BSP_AUDIO_IN_PDMToPCM(): duplicates samples to make stereo audio stream (since a single microphone in mounted on STM32F4-Discovery)
-
I2S2_Init(): configures the I2S to clock the microphone at 1.024 MHz as required instead of 2.048MHz
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f4_discovery_audio.c/.h
-
-
Enhance BSP_PB_Init() function by removing the call of __SYSCFG_CLK_ENABLE() already enabled in the HAL_GPIO_Init()
-
-
stm32f4_discovery_audio.c/.h
-
-
Add note that only the audio stereo format is supported
-
-
Comments clean up and typo corrections
-
-
-
-
-
-
-
Main Changes
-
-
Major update based on STM32Cube specification: drivers architecture and APIs modified vs. V1.1.2, and thus the 2 versions are not compatible.
-
This version has to be used only with STM32CubeF4 based development
-
-
-
-
-
-
-
Main Changes
-
-
All source files: license disclaimer text update and add link to the License file on ST Internet.
-
-
-
-
-
-
-
Main Changes
-
-
PDM Library moved from Utilities32F4-Discovery to Utilities32_Audiofolder
-
All source files: update disclaimer to add reference to the new license agreement
-
stm32f4_discovery_audio_codec.c
-
-
Audio_MAL_Init() function: DMA configuration changed as below
-
-
DMA_FIFOMode_Disable changed to DMA_FIFOMode_Enable
-
DMA_FIFOThreshold_1QuarterFull changed to DMA_FIFOThreshold_HalfFull
-
-
-
-
-
-
-
-
-
Main Changes
-
-
Add PDM audio software decoding Library drivers, used to decode and reconstruct the audio signal produced by MP45DT02 MEMS microphone from STMicroelectronics. For more details about this Library, please refer to document “PDM audio software decoding on STM32 microcontrollers (AN3998)â€.
-
stm32f4_discovery_audio_codec.c/.h: update to use DMA instead of Interrupt in I2S communication with the external codec.
-
-
-
-
-
-
-
Main Changes
-
-
First official version of the STM32F4-Discovery Board Drivers
-
-
-
-
-
-
-
-
diff --git a/Drivers/BSP/STM32F4-Discovery/_htmresc/favicon.png b/Drivers/BSP/STM32F4-Discovery/_htmresc/favicon.png
deleted file mode 100644
index 06713eec49..0000000000
Binary files a/Drivers/BSP/STM32F4-Discovery/_htmresc/favicon.png and /dev/null differ
diff --git a/Drivers/BSP/STM32F4-Discovery/_htmresc/mini-st_2020.css b/Drivers/BSP/STM32F4-Discovery/_htmresc/mini-st_2020.css
deleted file mode 100644
index 986f4d4205..0000000000
--- a/Drivers/BSP/STM32F4-Discovery/_htmresc/mini-st_2020.css
+++ /dev/null
@@ -1,1711 +0,0 @@
-@charset "UTF-8";
-/*
- Flavor name: Custom (mini-custom)
- Generated online - https://minicss.org/flavors
- mini.css version: v3.0.1
-*/
-/*
- Browsers resets and base typography.
-*/
-/* Core module CSS variable definitions */
-:root {
- --fore-color: #03234b;
- --secondary-fore-color: #03234b;
- --back-color: #ffffff;
- --secondary-back-color: #ffffff;
- --blockquote-color: #e6007e;
- --pre-color: #e6007e;
- --border-color: #3cb4e6;
- --secondary-border-color: #3cb4e6;
- --heading-ratio: 1.2;
- --universal-margin: 0.5rem;
- --universal-padding: 0.25rem;
- --universal-border-radius: 0.075rem;
- --background-margin: 1.5%;
- --a-link-color: #3cb4e6;
- --a-visited-color: #8c0078; }
-
-html {
- font-size: 13.5px; }
-
-a, b, del, em, i, ins, q, span, strong, u {
- font-size: 1em; }
-
-html, * {
- font-family: -apple-system, BlinkMacSystemFont, Helvetica, arial, sans-serif;
- line-height: 1.25;
- -webkit-text-size-adjust: 100%; }
-
-* {
- font-size: 1rem; }
-
-body {
- margin: 0;
- color: var(--fore-color);
- @background: var(--back-color);
- background: var(--back-color) linear-gradient(#ffd200, #ffd200) repeat-y left top;
- background-size: var(--background-margin);
- }
-
-details {
- display: block; }
-
-summary {
- display: list-item; }
-
-abbr[title] {
- border-bottom: none;
- text-decoration: underline dotted; }
-
-input {
- overflow: visible; }
-
-img {
- max-width: 100%;
- height: auto; }
-
-h1, h2, h3, h4, h5, h6 {
- line-height: 1.25;
- margin: calc(1.5 * var(--universal-margin)) var(--universal-margin);
- font-weight: 400; }
- h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
- color: var(--secondary-fore-color);
- display: block;
- margin-top: -0.25rem; }
-
-h1 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio)); }
-
-h2 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) );
- border-style: none none solid none ;
- border-width: thin;
- border-color: var(--border-color); }
-h3 {
- font-size: calc(1rem * var(--heading-ratio) ); }
-
-h4 {
- font-size: calc(1rem * var(--heading-ratio)); }
-
-h5 {
- font-size: 1rem; }
-
-h6 {
- font-size: calc(1rem / var(--heading-ratio)); }
-
-p {
- margin: var(--universal-margin); }
-
-ol, ul {
- margin: var(--universal-margin);
- padding-left: calc(3 * var(--universal-margin)); }
-
-b, strong {
- font-weight: 700; }
-
-hr {
- box-sizing: content-box;
- border: 0;
- line-height: 1.25em;
- margin: var(--universal-margin);
- height: 0.0714285714rem;
- background: linear-gradient(to right, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent); }
-
-blockquote {
- display: block;
- position: relative;
- font-style: italic;
- color: var(--secondary-fore-color);
- margin: var(--universal-margin);
- padding: calc(3 * var(--universal-padding));
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.3rem solid var(--blockquote-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
- blockquote:before {
- position: absolute;
- top: calc(0rem - var(--universal-padding));
- left: 0;
- font-family: sans-serif;
- font-size: 2rem;
- font-weight: 800;
- content: "\201c";
- color: var(--blockquote-color); }
- blockquote[cite]:after {
- font-style: normal;
- font-size: 0.75em;
- font-weight: 700;
- content: "\a— " attr(cite);
- white-space: pre; }
-
-code, kbd, pre, samp {
- font-family: Menlo, Consolas, monospace;
- font-size: 0.85em; }
-
-code {
- background: var(--secondary-back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-kbd {
- background: var(--fore-color);
- color: var(--back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-pre {
- overflow: auto;
- background: var(--secondary-back-color);
- padding: calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.2857142857rem solid var(--pre-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
-
-sup, sub, code, kbd {
- line-height: 0;
- position: relative;
- vertical-align: baseline; }
-
-small, sup, sub, figcaption {
- font-size: 0.75em; }
-
-sup {
- top: -0.5em; }
-
-sub {
- bottom: -0.25em; }
-
-figure {
- margin: var(--universal-margin); }
-
-figcaption {
- color: var(--secondary-fore-color); }
-
-a {
- text-decoration: none; }
- a:link {
- color: var(--a-link-color); }
- a:visited {
- color: var(--a-visited-color); }
- a:hover, a:focus {
- text-decoration: underline; }
-
-/*
- Definitions for the grid system, cards and containers.
-*/
-.container {
- margin: 0 auto;
- padding: 0 calc(1.5 * var(--universal-padding)); }
-
-.row {
- box-sizing: border-box;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- margin: 0 0 0 var(--background-margin); }
-
-.col-sm,
-[class^='col-sm-'],
-[class^='col-sm-offset-'],
-.row[class*='cols-sm-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
-.col-sm,
-.row.cols-sm > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
-.col-sm-1,
-.row.cols-sm-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
-.col-sm-offset-0 {
- margin-left: 0; }
-
-.col-sm-2,
-.row.cols-sm-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
-.col-sm-offset-1 {
- margin-left: 8.3333333333%; }
-
-.col-sm-3,
-.row.cols-sm-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
-.col-sm-offset-2 {
- margin-left: 16.6666666667%; }
-
-.col-sm-4,
-.row.cols-sm-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
-.col-sm-offset-3 {
- margin-left: 25%; }
-
-.col-sm-5,
-.row.cols-sm-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
-.col-sm-offset-4 {
- margin-left: 33.3333333333%; }
-
-.col-sm-6,
-.row.cols-sm-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
-.col-sm-offset-5 {
- margin-left: 41.6666666667%; }
-
-.col-sm-7,
-.row.cols-sm-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
-.col-sm-offset-6 {
- margin-left: 50%; }
-
-.col-sm-8,
-.row.cols-sm-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
-.col-sm-offset-7 {
- margin-left: 58.3333333333%; }
-
-.col-sm-9,
-.row.cols-sm-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
-.col-sm-offset-8 {
- margin-left: 66.6666666667%; }
-
-.col-sm-10,
-.row.cols-sm-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
-.col-sm-offset-9 {
- margin-left: 75%; }
-
-.col-sm-11,
-.row.cols-sm-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
-.col-sm-offset-10 {
- margin-left: 83.3333333333%; }
-
-.col-sm-12,
-.row.cols-sm-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
-.col-sm-offset-11 {
- margin-left: 91.6666666667%; }
-
-.col-sm-normal {
- order: initial; }
-
-.col-sm-first {
- order: -999; }
-
-.col-sm-last {
- order: 999; }
-
-@media screen and (min-width: 500px) {
- .col-md,
- [class^='col-md-'],
- [class^='col-md-offset-'],
- .row[class*='cols-md-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-md,
- .row.cols-md > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-md-1,
- .row.cols-md-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-md-offset-0 {
- margin-left: 0; }
-
- .col-md-2,
- .row.cols-md-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-md-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-md-3,
- .row.cols-md-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-md-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-md-4,
- .row.cols-md-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-md-offset-3 {
- margin-left: 25%; }
-
- .col-md-5,
- .row.cols-md-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-md-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-md-6,
- .row.cols-md-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-md-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-md-7,
- .row.cols-md-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-md-offset-6 {
- margin-left: 50%; }
-
- .col-md-8,
- .row.cols-md-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-md-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-md-9,
- .row.cols-md-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-md-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-md-10,
- .row.cols-md-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-md-offset-9 {
- margin-left: 75%; }
-
- .col-md-11,
- .row.cols-md-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-md-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-md-12,
- .row.cols-md-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-md-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-md-normal {
- order: initial; }
-
- .col-md-first {
- order: -999; }
-
- .col-md-last {
- order: 999; } }
-@media screen and (min-width: 1280px) {
- .col-lg,
- [class^='col-lg-'],
- [class^='col-lg-offset-'],
- .row[class*='cols-lg-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-lg,
- .row.cols-lg > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-lg-1,
- .row.cols-lg-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-lg-offset-0 {
- margin-left: 0; }
-
- .col-lg-2,
- .row.cols-lg-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-lg-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-lg-3,
- .row.cols-lg-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-lg-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-lg-4,
- .row.cols-lg-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-lg-offset-3 {
- margin-left: 25%; }
-
- .col-lg-5,
- .row.cols-lg-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-lg-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-lg-6,
- .row.cols-lg-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-lg-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-lg-7,
- .row.cols-lg-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-lg-offset-6 {
- margin-left: 50%; }
-
- .col-lg-8,
- .row.cols-lg-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-lg-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-lg-9,
- .row.cols-lg-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-lg-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-lg-10,
- .row.cols-lg-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-lg-offset-9 {
- margin-left: 75%; }
-
- .col-lg-11,
- .row.cols-lg-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-lg-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-lg-12,
- .row.cols-lg-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-lg-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-lg-normal {
- order: initial; }
-
- .col-lg-first {
- order: -999; }
-
- .col-lg-last {
- order: 999; } }
-/* Card component CSS variable definitions */
-:root {
- --card-back-color: #3cb4e6;
- --card-fore-color: #03234b;
- --card-border-color: #03234b; }
-
-.card {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-self: center;
- position: relative;
- width: 100%;
- background: var(--card-back-color);
- color: var(--card-fore-color);
- border: 0.0714285714rem solid var(--card-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- overflow: hidden; }
- @media screen and (min-width: 320px) {
- .card {
- max-width: 320px; } }
- .card > .sectione {
- background: var(--card-back-color);
- color: var(--card-fore-color);
- box-sizing: border-box;
- margin: 0;
- border: 0;
- border-radius: 0;
- border-bottom: 0.0714285714rem solid var(--card-border-color);
- padding: var(--universal-padding);
- width: 100%; }
- .card > .sectione.media {
- height: 200px;
- padding: 0;
- -o-object-fit: cover;
- object-fit: cover; }
- .card > .sectione:last-child {
- border-bottom: 0; }
-
-/*
- Custom elements for card elements.
-*/
-@media screen and (min-width: 240px) {
- .card.small {
- max-width: 240px; } }
-@media screen and (min-width: 480px) {
- .card.large {
- max-width: 480px; } }
-.card.fluid {
- max-width: 100%;
- width: auto; }
-
-.card.warning {
- --card-back-color: #e5b8b7;
- --card-fore-color: #3b234b;
- --card-border-color: #8c0078; }
-
-.card.error {
- --card-back-color: #464650;
- --card-fore-color: #ffffff;
- --card-border-color: #8c0078; }
-
-.card > .sectione.dark {
- --card-back-color: #3b234b;
- --card-fore-color: #ffffff; }
-
-.card > .sectione.double-padded {
- padding: calc(1.5 * var(--universal-padding)); }
-
-/*
- Definitions for forms and input elements.
-*/
-/* Input_control module CSS variable definitions */
-:root {
- --form-back-color: #ffe97f;
- --form-fore-color: #03234b;
- --form-border-color: #3cb4e6;
- --input-back-color: #ffffff;
- --input-fore-color: #03234b;
- --input-border-color: #3cb4e6;
- --input-focus-color: #0288d1;
- --input-invalid-color: #d32f2f;
- --button-back-color: #e2e2e2;
- --button-hover-back-color: #dcdcdc;
- --button-fore-color: #212121;
- --button-border-color: transparent;
- --button-hover-border-color: transparent;
- --button-group-border-color: rgba(124, 124, 124, 0.54); }
-
-form {
- background: var(--form-back-color);
- color: var(--form-fore-color);
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding); }
-
-fieldset {
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 4);
- padding: var(--universal-padding); }
-
-legend {
- box-sizing: border-box;
- display: table;
- max-width: 100%;
- white-space: normal;
- font-weight: 500;
- padding: calc(var(--universal-padding) / 2); }
-
-label {
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-.input-group {
- display: inline-block; }
- .input-group.fluid {
- display: flex;
- align-items: center;
- justify-content: center; }
- .input-group.fluid > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
- @media screen and (max-width: 499px) {
- .input-group.fluid {
- align-items: stretch;
- flex-direction: column; } }
- .input-group.vertical {
- display: flex;
- align-items: stretch;
- flex-direction: column; }
- .input-group.vertical > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
-
-[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button {
- height: auto; }
-
-[type="search"] {
- -webkit-appearance: textfield;
- outline-offset: -2px; }
-
-[type="search"]::-webkit-search-cancel-button,
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none; }
-
-input:not([type]), [type="text"], [type="email"], [type="number"], [type="search"],
-[type="password"], [type="url"], [type="tel"], [type="checkbox"], [type="radio"], textarea, select {
- box-sizing: border-box;
- background: var(--input-back-color);
- color: var(--input-fore-color);
- border: 0.0714285714rem solid var(--input-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 2);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
-
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):hover, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus, textarea:hover, textarea:focus, select:hover, select:focus {
- border-color: var(--input-focus-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):invalid, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus:invalid, textarea:invalid, textarea:focus:invalid, select:invalid, select:focus:invalid {
- border-color: var(--input-invalid-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"])[readonly], textarea[readonly], select[readonly] {
- background: var(--secondary-back-color); }
-
-select {
- max-width: 100%; }
-
-option {
- overflow: hidden;
- text-overflow: ellipsis; }
-
-[type="checkbox"], [type="radio"] {
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- position: relative;
- height: calc(1rem + var(--universal-padding) / 2);
- width: calc(1rem + var(--universal-padding) / 2);
- vertical-align: text-bottom;
- padding: 0;
- flex-basis: calc(1rem + var(--universal-padding) / 2) !important;
- flex-grow: 0 !important; }
- [type="checkbox"]:checked:before, [type="radio"]:checked:before {
- position: absolute; }
-
-[type="checkbox"]:checked:before {
- content: '\2713';
- font-family: sans-serif;
- font-size: calc(1rem + var(--universal-padding) / 2);
- top: calc(0rem - var(--universal-padding));
- left: calc(var(--universal-padding) / 4); }
-
-[type="radio"] {
- border-radius: 100%; }
- [type="radio"]:checked:before {
- border-radius: 100%;
- content: '';
- top: calc(0.0714285714rem + var(--universal-padding) / 2);
- left: calc(0.0714285714rem + var(--universal-padding) / 2);
- background: var(--input-fore-color);
- width: 0.5rem;
- height: 0.5rem; }
-
-:placeholder-shown {
- color: var(--input-fore-color); }
-
-::-ms-placeholder {
- color: var(--input-fore-color);
- opacity: 0.54; }
-
-button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0; }
-
-button, html [type="button"], [type="reset"], [type="submit"] {
- -webkit-appearance: button; }
-
-button {
- overflow: visible;
- text-transform: none; }
-
-button, [type="button"], [type="submit"], [type="reset"],
-a.button, label.button, .button,
-a[role="button"], label[role="button"], [role="button"] {
- display: inline-block;
- background: var(--button-back-color);
- color: var(--button-fore-color);
- border: 0.0714285714rem solid var(--button-border-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- text-decoration: none;
- cursor: pointer;
- transition: background 0.3s; }
- button:hover, button:focus, [type="button"]:hover, [type="button"]:focus, [type="submit"]:hover, [type="submit"]:focus, [type="reset"]:hover, [type="reset"]:focus,
- a.button:hover,
- a.button:focus, label.button:hover, label.button:focus, .button:hover, .button:focus,
- a[role="button"]:hover,
- a[role="button"]:focus, label[role="button"]:hover, label[role="button"]:focus, [role="button"]:hover, [role="button"]:focus {
- background: var(--button-hover-back-color);
- border-color: var(--button-hover-border-color); }
-
-input:disabled, input[disabled], textarea:disabled, textarea[disabled], select:disabled, select[disabled], button:disabled, button[disabled], .button:disabled, .button[disabled], [role="button"]:disabled, [role="button"][disabled] {
- cursor: not-allowed;
- opacity: 0.75; }
-
-.button-group {
- display: flex;
- border: 0.0714285714rem solid var(--button-group-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- .button-group > button, .button-group [type="button"], .button-group > [type="submit"], .button-group > [type="reset"], .button-group > .button, .button-group > [role="button"] {
- margin: 0;
- max-width: 100%;
- flex: 1 1 auto;
- text-align: center;
- border: 0;
- border-radius: 0;
- box-shadow: none; }
- .button-group > :not(:first-child) {
- border-left: 0.0714285714rem solid var(--button-group-border-color); }
- @media screen and (max-width: 499px) {
- .button-group {
- flex-direction: column; }
- .button-group > :not(:first-child) {
- border: 0;
- border-top: 0.0714285714rem solid var(--button-group-border-color); } }
-
-/*
- Custom elements for forms and input elements.
-*/
-button.primary, [type="button"].primary, [type="submit"].primary, [type="reset"].primary, .button.primary, [role="button"].primary {
- --button-back-color: #1976d2;
- --button-fore-color: #f8f8f8; }
- button.primary:hover, button.primary:focus, [type="button"].primary:hover, [type="button"].primary:focus, [type="submit"].primary:hover, [type="submit"].primary:focus, [type="reset"].primary:hover, [type="reset"].primary:focus, .button.primary:hover, .button.primary:focus, [role="button"].primary:hover, [role="button"].primary:focus {
- --button-hover-back-color: #1565c0; }
-
-button.secondary, [type="button"].secondary, [type="submit"].secondary, [type="reset"].secondary, .button.secondary, [role="button"].secondary {
- --button-back-color: #d32f2f;
- --button-fore-color: #f8f8f8; }
- button.secondary:hover, button.secondary:focus, [type="button"].secondary:hover, [type="button"].secondary:focus, [type="submit"].secondary:hover, [type="submit"].secondary:focus, [type="reset"].secondary:hover, [type="reset"].secondary:focus, .button.secondary:hover, .button.secondary:focus, [role="button"].secondary:hover, [role="button"].secondary:focus {
- --button-hover-back-color: #c62828; }
-
-button.tertiary, [type="button"].tertiary, [type="submit"].tertiary, [type="reset"].tertiary, .button.tertiary, [role="button"].tertiary {
- --button-back-color: #308732;
- --button-fore-color: #f8f8f8; }
- button.tertiary:hover, button.tertiary:focus, [type="button"].tertiary:hover, [type="button"].tertiary:focus, [type="submit"].tertiary:hover, [type="submit"].tertiary:focus, [type="reset"].tertiary:hover, [type="reset"].tertiary:focus, .button.tertiary:hover, .button.tertiary:focus, [role="button"].tertiary:hover, [role="button"].tertiary:focus {
- --button-hover-back-color: #277529; }
-
-button.inverse, [type="button"].inverse, [type="submit"].inverse, [type="reset"].inverse, .button.inverse, [role="button"].inverse {
- --button-back-color: #212121;
- --button-fore-color: #f8f8f8; }
- button.inverse:hover, button.inverse:focus, [type="button"].inverse:hover, [type="button"].inverse:focus, [type="submit"].inverse:hover, [type="submit"].inverse:focus, [type="reset"].inverse:hover, [type="reset"].inverse:focus, .button.inverse:hover, .button.inverse:focus, [role="button"].inverse:hover, [role="button"].inverse:focus {
- --button-hover-back-color: #111; }
-
-button.small, [type="button"].small, [type="submit"].small, [type="reset"].small, .button.small, [role="button"].small {
- padding: calc(0.5 * var(--universal-padding)) calc(0.75 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-button.large, [type="button"].large, [type="submit"].large, [type="reset"].large, .button.large, [role="button"].large {
- padding: calc(1.5 * var(--universal-padding)) calc(2 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-/*
- Definitions for navigation elements.
-*/
-/* Navigation module CSS variable definitions */
-:root {
- --header-back-color: #03234b;
- --header-hover-back-color: #ffd200;
- --header-fore-color: #ffffff;
- --header-border-color: #3cb4e6;
- --nav-back-color: #ffffff;
- --nav-hover-back-color: #ffe97f;
- --nav-fore-color: #e6007e;
- --nav-border-color: #3cb4e6;
- --nav-link-color: #3cb4e6;
- --footer-fore-color: #ffffff;
- --footer-back-color: #03234b;
- --footer-border-color: #3cb4e6;
- --footer-link-color: #3cb4e6;
- --drawer-back-color: #ffffff;
- --drawer-hover-back-color: #ffe97f;
- --drawer-border-color: #3cb4e6;
- --drawer-close-color: #e6007e; }
-
-header {
- height: 2.75rem;
- background: var(--header-back-color);
- color: var(--header-fore-color);
- border-bottom: 0.0714285714rem solid var(--header-border-color);
- padding: calc(var(--universal-padding) / 4) 0;
- white-space: nowrap;
- overflow-x: auto;
- overflow-y: hidden; }
- header.row {
- box-sizing: content-box; }
- header .logo {
- color: var(--header-fore-color);
- font-size: 1.75rem;
- padding: var(--universal-padding) calc(2 * var(--universal-padding));
- text-decoration: none; }
- header button, header [type="button"], header .button, header [role="button"] {
- box-sizing: border-box;
- position: relative;
- top: calc(0rem - var(--universal-padding) / 4);
- height: calc(3.1875rem + var(--universal-padding) / 2);
- background: var(--header-back-color);
- line-height: calc(3.1875rem - var(--universal-padding) * 1.5);
- text-align: center;
- color: var(--header-fore-color);
- border: 0;
- border-radius: 0;
- margin: 0;
- text-transform: uppercase; }
- header button:hover, header button:focus, header [type="button"]:hover, header [type="button"]:focus, header .button:hover, header .button:focus, header [role="button"]:hover, header [role="button"]:focus {
- background: var(--header-hover-back-color); }
-
-nav {
- background: var(--nav-back-color);
- color: var(--nav-fore-color);
- border: 0.0714285714rem solid var(--nav-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- nav * {
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
- nav a, nav a:visited {
- display: block;
- color: var(--nav-link-color);
- border-radius: var(--universal-border-radius);
- transition: background 0.3s; }
- nav a:hover, nav a:focus, nav a:visited:hover, nav a:visited:focus {
- text-decoration: none;
- background: var(--nav-hover-back-color); }
- nav .sublink-1 {
- position: relative;
- margin-left: calc(2 * var(--universal-padding)); }
- nav .sublink-1:before {
- position: absolute;
- left: calc(var(--universal-padding) - 1 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
- nav .sublink-2 {
- position: relative;
- margin-left: calc(4 * var(--universal-padding)); }
- nav .sublink-2:before {
- position: absolute;
- left: calc(var(--universal-padding) - 3 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
-
-footer {
- background: var(--footer-back-color);
- color: var(--footer-fore-color);
- border-top: 0.0714285714rem solid var(--footer-border-color);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding);
- font-size: 0.875rem; }
- footer a, footer a:visited {
- color: var(--footer-link-color); }
-
-header.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- top: 0; }
-
-footer.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- bottom: 0; }
-
-.drawer-toggle:before {
- display: inline-block;
- position: relative;
- vertical-align: bottom;
- content: '\00a0\2261\00a0';
- font-family: sans-serif;
- font-size: 1.5em; }
-@media screen and (min-width: 500px) {
- .drawer-toggle:not(.persistent) {
- display: none; } }
-
-[type="checkbox"].drawer {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].drawer + * {
- display: block;
- box-sizing: border-box;
- position: fixed;
- top: 0;
- width: 320px;
- height: 100vh;
- overflow-y: auto;
- background: var(--drawer-back-color);
- border: 0.0714285714rem solid var(--drawer-border-color);
- border-radius: 0;
- margin: 0;
- z-index: 1110;
- right: -320px;
- transition: right 0.3s; }
- [type="checkbox"].drawer + * .drawer-close {
- position: absolute;
- top: var(--universal-margin);
- right: var(--universal-margin);
- z-index: 1111;
- width: 2rem;
- height: 2rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].drawer + * .drawer-close:before {
- display: block;
- content: '\00D7';
- color: var(--drawer-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 2rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].drawer + * .drawer-close:hover, [type="checkbox"].drawer + * .drawer-close:focus {
- background: var(--drawer-hover-back-color); }
- @media screen and (max-width: 320px) {
- [type="checkbox"].drawer + * {
- width: 100%; } }
- [type="checkbox"].drawer:checked + * {
- right: 0; }
- @media screen and (min-width: 500px) {
- [type="checkbox"].drawer:not(.persistent) + * {
- position: static;
- height: 100%;
- z-index: 1100; }
- [type="checkbox"].drawer:not(.persistent) + * .drawer-close {
- display: none; } }
-
-/*
- Definitions for the responsive table component.
-*/
-/* Table module CSS variable definitions. */
-:root {
- --table-border-color: #03234b;
- --table-border-separator-color: #03234b;
- --table-head-back-color: #03234b;
- --table-head-fore-color: #ffffff;
- --table-body-back-color: #ffffff;
- --table-body-fore-color: #03234b;
- --table-body-alt-back-color: #f4f4f4; }
-
-table {
- border-collapse: separate;
- border-spacing: 0;
- margin: 0;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- padding: var(--universal-padding);
- padding-top: 0; }
- table caption {
- font-size: 1rem;
- margin: calc(2 * var(--universal-margin)) 0;
- max-width: 100%;
- flex: 0 0 100%; }
- table thead, table tbody {
- display: flex;
- flex-flow: row wrap;
- border: 0.0714285714rem solid var(--table-border-color); }
- table thead {
- z-index: 999;
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0;
- border-bottom: 0.0714285714rem solid var(--table-border-separator-color); }
- table tbody {
- border-top: 0;
- margin-top: calc(0 - var(--universal-margin));
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- table tr {
- display: flex;
- padding: 0; }
- table th, table td {
- padding: calc(0.5 * var(--universal-padding));
- font-size: 0.9rem; }
- table th {
- text-align: left;
- background: var(--table-head-back-color);
- color: var(--table-head-fore-color); }
- table td {
- background: var(--table-body-back-color);
- color: var(--table-body-fore-color);
- border-top: 0.0714285714rem solid var(--table-border-color); }
-
-table:not(.horizontal) {
- overflow: auto;
- max-height: 100%; }
- table:not(.horizontal) thead, table:not(.horizontal) tbody {
- max-width: 100%;
- flex: 0 0 100%; }
- table:not(.horizontal) tr {
- flex-flow: row wrap;
- flex: 0 0 100%; }
- table:not(.horizontal) th, table:not(.horizontal) td {
- flex: 1 0 0%;
- overflow: hidden;
- text-overflow: ellipsis; }
- table:not(.horizontal) thead {
- position: sticky;
- top: 0; }
- table:not(.horizontal) tbody tr:first-child td {
- border-top: 0; }
-
-table.horizontal {
- border: 0; }
- table.horizontal thead, table.horizontal tbody {
- border: 0;
- flex: .2 0 0;
- flex-flow: row nowrap; }
- table.horizontal tbody {
- overflow: auto;
- justify-content: space-between;
- flex: .8 0 0;
- margin-left: 0;
- padding-bottom: calc(var(--universal-padding) / 4); }
- table.horizontal tr {
- flex-direction: column;
- flex: 1 0 auto; }
- table.horizontal th, table.horizontal td {
- width: auto;
- border: 0;
- border-bottom: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal th:not(:first-child), table.horizontal td:not(:first-child) {
- border-top: 0; }
- table.horizontal th {
- text-align: right;
- border-left: 0.0714285714rem solid var(--table-border-color);
- border-right: 0.0714285714rem solid var(--table-border-separator-color); }
- table.horizontal thead tr:first-child {
- padding-left: 0; }
- table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td {
- border-right: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td:first-child {
- border-top-right-radius: 0.25rem; }
- table.horizontal tbody tr:last-child td:last-child {
- border-bottom-right-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:first-child {
- border-top-left-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:last-child {
- border-bottom-left-radius: 0.25rem; }
-
-@media screen and (max-width: 499px) {
- table, table.horizontal {
- border-collapse: collapse;
- border: 0;
- width: 100%;
- display: table; }
- table thead, table th, table.horizontal thead, table.horizontal th {
- border: 0;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- table tbody, table.horizontal tbody {
- border: 0;
- display: table-row-group; }
- table tr, table.horizontal tr {
- display: block;
- border: 0.0714285714rem solid var(--table-border-color);
- border-radius: var(--universal-border-radius);
- background: #ffffff;
- padding: var(--universal-padding);
- margin: var(--universal-margin);
- margin-bottom: calc(1 * var(--universal-margin)); }
- table th, table td, table.horizontal th, table.horizontal td {
- width: auto; }
- table td, table.horizontal td {
- display: block;
- border: 0;
- text-align: right; }
- table td:before, table.horizontal td:before {
- content: attr(data-label);
- float: left;
- font-weight: 600; }
- table th:first-child, table td:first-child, table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0; }
- table tbody tr:last-child td, table.horizontal tbody tr:last-child td {
- border-right: 0; } }
-table tr:nth-of-type(2n) > td {
- background: var(--table-body-alt-back-color); }
-
-@media screen and (max-width: 500px) {
- table tr:nth-of-type(2n) {
- background: var(--table-body-alt-back-color); } }
-:root {
- --table-body-hover-back-color: #90caf9; }
-
-table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); }
-
-@media screen and (max-width: 500px) {
- table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); } }
-/*
- Definitions for contextual background elements, toasts and tooltips.
-*/
-/* Contextual module CSS variable definitions */
-:root {
- --mark-back-color: #3cb4e6;
- --mark-fore-color: #ffffff; }
-
-mark {
- background: var(--mark-back-color);
- color: var(--mark-fore-color);
- font-size: 0.95em;
- line-height: 1em;
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) var(--universal-padding); }
- mark.inline-block {
- display: inline-block;
- font-size: 1em;
- line-height: 1.4;
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-:root {
- --toast-back-color: #424242;
- --toast-fore-color: #fafafa; }
-
-.toast {
- position: fixed;
- bottom: calc(var(--universal-margin) * 3);
- left: 50%;
- transform: translate(-50%, -50%);
- z-index: 1111;
- color: var(--toast-fore-color);
- background: var(--toast-back-color);
- border-radius: calc(var(--universal-border-radius) * 16);
- padding: var(--universal-padding) calc(var(--universal-padding) * 3); }
-
-:root {
- --tooltip-back-color: #212121;
- --tooltip-fore-color: #fafafa; }
-
-.tooltip {
- position: relative;
- display: inline-block; }
- .tooltip:before, .tooltip:after {
- position: absolute;
- opacity: 0;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: all 0.3s;
- z-index: 1010;
- left: 50%; }
- .tooltip:not(.bottom):before, .tooltip:not(.bottom):after {
- bottom: 75%; }
- .tooltip.bottom:before, .tooltip.bottom:after {
- top: 75%; }
- .tooltip:hover:before, .tooltip:hover:after, .tooltip:focus:before, .tooltip:focus:after {
- opacity: 1;
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%); }
- .tooltip:before {
- content: '';
- background: transparent;
- border: var(--universal-margin) solid transparent;
- left: calc(50% - var(--universal-margin)); }
- .tooltip:not(.bottom):before {
- border-top-color: #212121; }
- .tooltip.bottom:before {
- border-bottom-color: #212121; }
- .tooltip:after {
- content: attr(aria-label);
- color: var(--tooltip-fore-color);
- background: var(--tooltip-back-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- white-space: nowrap;
- transform: translateX(-50%); }
- .tooltip:not(.bottom):after {
- margin-bottom: calc(2 * var(--universal-margin)); }
- .tooltip.bottom:after {
- margin-top: calc(2 * var(--universal-margin)); }
-
-:root {
- --modal-overlay-color: rgba(0, 0, 0, 0.45);
- --modal-close-color: #e6007e;
- --modal-close-hover-color: #ffe97f; }
-
-[type="checkbox"].modal {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].modal + div {
- position: fixed;
- top: 0;
- left: 0;
- display: none;
- width: 100vw;
- height: 100vh;
- background: var(--modal-overlay-color); }
- [type="checkbox"].modal + div .card {
- margin: 0 auto;
- max-height: 50vh;
- overflow: auto; }
- [type="checkbox"].modal + div .card .modal-close {
- position: absolute;
- top: 0;
- right: 0;
- width: 1.75rem;
- height: 1.75rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].modal + div .card .modal-close:before {
- display: block;
- content: '\00D7';
- color: var(--modal-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 1.75rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].modal + div .card .modal-close:hover, [type="checkbox"].modal + div .card .modal-close:focus {
- background: var(--modal-close-hover-color); }
- [type="checkbox"].modal:checked + div {
- display: flex;
- flex: 0 1 auto;
- z-index: 1200; }
- [type="checkbox"].modal:checked + div .card .modal-close {
- z-index: 1211; }
-
-:root {
- --collapse-label-back-color: #03234b;
- --collapse-label-fore-color: #ffffff;
- --collapse-label-hover-back-color: #3cb4e6;
- --collapse-selected-label-back-color: #3cb4e6;
- --collapse-border-color: var(--collapse-label-back-color);
- --collapse-selected-border-color: #ceecf8;
- --collapse-content-back-color: #ffffff;
- --collapse-selected-label-border-color: #3cb4e6; }
-
-.collapse {
- width: calc(100% - 2 * var(--universal-margin));
- opacity: 1;
- display: flex;
- flex-direction: column;
- margin: var(--universal-margin);
- border-radius: var(--universal-border-radius); }
- .collapse > [type="radio"], .collapse > [type="checkbox"] {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- .collapse > label {
- flex-grow: 1;
- display: inline-block;
- height: 1.25rem;
- cursor: pointer;
- transition: background 0.2s;
- color: var(--collapse-label-fore-color);
- background: var(--collapse-label-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- padding: calc(1.25 * var(--universal-padding)); }
- .collapse > label:hover, .collapse > label:focus {
- background: var(--collapse-label-hover-back-color); }
- .collapse > label + div {
- flex-basis: auto;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: max-height 0.3s;
- max-height: 1px; }
- .collapse > :checked + label {
- background: var(--collapse-selected-label-back-color);
- border-color: var(--collapse-selected-label-border-color); }
- .collapse > :checked + label + div {
- box-sizing: border-box;
- position: relative;
- width: 100%;
- height: auto;
- overflow: auto;
- margin: 0;
- background: var(--collapse-content-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- border-top: 0;
- padding: var(--universal-padding);
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%);
- max-height: 100%; }
- .collapse > label:not(:first-of-type) {
- border-top: 0; }
- .collapse > label:first-of-type {
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0; }
- .collapse > label:last-of-type:not(:first-of-type) {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- .collapse > label:last-of-type:first-of-type {
- border-radius: var(--universal-border-radius); }
- .collapse > :checked:last-of-type:not(:first-of-type) + label {
- border-radius: 0; }
- .collapse > :checked:last-of-type + label + div {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
-
-/*
- Custom elements for contextual background elements, toasts and tooltips.
-*/
-mark.tertiary {
- --mark-back-color: #3cb4e6; }
-
-mark.tag {
- padding: calc(var(--universal-padding)/2) var(--universal-padding);
- border-radius: 1em; }
-
-/*
- Definitions for progress elements and spinners.
-*/
-/* Progress module CSS variable definitions */
-:root {
- --progress-back-color: #3cb4e6;
- --progress-fore-color: #555; }
-
-progress {
- display: block;
- vertical-align: baseline;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- height: 0.75rem;
- width: calc(100% - 2 * var(--universal-margin));
- margin: var(--universal-margin);
- border: 0;
- border-radius: calc(2 * var(--universal-border-radius));
- background: var(--progress-back-color);
- color: var(--progress-fore-color); }
- progress::-webkit-progress-value {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress::-webkit-progress-bar {
- background: var(--progress-back-color); }
- progress::-moz-progress-bar {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-webkit-progress-value {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-moz-progress-bar {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress.inline {
- display: inline-block;
- vertical-align: middle;
- width: 60%; }
-
-:root {
- --spinner-back-color: #ddd;
- --spinner-fore-color: #555; }
-
-@keyframes spinner-donut-anim {
- 0% {
- transform: rotate(0deg); }
- 100% {
- transform: rotate(360deg); } }
-.spinner {
- display: inline-block;
- margin: var(--universal-margin);
- border: 0.25rem solid var(--spinner-back-color);
- border-left: 0.25rem solid var(--spinner-fore-color);
- border-radius: 50%;
- width: 1.25rem;
- height: 1.25rem;
- animation: spinner-donut-anim 1.2s linear infinite; }
-
-/*
- Custom elements for progress bars and spinners.
-*/
-progress.primary {
- --progress-fore-color: #1976d2; }
-
-progress.secondary {
- --progress-fore-color: #d32f2f; }
-
-progress.tertiary {
- --progress-fore-color: #308732; }
-
-.spinner.primary {
- --spinner-fore-color: #1976d2; }
-
-.spinner.secondary {
- --spinner-fore-color: #d32f2f; }
-
-.spinner.tertiary {
- --spinner-fore-color: #308732; }
-
-/*
- Definitions for icons - powered by Feather (https://feathericons.com/).
-*/
-span[class^='icon-'] {
- display: inline-block;
- height: 1em;
- width: 1em;
- vertical-align: -0.125em;
- background-size: contain;
- margin: 0 calc(var(--universal-margin) / 4); }
- span[class^='icon-'].secondary {
- -webkit-filter: invert(25%);
- filter: invert(25%); }
- span[class^='icon-'].inverse {
- -webkit-filter: invert(100%);
- filter: invert(100%); }
-
-span.icon-alert {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-bookmark {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-calendar {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-credit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-edit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); }
-span.icon-link {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-help {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-home {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-info {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-lock {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-mail {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-location {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-phone {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-rss {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-search {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-settings {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-share {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-cart {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-upload {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-user {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E"); }
-
-/*
- Definitions for STMicroelectronics icons (https://brandportal.st.com/document/26).
-*/
-span.icon-st-update {
- background-image: url("Update.svg"); }
-span.icon-st-add {
- background-image: url("Add button.svg"); }
-
-/*
- Definitions for utilities and helper classes.
-*/
-/* Utility module CSS variable definitions */
-:root {
- --generic-border-color: rgba(0, 0, 0, 0.3);
- --generic-box-shadow: 0 0.2857142857rem 0.2857142857rem 0 rgba(0, 0, 0, 0.125), 0 0.1428571429rem 0.1428571429rem -0.1428571429rem rgba(0, 0, 0, 0.125); }
-
-.hidden {
- display: none !important; }
-
-.visually-hidden {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; }
-
-.bordered {
- border: 0.0714285714rem solid var(--generic-border-color) !important; }
-
-.rounded {
- border-radius: var(--universal-border-radius) !important; }
-
-.circular {
- border-radius: 50% !important; }
-
-.shadowed {
- box-shadow: var(--generic-box-shadow) !important; }
-
-.responsive-margin {
- margin: calc(var(--universal-margin) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-margin {
- margin: calc(var(--universal-margin) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-margin {
- margin: var(--universal-margin) !important; } }
-
-.responsive-padding {
- padding: calc(var(--universal-padding) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-padding {
- padding: calc(var(--universal-padding) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-padding {
- padding: var(--universal-padding) !important; } }
-
-@media screen and (max-width: 499px) {
- .hidden-sm {
- display: none !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .hidden-md {
- display: none !important; } }
-@media screen and (min-width: 1280px) {
- .hidden-lg {
- display: none !important; } }
-@media screen and (max-width: 499px) {
- .visually-hidden-sm {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .visually-hidden-md {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 1280px) {
- .visually-hidden-lg {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-
-/*# sourceMappingURL=mini-custom.css.map */
-
-img[alt="ST logo"] { display: block; margin: auto; width: 75%; max-width: 250px; min-width: 71px; }
-img[alt="Cube logo"] { float: right; width: 30%; max-width: 10rem; min-width: 8rem; padding-right: 1rem;}
-
-.figure {
- display: block;
- margin-left: auto;
- margin-right: auto;
- text-align: center;
-}
\ No newline at end of file
diff --git a/Drivers/BSP/STM32F4-Discovery/_htmresc/st_logo_2020.png b/Drivers/BSP/STM32F4-Discovery/_htmresc/st_logo_2020.png
deleted file mode 100644
index d6cebb5ac7..0000000000
Binary files a/Drivers/BSP/STM32F4-Discovery/_htmresc/st_logo_2020.png and /dev/null differ
diff --git a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.c b/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.c
deleted file mode 100644
index 7bd67e3f40..0000000000
--- a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.c
+++ /dev/null
@@ -1,682 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f4_discovery.c
- * @author MCD Application Team
- * @brief This file provides set of firmware functions to manage Leds and
- * push-button available on STM32F4-Discovery Kit from STMicroelectronics.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4_discovery.h"
-
-/** @defgroup BSP BSP
- * @{
- */
-
-/** @defgroup STM32F4_DISCOVERY STM32F4 DISCOVERY
- * @{
- */
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL STM32F4 DISCOVERY LOW LEVEL
- * @brief This file provides set of firmware functions to manage Leds and push-button
- * available on STM32F4-Discovery Kit from STMicroelectronics.
- * @{
- */
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Private_TypesDefinitions STM32F4 DISCOVERY LOW LEVEL Private TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Private_Defines STM32F4 DISCOVERY LOW LEVEL Private Defines
- * @{
- */
-
- /**
- * @brief STM32F4 DISCO BSP Driver version number V2.1.5
- */
-#define __STM32F4_DISCO_BSP_VERSION_MAIN (0x02) /*!< [31:24] main version */
-#define __STM32F4_DISCO_BSP_VERSION_SUB1 (0x01) /*!< [23:16] sub1 version */
-#define __STM32F4_DISCO_BSP_VERSION_SUB2 (0x05) /*!< [15:8] sub2 version */
-#define __STM32F4_DISCO_BSP_VERSION_RC (0x00) /*!< [7:0] release candidate */
-#define __STM32F4_DISCO_BSP_VERSION ((__STM32F4_DISCO_BSP_VERSION_MAIN << 24)\
- |(__STM32F4_DISCO_BSP_VERSION_SUB1 << 16)\
- |(__STM32F4_DISCO_BSP_VERSION_SUB2 << 8 )\
- |(__STM32F4_DISCO_BSP_VERSION_RC))
-/**
- * @}
- */
-
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Private_Macros STM32F4 DISCOVERY LOW LEVEL Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Private_Variables STM32F4 DISCOVERY LOW LEVEL Private Variables
- * @{
- */
-GPIO_TypeDef* GPIO_PORT[LEDn] = {LED4_GPIO_PORT,
- LED3_GPIO_PORT,
- LED5_GPIO_PORT,
- LED6_GPIO_PORT};
-const uint16_t GPIO_PIN[LEDn] = {LED4_PIN,
- LED3_PIN,
- LED5_PIN,
- LED6_PIN};
-
-GPIO_TypeDef* BUTTON_PORT[BUTTONn] = {KEY_BUTTON_GPIO_PORT};
-const uint16_t BUTTON_PIN[BUTTONn] = {KEY_BUTTON_PIN};
-const uint8_t BUTTON_IRQn[BUTTONn] = {KEY_BUTTON_EXTI_IRQn};
-
-uint32_t I2cxTimeout = I2Cx_TIMEOUT_MAX; /* 0x01)
- {
- WriteAddr |= (uint8_t)MULTIPLEBYTE_CMD;
- }
- /* Set chip select Low at the start of the transmission */
- ACCELERO_CS_LOW();
-
- /* Send the Address of the indexed register */
- SPIx_WriteRead(WriteAddr);
-
- /* Send the data that will be written into the device (MSB First) */
- while(NumByteToWrite >= 0x01)
- {
- SPIx_WriteRead(*pBuffer);
- NumByteToWrite--;
- pBuffer++;
- }
-
- /* Set chip select High at the end of the transmission */
- ACCELERO_CS_HIGH();
-}
-
-/**
- * @brief Reads a block of data from the Accelerometer.
- * @param pBuffer: pointer to the buffer that receives the data read from the Accelerometer.
- * @param ReadAddr: Accelerometer's internal address to read from.
- * @param NumByteToRead: number of bytes to read from the Accelerometer.
- */
-void ACCELERO_IO_Read(uint8_t *pBuffer, uint8_t ReadAddr, uint16_t NumByteToRead)
-{
- if(NumByteToRead > 0x01)
- {
- ReadAddr |= (uint8_t)(READWRITE_CMD | MULTIPLEBYTE_CMD);
- }
- else
- {
- ReadAddr |= (uint8_t)READWRITE_CMD;
- }
- /* Set chip select Low at the start of the transmission */
- ACCELERO_CS_LOW();
-
- /* Send the Address of the indexed register */
- SPIx_WriteRead(ReadAddr);
-
- /* Receive the data that will be read from the device (MSB First) */
- while(NumByteToRead > 0x00)
- {
- /* Send dummy byte (0x00) to generate the SPI clock to ACCELEROMETER (Slave device) */
- *pBuffer = SPIx_WriteRead(DUMMY_BYTE);
- NumByteToRead--;
- pBuffer++;
- }
-
- /* Set chip select High at the end of the transmission */
- ACCELERO_CS_HIGH();
-}
-
-/********************************* LINK AUDIO *********************************/
-
-/**
- * @brief Initializes Audio low level.
- */
-void AUDIO_IO_Init(void)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable Reset GPIO Clock */
- AUDIO_RESET_GPIO_CLK_ENABLE();
-
- /* Audio reset pin configuration */
- GPIO_InitStruct.Pin = AUDIO_RESET_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(AUDIO_RESET_GPIO, &GPIO_InitStruct);
-
- I2Cx_Init();
-
- /* Power Down the codec */
- HAL_GPIO_WritePin(AUDIO_RESET_GPIO, AUDIO_RESET_PIN, GPIO_PIN_RESET);
-
- /* Wait for a delay to insure registers erasing */
- HAL_Delay(5);
-
- /* Power on the codec */
- HAL_GPIO_WritePin(AUDIO_RESET_GPIO, AUDIO_RESET_PIN, GPIO_PIN_SET);
-
- /* Wait for a delay to insure registers erasing */
- HAL_Delay(5);
-}
-
-/**
- * @brief DeInitializes Audio low level.
- */
-void AUDIO_IO_DeInit(void)
-{
-
-}
-
-/**
- * @brief Writes a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param Value: Data to be written
- */
-void AUDIO_IO_Write (uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- I2Cx_WriteData(Addr, Reg, Value);
-}
-
-/**
- * @brief Reads a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @retval Data to be read
- */
-uint8_t AUDIO_IO_Read(uint8_t Addr, uint8_t Reg)
-{
- return I2Cx_ReadData(Addr, Reg);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.h b/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.h
deleted file mode 100644
index 26b091ff69..0000000000
--- a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.h
+++ /dev/null
@@ -1,282 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f4_discovery.h
- * @author MCD Application Team
- * @brief This file contains definitions for STM32F4-Discovery Kit's Leds and
- * push-button hardware resources.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F4_DISCOVERY_H
-#define __STM32F4_DISCOVERY_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F4_DISCOVERY
- * @{
- */
-
-/** @addtogroup STM32F4_DISCOVERY_LOW_LEVEL
- * @{
- */
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Exported_Types STM32F4 DISCOVERY LOW LEVEL_Exported_Types
- * @{
- */
-typedef enum
-{
- LED4 = 0,
- LED3 = 1,
- LED5 = 2,
- LED6 = 3
-} Led_TypeDef;
-
-typedef enum
-{
- BUTTON_KEY = 0,
-} Button_TypeDef;
-
-typedef enum
-{
- BUTTON_MODE_GPIO = 0,
- BUTTON_MODE_EXTI = 1
-} ButtonMode_TypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Exported_Constants STM32F4 DISCOVERY LOW LEVEL Exported Constants
- * @{
- */
-
-/**
-* @brief Define for STM32F4_DISCOVERY board
-*/
-#if !defined (USE_STM32F4_DISCO)
- #define USE_STM32F4_DISCO
-#endif
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_LED STM32F4 DISCOVERY LOW LEVEL LED
- * @{
- */
-#define LEDn 4
-
-#define LED4_PIN GPIO_PIN_12
-#define LED4_GPIO_PORT GPIOD
-#define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-
-#define LED3_PIN GPIO_PIN_13
-#define LED3_GPIO_PORT GPIOD
-#define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-
-#define LED5_PIN GPIO_PIN_14
-#define LED5_GPIO_PORT GPIOD
-#define LED5_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define LED5_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-
-#define LED6_PIN GPIO_PIN_15
-#define LED6_GPIO_PORT GPIOD
-#define LED6_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define LED6_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-
-#define LEDx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) LED4_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 1) LED3_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 2) LED5_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 3) LED6_GPIO_CLK_ENABLE(); \
- }while(0)
-
-#define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) LED4_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 1) LED3_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 2) LED5_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 3) LED6_GPIO_CLK_DISABLE(); \
- }while(0)
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_BUTTON STM32F4 DISCOVERY LOW LEVEL BUTTON
- * @{
- */
-#define BUTTONn 1
-
-/**
- * @brief Wakeup push-button
- */
-#define KEY_BUTTON_PIN GPIO_PIN_0
-#define KEY_BUTTON_GPIO_PORT GPIOA
-#define KEY_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define KEY_BUTTON_EXTI_IRQn EXTI0_IRQn
-
-#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_ENABLE(); \
- }while(0)
-
-#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_DISABLE(); \
- }while(0)
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_BUS STM32F4 DISCOVERY LOW LEVEL BUS
- * @{
- */
-
-/*############################### SPI1 #######################################*/
-#define DISCOVERY_SPIx SPI1
-#define DISCOVERY_SPIx_CLK_ENABLE() __HAL_RCC_SPI1_CLK_ENABLE()
-#define DISCOVERY_SPIx_GPIO_PORT GPIOA /* GPIOA */
-#define DISCOVERY_SPIx_AF GPIO_AF5_SPI1
-#define DISCOVERY_SPIx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define DISCOVERY_SPIx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define DISCOVERY_SPIx_SCK_PIN GPIO_PIN_5 /* PA.05 */
-#define DISCOVERY_SPIx_MISO_PIN GPIO_PIN_6 /* PA.06 */
-#define DISCOVERY_SPIx_MOSI_PIN GPIO_PIN_7 /* PA.07 */
-
-/* Maximum Timeout values for flags waiting loops. These timeouts are not based
- on accurate values, they just guarantee that the application will not remain
- stuck if the SPI communication is corrupted.
- You may modify these timeout values depending on CPU frequency and application
- conditions (interrupts routines ...). */
-#define SPIx_TIMEOUT_MAX 0x1000 /*Init(ctrl);
-
- /* MEMS High Pass Filter configuration */
- lis302dl_filter.HighPassFilter_Data_Selection = LIS302DL_FILTEREDDATASELECTION_OUTPUTREGISTER;
- lis302dl_filter.HighPassFilter_CutOff_Frequency = LIS302DL_HIGHPASSFILTER_LEVEL_1;
- lis302dl_filter.HighPassFilter_Interrupt = LIS302DL_HIGHPASSFILTERINTERRUPT_1_2;
-
- /* Configure MEMS high pass filter cut-off level, interrupt and data selection bits */
- ctrl = (uint8_t)(lis302dl_filter.HighPassFilter_Data_Selection | \
- lis302dl_filter.HighPassFilter_CutOff_Frequency | \
- lis302dl_filter.HighPassFilter_Interrupt);
-
- /* Configure the accelerometer LPF main parameters */
- AcceleroDrv->FilterConfig(ctrl);
-
- ret = ACCELERO_OK;
- }
- else if(Lis3dshDrv.ReadID() == I_AM_LIS3DSH)
- {
- /* Initialize the accelerometer driver structure */
- AcceleroDrv = &Lis3dshDrv;
-
- /* Set configuration of LIS3DSH MEMS Accelerometer **********************/
- l1s3dsh_InitStruct.Output_DataRate = LIS3DSH_DATARATE_100;
- l1s3dsh_InitStruct.Axes_Enable = LIS3DSH_XYZ_ENABLE;
- l1s3dsh_InitStruct.SPI_Wire = LIS3DSH_SERIALINTERFACE_4WIRE;
- l1s3dsh_InitStruct.Self_Test = LIS3DSH_SELFTEST_NORMAL;
- l1s3dsh_InitStruct.Full_Scale = LIS3DSH_FULLSCALE_2;
- l1s3dsh_InitStruct.Filter_BW = LIS3DSH_FILTER_BW_800;
-
- /* Configure MEMS: power mode(ODR) and axes enable */
- ctrl = (uint16_t) (l1s3dsh_InitStruct.Output_DataRate | \
- l1s3dsh_InitStruct.Axes_Enable);
-
- /* Configure MEMS: full scale and self test */
- ctrl |= (uint16_t) ((l1s3dsh_InitStruct.SPI_Wire | \
- l1s3dsh_InitStruct.Self_Test | \
- l1s3dsh_InitStruct.Full_Scale | \
- l1s3dsh_InitStruct.Filter_BW) << 8);
-
- /* Configure the accelerometer main parameters */
- AcceleroDrv->Init(ctrl);
-
- ret = ACCELERO_OK;
- }
-
- else
- {
- ret = ACCELERO_ERROR;
- }
- return ret;
-}
-
-/**
- * @brief Read ID of Accelerometer component.
- * @retval ID
- */
-uint8_t BSP_ACCELERO_ReadID(void)
-{
- uint8_t id = 0x00;
-
- if(AcceleroDrv->ReadID != NULL)
- {
- id = AcceleroDrv->ReadID();
- }
- return id;
-}
-
-/**
- * @brief Reboot memory content of Accelerometer.
- */
-void BSP_ACCELERO_Reset(void)
-{
- if(AcceleroDrv->Reset != NULL)
- {
- AcceleroDrv->Reset();
- }
-}
-
-/**
- * @brief Configure Accelerometer click IT.
- */
-void BSP_ACCELERO_Click_ITConfig(void)
-{
- if(AcceleroDrv->ConfigIT != NULL)
- {
- AcceleroDrv->ConfigIT();
- }
-}
-
-/**
- * @brief Clear Accelerometer click IT.
- */
-void BSP_ACCELERO_Click_ITClear(void)
-{
- if(AcceleroDrv->ClearIT != NULL)
- {
- AcceleroDrv->ClearIT();
- }
-}
-
-/**
- * @brief Get XYZ axes acceleration.
- * @param pDataXYZ: Pointer to 3 angular acceleration axes.
- * pDataXYZ[0] = X axis, pDataXYZ[1] = Y axis, pDataXYZ[2] = Z axis
- */
-void BSP_ACCELERO_GetXYZ(int16_t *pDataXYZ)
-{
- int16_t SwitchXY = 0;
-
- if(AcceleroDrv->GetXYZ != NULL)
- {
- AcceleroDrv->GetXYZ(pDataXYZ);
-
- /* Switch X and Y Axes in case of LIS302DL MEMS */
- if(AcceleroDrv == &Lis302dlDrv)
- {
- SwitchXY = pDataXYZ[0];
- pDataXYZ[0] = pDataXYZ[1];
- /* Invert Y Axis to be compliant with LIS3DSH MEMS */
- pDataXYZ[1] = -SwitchXY;
- }
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_accelerometer.h b/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_accelerometer.h
deleted file mode 100644
index 68a5a8670a..0000000000
--- a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_accelerometer.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f4_discovery_accelerometer.h
- * @author MCD Application Team
- * @brief This file contains all the functions prototypes for the
- * stm32f4_discovery_accelerometer.c firmware driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F4_DISCOVERY_ACCELEROMETER_H
-#define __STM32F4_DISCOVERY_ACCELEROMETER_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4_discovery.h"
-
-/* Include Accelerometer component drivers */
-#include "../Components/lis302dl/lis302dl.h"
-#include "../Components/lis3dsh/lis3dsh.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F4_DISCOVERY
- * @{
- */
-
-/** @addtogroup STM32F4_DISCOVERY_ACCELEROMETER
- * @{
- */
-
-/** @defgroup STM32F4_DISCOVERY_ACCELEROMETER_Exported_Types STM32F4 DISCOVERY ACCELEROMETER Exported Types
- * @{
- */
-typedef enum
-{
- ACCELERO_OK = 0,
- ACCELERO_ERROR = 1,
- ACCELERO_TIMEOUT = 2
-}ACCELERO_StatusTypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_ACCELEROMETER_Exported_Functions STM32F4 DISCOVERY ACCELEROMETER Exported Functions
- * @{
- */
-/* Accelerometer functions */
-uint8_t BSP_ACCELERO_Init(void);
-uint8_t BSP_ACCELERO_ReadID(void);
-void BSP_ACCELERO_Reset(void);
-void BSP_ACCELERO_Click_ITConfig(void);
-void BSP_ACCELERO_Click_ITClear(void);
-void BSP_ACCELERO_GetXYZ(int16_t *pDataXYZ);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F4_DISCOVERY_ACCELEROMETER_H */
diff --git a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.c b/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.c
deleted file mode 100644
index 6f1814308c..0000000000
--- a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.c
+++ /dev/null
@@ -1,1121 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f4_discovery_audio.c
- * @author MCD Application Team
- * @brief This file provides the Audio driver for the STM32F4-Discovery
- * board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/*==============================================================================
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver supports STM32F4xx devices on STM32F4-Discovery Kit:
- a) to play an audio file (all functions names start by BSP_AUDIO_OUT_xxx)
- b) to record an audio file through MP45DT02, ST MEMS (all functions names start by AUDIO_IN_xxx)
-
-a) PLAY A FILE:
-==============
- + Call the function BSP_AUDIO_OUT_Init(
- OutputDevice: physical output mode (OUTPUT_DEVICE_SPEAKER,
- OUTPUT_DEVICE_HEADPHONE, OUTPUT_DEVICE_AUTO or
- OUTPUT_DEVICE_BOTH)
- Volume: initial volume to be set (0 is min (mute), 100 is max (100%)
- AudioFreq: Audio frequency in Hz (8000, 16000, 22500, 32000 ...)
- this parameter is relative to the audio file/stream type.
- )
- This function configures all the hardware required for the audio application (codec, I2C, I2S,
- GPIOs, DMA and interrupt if needed). This function returns 0 if configuration is OK.
- If the returned value is different from 0 or the function is stuck then the communication with
- the codec (try to un-plug the power or reset device in this case).
- - OUTPUT_DEVICE_SPEAKER: only speaker will be set as output for the audio stream.
- - OUTPUT_DEVICE_HEADPHONE: only headphones will be set as output for the audio stream.
- - OUTPUT_DEVICE_AUTO: Selection of output device is made through external switch (implemented
- into the audio jack on the discovery board). When the Headphone is connected it is used
- as output. When the headphone is disconnected from the audio jack, the output is
- automatically switched to Speaker.
- - OUTPUT_DEVICE_BOTH: both Speaker and Headphone are used as outputs for the audio stream
- at the same time.
- + Call the function BSP_AUDIO_OUT_Play(
- pBuffer: pointer to the audio data file address
- Size: size of the buffer to be sent in Bytes
- )
- to start playing (for the first time) from the audio file/stream.
- + Call the function BSP_AUDIO_OUT_Pause() to pause playing
- + Call the function BSP_AUDIO_OUT_Resume() to resume playing.
- Note. After calling BSP_AUDIO_OUT_Pause() function for pause, only BSP_AUDIO_OUT_Resume() should be called
- for resume (it is not allowed to call BSP_AUDIO_OUT_Play() in this case).
- Note. This function should be called only when the audio file is played or paused (not stopped).
- + For each mode, you may need to implement the relative callback functions into your code.
- The Callback functions are named BSP_AUDIO_OUT_XXXCallBack() and only their prototypes are declared in
- the stm32f4_discovery_audio.h file. (refer to the example for more details on the callbacks implementations)
- + To Stop playing, to modify the volume level, the frequency or to mute, use the functions
- BSP_AUDIO_OUT_Stop(), BSP_AUDIO_OUT_SetVolume(), AUDIO_OUT_SetFrequency() BSP_AUDIO_OUT_SetOutputMode and BSP_AUDIO_OUT_SetMute().
- + The driver API and the callback functions are at the end of the stm32f4_discovery_audio.h file.
-
-Driver architecture:
---------------------
- + This driver provide the High Audio Layer: consists of the function API exported in the stm32f4_discovery_audio.h file
- (BSP_AUDIO_OUT_Init(), BSP_AUDIO_OUT_Play() ...)
- + This driver provide also the Media Access Layer (MAL): which consists of functions allowing to access the media containing/
- providing the audio file/stream. These functions are also included as local functions into
- the stm32f4_discovery_audio.c file (I2S3_Init()...)
-
-Known Limitations:
--------------------
- 1- When using the Speaker, if the audio file quality is not high enough, the speaker output
- may produce high and uncomfortable noise level. To avoid this issue, to use speaker
- output properly, try to increase audio file sampling rate (typically higher than 48KHz).
- This operation will lead to larger file size.
- 2- Communication with the audio codec (through I2C) may be corrupted if it is interrupted by some
- user interrupt routines (in this case, interrupts could be disabled just before the start of
- communication then re-enabled when it is over). Note that this communication is only done at
- the configuration phase (BSP_AUDIO_OUT_Init() or BSP_AUDIO_OUT_Stop()) and when Volume control modification is
- performed (BSP_AUDIO_OUT_SetVolume() or BSP_AUDIO_OUT_SetMute()or BSP_AUDIO_OUT_SetOutputMode()).
- When the audio data is played, no communication is required with the audio codec.
- 3- Parsing of audio file is not implemented (in order to determine audio file properties: Mono/Stereo, Data size,
- File size, Audio Frequency, Audio Data header size ...). The configuration is fixed for the given audio file.
- 4- Supports only Stereo audio streaming. To play mono audio streams, each data should be sent twice
- on the I2S or should be duplicated on the source buffer. Or convert the stream in stereo before playing.
- 5- Supports only 16-bits audio data size.
-
-b) RECORD A FILE:
-================
- + Call the function BSP_AUDIO_IN_Init(
- AudioFreq: Audio frequency in Hz (8000, 16000, 22500, 32000 ...)
- )
- This function configures all the hardware required for the audio application (I2S,
- GPIOs, DMA and interrupt if needed). This function returns 0 if configuration is OK.
-
- + Call the function BSP_AUDIO_IN_Record(
- pbuf Main buffer pointer for the recorded data storing
- size Current size of the recorded buffer
- )
- to start recording from the microphone.
-
- + User needs to implement user callbacks to retrieve data saved in the record buffer
- (AUDIO_IN_RxHalfCpltCallback/BSP_AUDIO_IN_ReceiveComplete_CallBack)
-
- + Call the function AUDIO_IN_STOP() to stop recording
-
-==============================================================================*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4_discovery_audio.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F4_DISCOVERY
- * @{
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO STM32F4 DISCOVERY AUDIO
- * @brief This file includes the low layer audio driver available on STM32F4-Discovery
- * discovery board.
- * @{
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_Private_Types STM32F4 DISCOVERY AUDIO Private Types
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_Private_Defines STM32F4 DISCOVERY AUDIO Private Defines
- * @{
- */
-/* These PLL parameters are valid when the f(VCO clock) = 1Mhz */
-const uint32_t I2SFreq[8] = {8000, 11025, 16000, 22050, 32000, 44100, 48000, 96000};
-const uint32_t I2SPLLN[8] = {256, 429, 213, 429, 426, 271, 258, 344};
-const uint32_t I2SPLLR[8] = {5, 4, 4, 4, 4, 6, 3, 1};
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_Private_Macros STM32F4 DISCOVERY AUDIO Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_Private_Variables STM32F4 DISCOVERY AUDIO Private Variables
- * @{
- */
-/*##### PLAY #####*/
-static AUDIO_DrvTypeDef *pAudioDrv;
-I2S_HandleTypeDef hAudioOutI2s;
-
-/*### RECORDER ###*/
-I2S_HandleTypeDef hAudioInI2s;
-
-/* PDM filters params */
-PDM_Filter_Handler_t PDM_FilterHandler[2];
-PDM_Filter_Config_t PDM_FilterConfig[2];
-
-__IO uint16_t AudioInVolume = DEFAULT_AUDIO_IN_VOLUME;
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_Private_Function_Prototypes STM32F4 DISCOVERY AUDIO Private Function Prototypes
- * @{
- */
-static uint8_t I2S3_Init(uint32_t AudioFreq);
-static uint8_t I2S2_Init(uint32_t AudioFreq);
-static void PDMDecoder_Init(uint32_t AudioFreq, uint32_t ChnlNbrIn, uint32_t ChnlNbrOut);
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_OUT_Private_Functions STM32F4 DISCOVERY AUDIO OUT Private Functions
- * @{
- */
-
-/**
- * @brief Configures the audio peripherals.
- * @param OutputDevice: OUTPUT_DEVICE_SPEAKER, OUTPUT_DEVICE_HEADPHONE,
- * OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO .
- * @param Volume: Initial volume level (from 0 (Mute) to 100 (Max))
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
-{
- uint8_t ret = AUDIO_OK;
-
- /* PLL clock is set depending by the AudioFreq (44.1khz vs 48khz groups) */
- BSP_AUDIO_OUT_ClockConfig(&hAudioOutI2s, AudioFreq, NULL);
-
- /* I2S data transfer preparation:
- Prepare the Media to be used for the audio transfer from memory to I2S peripheral */
- hAudioOutI2s.Instance = I2S3;
- if(HAL_I2S_GetState(&hAudioOutI2s) == HAL_I2S_STATE_RESET)
- {
- /* Init the I2S MSP: this __weak function can be redefined by the application*/
- BSP_AUDIO_OUT_MspInit(&hAudioOutI2s, NULL);
- }
-
- /* I2S data transfer preparation:
- Prepare the Media to be used for the audio transfer from memory to I2S peripheral */
- /* Configure the I2S peripheral */
- if(I2S3_Init(AudioFreq) != AUDIO_OK)
- {
- ret = AUDIO_ERROR;
- }
-
- if(ret == AUDIO_OK)
- {
- /* Retrieve audio codec identifier */
- if(((cs43l22_drv.ReadID(AUDIO_I2C_ADDRESS)) & CS43L22_ID_MASK) == CS43L22_ID)
- {
- /* Initialize the audio driver structure */
- pAudioDrv = &cs43l22_drv;
- }
- else
- {
- ret = AUDIO_ERROR;
- }
- }
-
- if(ret == AUDIO_OK)
- {
- pAudioDrv->Init(AUDIO_I2C_ADDRESS, OutputDevice, Volume, AudioFreq);
- }
-
- return ret;
-}
-
-/**
- * @brief Starts playing audio stream from a data buffer for a determined size.
- * @param pBuffer: Pointer to the buffer
- * @param Size: Number of audio data BYTES.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size)
-{
- /* Call the audio Codec Play function */
- if(pAudioDrv->Play(AUDIO_I2C_ADDRESS, pBuffer, Size) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Update the Media layer and enable it for play */
- HAL_I2S_Transmit_DMA(&hAudioOutI2s, pBuffer, DMA_MAX(Size/AUDIODATA_SIZE));
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Sends n-Bytes on the I2S interface.
- * @param pData: Pointer to data address
- * @param Size: Number of data to be written
- */
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
-{
- HAL_I2S_Transmit_DMA(&hAudioOutI2s, pData, Size);
-}
-
-/**
- * @brief Pauses the audio file stream. In case of using DMA, the DMA Pause
- * feature is used.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only the
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Pause(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(pAudioDrv->Pause(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer pause function */
- HAL_I2S_DMAPause(&hAudioOutI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Resumes the audio file streaming.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Resume(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(pAudioDrv->Resume(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer resume function */
- HAL_I2S_DMAResume(&hAudioOutI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Stops audio playing and Power down the Audio Codec.
- * @param Option: could be one of the following parameters
- * - CODEC_PDWN_HW: completely shut down the codec (physically).
- * Then need to reconfigure the Codec after power on.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
-{
- /* Call DMA Stop to disable DMA stream before stopping codec */
- HAL_I2S_DMAStop(&hAudioOutI2s);
-
- /* Call Audio Codec Stop function */
- if(pAudioDrv->Stop(AUDIO_I2C_ADDRESS, Option) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- if(Option == CODEC_PDWN_HW)
- {
- /* Wait at least 1ms */
- HAL_Delay(1);
-
- /* Reset the pin */
- HAL_GPIO_WritePin(AUDIO_RESET_GPIO, AUDIO_RESET_PIN, GPIO_PIN_RESET);
- }
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Controls the current audio volume level.
- * @param Volume: Volume level to be set in percentage from 0% to 100% (0 for
- * Mute and 100 for Max volume level).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
-{
- /* Call the codec volume control function with converted volume value */
- if(pAudioDrv->SetVolume(AUDIO_I2C_ADDRESS, Volume) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Enables or disables the MUTE mode by software
- * @param Cmd: could be AUDIO_MUTE_ON to mute sound or AUDIO_MUTE_OFF to
- * unmute the codec and restore previous volume level.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
-{
- /* Call the Codec Mute function */
- if(pAudioDrv->SetMute(AUDIO_I2C_ADDRESS, Cmd) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Switch dynamically (while audio file is played) the output target
- * (speaker or headphone).
- * @note This function modifies a global variable of the audio codec driver: OutputDev.
- * @param Output: specifies the audio output target: OUTPUT_DEVICE_SPEAKER,
- * OUTPUT_DEVICE_HEADPHONE, OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output)
-{
- /* Call the Codec output Device function */
- if(pAudioDrv->SetOutputMode(AUDIO_I2C_ADDRESS, Output) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Update the audio frequency.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @note This API should be called after the BSP_AUDIO_OUT_Init() to adjust the
- * audio frequency.
- */
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
-{
- /* PLL clock is set depending by the AudioFreq (44.1khz vs 48khz groups) */
- BSP_AUDIO_OUT_ClockConfig(&hAudioOutI2s, AudioFreq, NULL);
-
- /* Update the I2S audio frequency configuration */
- I2S3_Init(AudioFreq);
-}
-
-/**
- * @brief Tx Transfer completed callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- if(hi2s->Instance == I2S3)
- {
- /* Call the user function which will manage directly transfer complete */
- BSP_AUDIO_OUT_TransferComplete_CallBack();
- }
-}
-
-/**
- * @brief Tx Half Transfer completed callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- if(hi2s->Instance == I2S3)
- {
- /* Manage the remaining file size and new address offset: This function should
- be coded by user (its prototype is already declared in stm32f4_discovery_audio.h) */
- BSP_AUDIO_OUT_HalfTransfer_CallBack();
- }
-}
-
-/**
- * @brief Clock Config.
- * @param hi2s: might be required to set audio peripheral predivider if any.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @note This API is called by BSP_AUDIO_OUT_Init() and BSP_AUDIO_OUT_SetFrequency()
- * Being __weak it can be overwritten by the application
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params)
-{
- RCC_PeriphCLKInitTypeDef rccclkinit;
- uint8_t index = 0, freqindex = 0xFF;
-
- for(index = 0; index < 8; index++)
- {
- if(I2SFreq[index] == AudioFreq)
- {
- freqindex = index;
- }
- }
- /* Enable PLLI2S clock */
- HAL_RCCEx_GetPeriphCLKConfig(&rccclkinit);
- /* PLLI2S_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
- if ((freqindex & 0x7) == 0)
- {
- /* I2S clock config
- PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) × (PLLI2SN/PLLM)
- I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
- rccclkinit.PeriphClockSelection = RCC_PERIPHCLK_I2S;
- rccclkinit.PLLI2S.PLLI2SN = I2SPLLN[freqindex];
- rccclkinit.PLLI2S.PLLI2SR = I2SPLLR[freqindex];
- HAL_RCCEx_PeriphCLKConfig(&rccclkinit);
- }
- else
- {
- /* I2S clock config
- PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) × (PLLI2SN/PLLM)
- I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
- rccclkinit.PeriphClockSelection = RCC_PERIPHCLK_I2S;
- rccclkinit.PLLI2S.PLLI2SN = 258;
- rccclkinit.PLLI2S.PLLI2SR = 3;
- HAL_RCCEx_PeriphCLKConfig(&rccclkinit);
- }
-}
-
-/**
- * @brief AUDIO OUT I2S MSP Init.
- * @param hi2s: might be required to set audio peripheral predivider if any.
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- static DMA_HandleTypeDef hdma_i2sTx;
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable I2S3 clock */
- I2S3_CLK_ENABLE();
-
- /*** Configure the GPIOs ***/
- /* Enable I2S GPIO clocks */
- I2S3_SCK_SD_CLK_ENABLE();
- I2S3_WS_CLK_ENABLE();
-
- /* I2S3 pins configuration: WS, SCK and SD pins ----------------------------*/
- GPIO_InitStruct.Pin = I2S3_SCK_PIN | I2S3_SD_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Alternate = I2S3_SCK_SD_WS_AF;
- HAL_GPIO_Init(I2S3_SCK_SD_GPIO_PORT, &GPIO_InitStruct);
-
- GPIO_InitStruct.Pin = I2S3_WS_PIN ;
- HAL_GPIO_Init(I2S3_WS_GPIO_PORT, &GPIO_InitStruct);
-
- /* I2S3 pins configuration: MCK pin */
- I2S3_MCK_CLK_ENABLE();
- GPIO_InitStruct.Pin = I2S3_MCK_PIN;
- HAL_GPIO_Init(I2S3_MCK_GPIO_PORT, &GPIO_InitStruct);
-
- /* Enable the I2S DMA clock */
- I2S3_DMAx_CLK_ENABLE();
-
- if(hi2s->Instance == I2S3)
- {
- /* Configure the hdma_i2sTx handle parameters */
- hdma_i2sTx.Init.Channel = I2S3_DMAx_CHANNEL;
- hdma_i2sTx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_i2sTx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_i2sTx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_i2sTx.Init.PeriphDataAlignment = I2S3_DMAx_PERIPH_DATA_SIZE;
- hdma_i2sTx.Init.MemDataAlignment = I2S3_DMAx_MEM_DATA_SIZE;
- hdma_i2sTx.Init.Mode = DMA_NORMAL;
- hdma_i2sTx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_i2sTx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- hdma_i2sTx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_i2sTx.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_i2sTx.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- hdma_i2sTx.Instance = I2S3_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hi2s, hdmatx, hdma_i2sTx);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_i2sTx);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&hdma_i2sTx);
- }
-
- /* I2S DMA IRQ Channel configuration */
- HAL_NVIC_SetPriority(I2S3_DMAx_IRQ, AUDIO_OUT_IRQ_PREPRIO, 0);
- HAL_NVIC_EnableIRQ(I2S3_DMAx_IRQ);
-}
-
-/**
- * @brief De-Initializes BSP_AUDIO_OUT MSP.
- * @param hi2s: might be required to set audio peripheral predivider if any.
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* I2S DMA IRQ Channel deactivation */
- HAL_NVIC_DisableIRQ(I2S3_DMAx_IRQ);
-
- if(hi2s->Instance == I2S3)
- {
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(hi2s->hdmatx);
- }
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(hi2s);
-
- /* CODEC_I2S pins configuration: SCK and SD pins */
- GPIO_InitStruct.Pin = I2S3_SCK_PIN | I2S3_SD_PIN;
- HAL_GPIO_DeInit(I2S3_SCK_SD_GPIO_PORT, GPIO_InitStruct.Pin);
-
- /* CODEC_I2S pins configuration: WS pin */
- GPIO_InitStruct.Pin = I2S3_WS_PIN;
- HAL_GPIO_DeInit(I2S3_WS_GPIO_PORT, GPIO_InitStruct.Pin);
-
- /* CODEC_I2S pins configuration: MCK pin */
- GPIO_InitStruct.Pin = I2S3_MCK_PIN;
- HAL_GPIO_DeInit(I2S3_MCK_GPIO_PORT, GPIO_InitStruct.Pin);
-
- /* Disable I2S clock */
- I2S3_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the applic
- by surcgarging this __weak function */
-}
-
-/**
- * @brief Manages the DMA full Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA FIFO error event.
- */
-__weak void BSP_AUDIO_OUT_Error_CallBack(void)
-{
-}
-
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Initializes the Audio Codec audio interface (I2S).
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- */
-static uint8_t I2S3_Init(uint32_t AudioFreq)
-{
- /* Initialize the hAudioOutI2s Instance parameter */
- hAudioOutI2s.Instance = I2S3;
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(&hAudioOutI2s);
-
- /* I2S3 peripheral configuration */
- hAudioOutI2s.Init.AudioFreq = AudioFreq;
- hAudioOutI2s.Init.ClockSource = I2S_CLOCK_PLL;
- hAudioOutI2s.Init.CPOL = I2S_CPOL_LOW;
- hAudioOutI2s.Init.DataFormat = I2S_DATAFORMAT_16B;
- hAudioOutI2s.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
- hAudioOutI2s.Init.Mode = I2S_MODE_MASTER_TX;
- hAudioOutI2s.Init.Standard = I2S_STANDARD;
- /* Initialize the I2S peripheral with the structure above */
- if(HAL_I2S_Init(&hAudioOutI2s) != HAL_OK)
- {
- return AUDIO_ERROR;
- }
- else
- {
- return AUDIO_OK;
- }
-}
-
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_IN_Private_Functions STM32F4 DISCOVERY AUDIO IN Private Functions
- * @{
- */
-
-/**
- * @brief Initializes wave recording.
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- * @param BitRes: Audio frequency to be configured for the I2S peripheral.
- * @param ChnlNbr: Audio frequency to be configured for the I2S peripheral.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
-{
-
- /* Configure PLL clock */
- BSP_AUDIO_IN_ClockConfig(&hAudioInI2s, AudioFreq, NULL);
-
- /* Configure the PDM library */
- /* On STM32F4-Discovery a single microphone is mounted, samples are duplicated
- to make stereo audio streams */
- PDMDecoder_Init(AudioFreq, ChnlNbr, 2);
-
- /* Configure the I2S peripheral */
- hAudioInI2s.Instance = I2S2;
- if(HAL_I2S_GetState(&hAudioInI2s) == HAL_I2S_STATE_RESET)
- {
- /* Initialize the I2S Msp: this __weak function can be rewritten by the application */
- BSP_AUDIO_IN_MspInit(&hAudioInI2s, NULL);
- }
-
- /* Configure the I2S2 */
- I2S2_Init(AudioFreq);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Starts audio recording.
- * @param pbuf: Main buffer pointer for the recorded data storing
- * @param size: Current size of the recorded buffer
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Record(uint16_t* pbuf, uint32_t size)
-{
- uint32_t ret = AUDIO_ERROR;
-
- /* Start the process receive DMA */
- HAL_I2S_Receive_DMA(&hAudioInI2s, pbuf, size);
-
- /* Return AUDIO_OK when all operations are correctly done */
- ret = AUDIO_OK;
-
- return ret;
-}
-
-/**
- * @brief Stops audio recording.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Stop(void)
-{
- uint32_t ret = AUDIO_ERROR;
-
- /* Call the Media layer pause function */
- HAL_I2S_DMAStop(&hAudioInI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- ret = AUDIO_OK;
-
- return ret;
-}
-
-/**
- * @brief Pauses the audio file stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Pause(void)
-{
- /* Call the Media layer pause function */
- HAL_I2S_DMAPause(&hAudioInI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Resumes the audio file stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Resume(void)
-{
- /* Call the Media layer pause/resume function */
- HAL_I2S_DMAResume(&hAudioInI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Controls the audio in volume level.
- * @param Volume: Volume level to be set in percentage from 0% to 100% (0 for
- * Mute and 100 for Max volume level).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume)
-{
- /* Set the Global variable AudioInVolume */
- AudioInVolume = Volume;
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Converts audio format from PDM to PCM.
- * @param PDMBuf: Pointer to data PDM buffer
- * @param PCMBuf: Pointer to data PCM buffer
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf)
-{
- uint16_t AppPDM[INTERNAL_BUFF_SIZE/2];
- uint32_t index = 0;
-
- /* PDM Demux */
- for(index = 0; indexInstance == I2S2)
- {
- /* Configure the hdma_i2sRx handle parameters */
- hdma_i2sRx.Init.Channel = I2S2_DMAx_CHANNEL;
- hdma_i2sRx.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_i2sRx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_i2sRx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_i2sRx.Init.PeriphDataAlignment = I2S2_DMAx_PERIPH_DATA_SIZE;
- hdma_i2sRx.Init.MemDataAlignment = I2S2_DMAx_MEM_DATA_SIZE;
- hdma_i2sRx.Init.Mode = DMA_CIRCULAR;
- hdma_i2sRx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_i2sRx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma_i2sRx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_i2sRx.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_i2sRx.Init.PeriphBurst = DMA_MBURST_SINGLE;
-
- hdma_i2sRx.Instance = I2S2_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hi2s, hdmarx, hdma_i2sRx);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_i2sRx);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&hdma_i2sRx);
- }
-
- /* I2S DMA IRQ Channel configuration */
- HAL_NVIC_SetPriority(I2S2_DMAx_IRQ, AUDIO_IN_IRQ_PREPRIO, 0);
- HAL_NVIC_EnableIRQ(I2S2_DMAx_IRQ);
-}
-
-/**
- * @brief DeInitializes BSP_AUDIO_IN MSP.
- * @param hi2s: I2S handle
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* I2S DMA IRQ Channel deactivation */
- HAL_NVIC_DisableIRQ(I2S2_DMAx_IRQ);
-
- if(hi2s->Instance == I2S2)
- {
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(hi2s->hdmarx);
- }
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(hi2s);
-
- /* Disable pins: SCK and SD pins */
- gpio_init_structure.Pin = I2S2_SCK_PIN;
- HAL_GPIO_DeInit(I2S2_SCK_GPIO_PORT, gpio_init_structure.Pin);
- gpio_init_structure.Pin = I2S2_MOSI_PIN;
- HAL_GPIO_DeInit(I2S2_MOSI_GPIO_PORT, gpio_init_structure.Pin);
-
- /* Disable I2S clock */
- I2S2_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the applic
- by surcgarging this __weak function */
-}
-
-/**
- * @brief User callback when record buffer is filled.
- */
-__weak void BSP_AUDIO_IN_TransferComplete_CallBack(void)
-{
- /* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled
- to prepare the next buffer pointer and its size. */
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- */
-__weak void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
-{
- /* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled
- to prepare the next buffer pointer and its size. */
-}
-
-/**
- * @brief Audio IN Error callback function.
- */
-__weak void BSP_AUDIO_IN_Error_Callback(void)
-{
- /* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-}
-
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Initializes the PDM library.
- * @param AudioFreq: Audio sampling frequency
- * @param ChnlNbrIn: Number of input audio channels in the PDM buffer
- * @param ChnlNbrOut: Number of desired output audio channels in the resulting PCM buffer
- * Number of audio channels (1: mono; 2: stereo)
- */
-static void PDMDecoder_Init(uint32_t AudioFreq, uint32_t ChnlNbrIn, uint32_t ChnlNbrOut)
-{
- uint32_t index = 0;
-
- /* Enable CRC peripheral to unlock the PDM library */
- __HAL_RCC_CRC_CLK_ENABLE();
-
- for(index = 0; index < ChnlNbrIn; index++)
- {
- /* Init PDM filters */
- PDM_FilterHandler[index].bit_order = PDM_FILTER_BIT_ORDER_LSB;
- PDM_FilterHandler[index].endianness = PDM_FILTER_ENDIANNESS_LE;
- PDM_FilterHandler[index].high_pass_tap = 2122358088;
- PDM_FilterHandler[index].out_ptr_channels = ChnlNbrOut;
- PDM_FilterHandler[index].in_ptr_channels = ChnlNbrIn;
- PDM_Filter_Init((PDM_Filter_Handler_t *)(&PDM_FilterHandler[index]));
-
- /* PDM lib config phase */
- PDM_FilterConfig[index].output_samples_number = AudioFreq/1000;
- PDM_FilterConfig[index].mic_gain = 24;
- PDM_FilterConfig[index].decimation_factor = PDM_FILTER_DEC_FACTOR_64;
- PDM_Filter_setConfig((PDM_Filter_Handler_t *)&PDM_FilterHandler[index], &PDM_FilterConfig[index]);
- }
-}
-
-/**
- * @brief Initializes the Audio Codec audio interface (I2S)
- * @note This function assumes that the I2S input clock (through PLL_R in
- * Devices RevA/Z and through dedicated PLLI2S_R in Devices RevB/Y)
- * is already configured and ready to be used.
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- */
-static uint8_t I2S2_Init(uint32_t AudioFreq)
-{
- /* Initialize the hAudioInI2s Instance parameter */
- hAudioInI2s.Instance = I2S2;
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(&hAudioInI2s);
-
- /* I2S2 peripheral configuration */
- hAudioInI2s.Init.AudioFreq = 2 * AudioFreq;
- hAudioInI2s.Init.ClockSource = I2S_CLOCK_PLL;
- hAudioInI2s.Init.CPOL = I2S_CPOL_HIGH;
- hAudioInI2s.Init.DataFormat = I2S_DATAFORMAT_16B;
- hAudioInI2s.Init.MCLKOutput = I2S_MCLKOUTPUT_DISABLE;
- hAudioInI2s.Init.Mode = I2S_MODE_MASTER_RX;
- hAudioInI2s.Init.Standard = I2S_STANDARD_LSB;
-
- /* Initialize the I2S peripheral with the structure above */
- if(HAL_I2S_Init(&hAudioInI2s) != HAL_OK)
- {
- return AUDIO_ERROR;
- }
- else
- {
- return AUDIO_OK;
- }
-}
-
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_IN_OUT_Private_Functions STM32F4 DISCOVERY AUDIO IN OUT Private Functions
- * @{
- */
-
-/**
- * @brief I2S error callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Manage the error generated on DMA FIFO: This function
- should be coded by user (its prototype is already declared in stm32f4_discovery_audio.h) */
- if(hi2s->Instance == I2S3)
- {
- BSP_AUDIO_OUT_Error_CallBack();
- }
- if(hi2s->Instance == I2S2)
- {
- BSP_AUDIO_IN_Error_Callback();
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.h b/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.h
deleted file mode 100644
index 015991a087..0000000000
--- a/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.h
+++ /dev/null
@@ -1,255 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f4_discovery_audio.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * stm32f4_discovery_audio.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F4_DISCOVERY_AUDIO_H
-#define __STM32F4_DISCOVERY_AUDIO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-/* Include audio component Driver */
-#include "../Components/cs43l22/cs43l22.h"
-
-#include "stm32f4_discovery.h"
-#include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F4_DISCOVERY
- * @{
- */
-
-/** @addtogroup STM32F4_DISCOVERY_AUDIO
- * @{
- */
-
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Types STM32F4 DISCOVERY AUDIO Exported Types
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_OUT_Exported_Constants STM32F4 DISCOVERY AUDIO OUT Exported Constants
- * @{
- */
-
-/*------------------------------------------------------------------------------
- AUDIO OUT CONFIGURATION
-------------------------------------------------------------------------------*/
-
-/* I2S peripheral configuration defines */
-#define I2S3 SPI3
-#define I2S3_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
-#define I2S3_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
-#define I2S3_SCK_SD_WS_AF GPIO_AF6_SPI3
-#define I2S3_SCK_SD_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define I2S3_MCK_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define I2S3_WS_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define I2S3_WS_PIN GPIO_PIN_4
-#define I2S3_SCK_PIN GPIO_PIN_10
-#define I2S3_SD_PIN GPIO_PIN_12
-#define I2S3_MCK_PIN GPIO_PIN_7
-#define I2S3_SCK_SD_GPIO_PORT GPIOC
-#define I2S3_WS_GPIO_PORT GPIOA
-#define I2S3_MCK_GPIO_PORT GPIOC
-
-/* I2S DMA Stream definitions */
-#define I2S3_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define I2S3_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE()
-#define I2S3_DMAx_STREAM DMA1_Stream7
-#define I2S3_DMAx_CHANNEL DMA_CHANNEL_0
-#define I2S3_DMAx_IRQ DMA1_Stream7_IRQn
-#define I2S3_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
-#define I2S3_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
-#define DMA_MAX_SZE 0xFFFF
-
-#define I2S3_IRQHandler DMA1_Stream7_IRQHandler
-
-/* Select the interrupt preemption priority and subpriority for the DMA interrupt */
-#define AUDIO_OUT_IRQ_PREPRIO 0x0E /* Select the preemption priority level(0 is the highest) */
-
-/*------------------------------------------------------------------------------
- AUDIO IN CONFIGURATION
-------------------------------------------------------------------------------*/
-/* SPI Configuration defines */
-#define I2S2 SPI2
-#define I2S2_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE()
-#define I2S2_CLK_DISABLE() __HAL_RCC_SPI2_CLK_DISABLE()
-#define I2S2_SCK_PIN GPIO_PIN_10
-#define I2S2_SCK_GPIO_PORT GPIOB
-#define I2S2_SCK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-#define I2S2_SCK_AF GPIO_AF5_SPI2
-
-#define I2S2_MOSI_PIN GPIO_PIN_3
-#define I2S2_MOSI_GPIO_PORT GPIOC
-#define I2S2_MOSI_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define I2S2_MOSI_AF GPIO_AF5_SPI2
-
-/* I2S DMA Stream Rx definitions */
-#define I2S2_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define I2S2_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE()
-#define I2S2_DMAx_STREAM DMA1_Stream3
-#define I2S2_DMAx_CHANNEL DMA_CHANNEL_0
-#define I2S2_DMAx_IRQ DMA1_Stream3_IRQn
-#define I2S2_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
-#define I2S2_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
-
-#define I2S2_IRQHandler DMA1_Stream3_IRQHandler
-
-/* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */
-#define AUDIO_IN_IRQ_PREPRIO 0x0F /* Select the preemption priority level(0 is the highest) */
-
-/*------------------------------------------------------------------------------
- CONFIGURATION: Audio Driver Configuration parameters
-------------------------------------------------------------------------------*/
-
-#define AUDIODATA_SIZE 2 /* 16-bits audio data size */
-
-/* Audio status definition */
-#define AUDIO_OK 0
-#define AUDIO_ERROR 1
-#define AUDIO_TIMEOUT 2
-
-/* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */
-#define DEFAULT_AUDIO_IN_FREQ I2S_AUDIOFREQ_16K
-#define DEFAULT_AUDIO_IN_BIT_RESOLUTION 16
-#define DEFAULT_AUDIO_IN_CHANNEL_NBR 1 /* Mono = 1, Stereo = 2 */
-#define DEFAULT_AUDIO_IN_VOLUME 64
-
-/* PDM buffer input size */
-#define INTERNAL_BUFF_SIZE 128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR
-/* PCM buffer output size */
-#define PCM_OUT_SIZE DEFAULT_AUDIO_IN_FREQ/1000
-#define CHANNEL_DEMUX_MASK 0x55
-
-/*------------------------------------------------------------------------------
- OPTIONAL Configuration defines parameters
-------------------------------------------------------------------------------*/
-
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Variables STM32F4 DISCOVERY AUDIO Exported Variables
- * @{
- */
-extern __IO uint16_t AudioInVolume;
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Macros STM32F4 DISCOVERY AUDIO Exported Macros
- * @{
- */
-#define DMA_MAX(_X_) (((_X_) <= DMA_MAX_SZE)? (_X_):DMA_MAX_SZE)
-#define HTONS(A) ((((uint16_t)(A) & 0xff00) >> 8) | (((uint16_t)(A) & 0x00ff) << 8))
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_OUT_Exported_Functions STM32F4 DISCOVERY AUDIO OUT Exported Functions
- * @{
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
-uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size);
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size);
-uint8_t BSP_AUDIO_OUT_Pause(void);
-uint8_t BSP_AUDIO_OUT_Resume(void);
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option);
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume);
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq);
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd);
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output);
-
-/* User Callbacks: user has to implement these functions in his code if they are needed. */
-/* This function is called when the requested data has been completely transferred. */
-void BSP_AUDIO_OUT_TransferComplete_CallBack(void);
-
-/* This function is called when half of the requested buffer has been transferred. */
-void BSP_AUDIO_OUT_HalfTransfer_CallBack(void);
-
-/* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-void BSP_AUDIO_OUT_Error_CallBack(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
-void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
-void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
-
-/**
- * @}
- */
-
-/** @defgroup STM32F4_DISCOVERY_AUDIO_IN_Exported_Functions STM32F4 DISCOVERY AUDIO IN Exported Functions
- * @{
- */
-uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
-uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size);
-uint8_t BSP_AUDIO_IN_Stop(void);
-uint8_t BSP_AUDIO_IN_Pause(void);
-uint8_t BSP_AUDIO_IN_Resume(void);
-uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume);
-uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf);
-/* User Callbacks: user has to implement these functions in his code if they are needed. */
-/* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled to prepare the next
- buffer pointer and its size. */
-void BSP_AUDIO_IN_TransferComplete_CallBack(void);
-void BSP_AUDIO_IN_HalfTransfer_CallBack(void);
-
-/* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-void BSP_AUDIO_IN_Error_Callback(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
-void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
-void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F4_DISCOVERY_AUDIO_H */
diff --git a/Drivers/BSP/STM32F401-Discovery b/Drivers/BSP/STM32F401-Discovery
new file mode 160000
index 0000000000..7a797af08d
--- /dev/null
+++ b/Drivers/BSP/STM32F401-Discovery
@@ -0,0 +1 @@
+Subproject commit 7a797af08db92b7638865ddd8c61a5449c93a5a5
diff --git a/Drivers/BSP/STM32F401-Discovery/LICENSE.md b/Drivers/BSP/STM32F401-Discovery/LICENSE.md
deleted file mode 100644
index 479c4f6826..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/LICENSE.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright 2017 STMicroelectronics.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors
-may be used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Drivers/BSP/STM32F401-Discovery/README.md b/Drivers/BSP/STM32F401-Discovery/README.md
deleted file mode 100644
index 065f268f4e..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# BSP STM32F401-DISCOVERY Component
-
-![latest tag](https://img.shields.io/github/v/tag/STMicroelectronics/stm32f401-discovery.svg?color=brightgreen)
-
-## Overview
-
-**STM32Cube** is an STMicroelectronics original initiative to ease developers' life by reducing efforts, time and cost.
-
-**STM32Cube** covers the overall STM32 products portfolio. It includes a comprehensive embedded software platform delivered for each STM32 series.
- * The CMSIS modules (core and device) corresponding to the ARM(tm) core implemented in this STM32 product.
- * The STM32 HAL-LL drivers, an abstraction layer offering a set of APIs ensuring maximized portability across the STM32 portfolio.
- * The BSP drivers of each evaluation, demonstration or nucleo board provided for this STM32 series.
- * A consistent set of middleware libraries such as RTOS, USB, FatFS, graphics, touch sensing library...
- * A full set of software projects (basic examples, applications, and demonstrations) for each board provided for this STM32 series.
-
-Two models of publication are proposed for the STM32Cube embedded software:
- * The monolithic **MCU Package**: all STM32Cube software modules of one STM32 series are present (Drivers, Middleware, Projects, Utilities) in the repository (usual name **STM32Cubexx**, xx corresponding to the STM32 series).
- * The **MCU component**: each STM32Cube software module being part of the STM32Cube MCU Package, is delivered as an individual repository, allowing the user to select and get only the required software functions.
-
-## Description
-
-This **stm32f401-discovery** MCU component repository is one element of the **STM32CubeF4** MCU embedded software package, providing the **STM32F401-DISCOVERY** BSP BOARD component part.
-
-## Release note
-
-Details about the content of this release are available in the release note [here](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/stm32f401-discovery/blob/main/Release_Notes.html).
-
-## Compatibility information
-
-Below is the list of the BSP *component* drivers to be used with this BSP *board* driver. It is **crucial** that you use a consistent set of CMSIS - HAL - BSP versions, as mentioned in [this](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/STM32CubeF4/blob/master/Release_Notes.html) release note.
-
-* [stm32-bsp-common](https://github.com/STMicroelectronics/stm32-bsp-common)
-* [stm32-cs43l22](https://github.com/STMicroelectronics/stm32-cs43l22)
-* [stm32-l3gd20](https://github.com/STMicroelectronics/stm32-l3gd20)
-* [stm32-lsm303dlhc](https://github.com/STMicroelectronics/stm32-lsm303dlhc)
-
-## Troubleshooting
-
-Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) guide.
diff --git a/Drivers/BSP/STM32F401-Discovery/Release_Notes.html b/Drivers/BSP/STM32F401-Discovery/Release_Notes.html
deleted file mode 100644
index 2e7d24e5a4..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/Release_Notes.html
+++ /dev/null
@@ -1,201 +0,0 @@
-
-
-
-
-
-
- Release Notes for STM32F401-Discovery Board Drivers
-
-
-
-
-
-
-
This directory contains the board drivers to demonstrate the capabilities of the STM32F401-Discovery Board Drivers.
-
-
-
Update History
-
-
-
-
Main Changes
-
-
Update Release_Notes.html to support new format
-
-
-
-
-
-
-
Main Changes
-
-
All source files: update disclaimer to add reference to the new license agreement
-
-
-
-
-
-
-
Main Changes
-
-
Remove date & version
-
Add general description of BSP drivers
-
stm32f401_discovery_audio.c/.h:
-
-
Aligned with PDM library v3.0.0
-
-
Note
-
-
This version must be used with v3.0.0 of PDM library
-
-
-
-
-
-
-
-
Main Changes
-
-
Replace __PPP_CLK_ENABLE/DISABLE with __HAL_RCC_PPP_ENABLE/DISABLE
-
Add BSP_AUDIO_OUT_ClockConfig, BSP_AUDIO_OUT_MspInit and BSP_AUDIO_OUT_MspDeInit as weak functions
-
Add BSP_AUDIO_IN_ClockConfig, BSP_AUDIO_IN_MspInit and BSP_AUDIO_IN_MspDeInit as weak functions
-
-
-
-
-
-
-
Main Changes
-
-
General updates to fix doxygen errors
-
Add STM32F401-Discovery_BSP_User_Manual.chm file
-
stm32f401_discovery_audio.c
-
-
BSP_AUDIO_OUT_Init() update to configure correctly the PLL I2S parameters
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f401_discovery.c
-
-
Add AUDIO_IO_DeInit() function to align with BSP Components Common drivers V4.0.0
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f401_discovery.c/.h
-
-
Align to STM32F4xx HAL Driver V1.3.0 for __HAL_RCC_PPP_CLK_ENABLE() .
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f401_discovery_accelerometer.h, stm32f401_discovery_audio.h and stm32f401_discovery_gyroscope.h:
-
-
Change “" byâ€/" in the include path to fix compilation issue under Linux
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f401_discovery_audio.c/.h
-
-
BSP_AUDIO_OUT_Play(): uses the buffer size in byte instead of half-word
-
BSP_AUDIO_IN_PDMToPCM(): duplicates samples to make stereo audio stream (since a single microphone in mounted on STM32F401-Discovery)
-
I2S2_Init(): configures the I2S to clock the microphone at 1.024 MHz as required instead of 2.048MHz
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f401_discovery.c/.h
-
-
Enhance BSP_PB_Init() function by removing the call of __SYSCFG_CLK_ENABLE() already enabled in the HAL_GPIO_Init()
-
-
stm32f401_discovery_audio.c/.h
-
-
Add note that only the audio stereo format is supported
-
-
stm32f401_discovery_gyroscope.c/.h
-
-
Update BSP_GYRO_Init() to support new L3GD20 device ID (I_AM_L3GD20_TR)
-
-
Comments clean up and typo corrections
-
-
-
-
-
-
-
Main Changes
-
-
Major update based on STM32Cube specification: drivers architecture and APIs modified vs. V1.0.1, and thus the 2 versions are not compatible.
-
This version has to be used only with STM32CubeF4 based development
-
-
-
-
-
-
-
Main Changes
-
-
stm32f429i_discovery_l3gd20.c : Set SPI baudrate to 5.25 MHz to fit Gyroscope timing characteristics (Gyroscope l3gd20 SPI interface max baud rate is 10MHz for write/read)
-
-
-
-
-
-
-
Main Changes
-
-
First official version of the STM32F401-Discovery Board Drivers
-
-
-
-
-
-
-
-
diff --git a/Drivers/BSP/STM32F401-Discovery/_htmresc/favicon.png b/Drivers/BSP/STM32F401-Discovery/_htmresc/favicon.png
deleted file mode 100644
index 06713eec49..0000000000
Binary files a/Drivers/BSP/STM32F401-Discovery/_htmresc/favicon.png and /dev/null differ
diff --git a/Drivers/BSP/STM32F401-Discovery/_htmresc/mini-st_2020.css b/Drivers/BSP/STM32F401-Discovery/_htmresc/mini-st_2020.css
deleted file mode 100644
index 986f4d4205..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/_htmresc/mini-st_2020.css
+++ /dev/null
@@ -1,1711 +0,0 @@
-@charset "UTF-8";
-/*
- Flavor name: Custom (mini-custom)
- Generated online - https://minicss.org/flavors
- mini.css version: v3.0.1
-*/
-/*
- Browsers resets and base typography.
-*/
-/* Core module CSS variable definitions */
-:root {
- --fore-color: #03234b;
- --secondary-fore-color: #03234b;
- --back-color: #ffffff;
- --secondary-back-color: #ffffff;
- --blockquote-color: #e6007e;
- --pre-color: #e6007e;
- --border-color: #3cb4e6;
- --secondary-border-color: #3cb4e6;
- --heading-ratio: 1.2;
- --universal-margin: 0.5rem;
- --universal-padding: 0.25rem;
- --universal-border-radius: 0.075rem;
- --background-margin: 1.5%;
- --a-link-color: #3cb4e6;
- --a-visited-color: #8c0078; }
-
-html {
- font-size: 13.5px; }
-
-a, b, del, em, i, ins, q, span, strong, u {
- font-size: 1em; }
-
-html, * {
- font-family: -apple-system, BlinkMacSystemFont, Helvetica, arial, sans-serif;
- line-height: 1.25;
- -webkit-text-size-adjust: 100%; }
-
-* {
- font-size: 1rem; }
-
-body {
- margin: 0;
- color: var(--fore-color);
- @background: var(--back-color);
- background: var(--back-color) linear-gradient(#ffd200, #ffd200) repeat-y left top;
- background-size: var(--background-margin);
- }
-
-details {
- display: block; }
-
-summary {
- display: list-item; }
-
-abbr[title] {
- border-bottom: none;
- text-decoration: underline dotted; }
-
-input {
- overflow: visible; }
-
-img {
- max-width: 100%;
- height: auto; }
-
-h1, h2, h3, h4, h5, h6 {
- line-height: 1.25;
- margin: calc(1.5 * var(--universal-margin)) var(--universal-margin);
- font-weight: 400; }
- h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
- color: var(--secondary-fore-color);
- display: block;
- margin-top: -0.25rem; }
-
-h1 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio)); }
-
-h2 {
- font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) );
- border-style: none none solid none ;
- border-width: thin;
- border-color: var(--border-color); }
-h3 {
- font-size: calc(1rem * var(--heading-ratio) ); }
-
-h4 {
- font-size: calc(1rem * var(--heading-ratio)); }
-
-h5 {
- font-size: 1rem; }
-
-h6 {
- font-size: calc(1rem / var(--heading-ratio)); }
-
-p {
- margin: var(--universal-margin); }
-
-ol, ul {
- margin: var(--universal-margin);
- padding-left: calc(3 * var(--universal-margin)); }
-
-b, strong {
- font-weight: 700; }
-
-hr {
- box-sizing: content-box;
- border: 0;
- line-height: 1.25em;
- margin: var(--universal-margin);
- height: 0.0714285714rem;
- background: linear-gradient(to right, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent); }
-
-blockquote {
- display: block;
- position: relative;
- font-style: italic;
- color: var(--secondary-fore-color);
- margin: var(--universal-margin);
- padding: calc(3 * var(--universal-padding));
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.3rem solid var(--blockquote-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
- blockquote:before {
- position: absolute;
- top: calc(0rem - var(--universal-padding));
- left: 0;
- font-family: sans-serif;
- font-size: 2rem;
- font-weight: 800;
- content: "\201c";
- color: var(--blockquote-color); }
- blockquote[cite]:after {
- font-style: normal;
- font-size: 0.75em;
- font-weight: 700;
- content: "\a— " attr(cite);
- white-space: pre; }
-
-code, kbd, pre, samp {
- font-family: Menlo, Consolas, monospace;
- font-size: 0.85em; }
-
-code {
- background: var(--secondary-back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-kbd {
- background: var(--fore-color);
- color: var(--back-color);
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
-
-pre {
- overflow: auto;
- background: var(--secondary-back-color);
- padding: calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- border: 0.0714285714rem solid var(--secondary-border-color);
- border-left: 0.2857142857rem solid var(--pre-color);
- border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
-
-sup, sub, code, kbd {
- line-height: 0;
- position: relative;
- vertical-align: baseline; }
-
-small, sup, sub, figcaption {
- font-size: 0.75em; }
-
-sup {
- top: -0.5em; }
-
-sub {
- bottom: -0.25em; }
-
-figure {
- margin: var(--universal-margin); }
-
-figcaption {
- color: var(--secondary-fore-color); }
-
-a {
- text-decoration: none; }
- a:link {
- color: var(--a-link-color); }
- a:visited {
- color: var(--a-visited-color); }
- a:hover, a:focus {
- text-decoration: underline; }
-
-/*
- Definitions for the grid system, cards and containers.
-*/
-.container {
- margin: 0 auto;
- padding: 0 calc(1.5 * var(--universal-padding)); }
-
-.row {
- box-sizing: border-box;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- margin: 0 0 0 var(--background-margin); }
-
-.col-sm,
-[class^='col-sm-'],
-[class^='col-sm-offset-'],
-.row[class*='cols-sm-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
-.col-sm,
-.row.cols-sm > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
-.col-sm-1,
-.row.cols-sm-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
-.col-sm-offset-0 {
- margin-left: 0; }
-
-.col-sm-2,
-.row.cols-sm-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
-.col-sm-offset-1 {
- margin-left: 8.3333333333%; }
-
-.col-sm-3,
-.row.cols-sm-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
-.col-sm-offset-2 {
- margin-left: 16.6666666667%; }
-
-.col-sm-4,
-.row.cols-sm-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
-.col-sm-offset-3 {
- margin-left: 25%; }
-
-.col-sm-5,
-.row.cols-sm-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
-.col-sm-offset-4 {
- margin-left: 33.3333333333%; }
-
-.col-sm-6,
-.row.cols-sm-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
-.col-sm-offset-5 {
- margin-left: 41.6666666667%; }
-
-.col-sm-7,
-.row.cols-sm-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
-.col-sm-offset-6 {
- margin-left: 50%; }
-
-.col-sm-8,
-.row.cols-sm-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
-.col-sm-offset-7 {
- margin-left: 58.3333333333%; }
-
-.col-sm-9,
-.row.cols-sm-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
-.col-sm-offset-8 {
- margin-left: 66.6666666667%; }
-
-.col-sm-10,
-.row.cols-sm-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
-.col-sm-offset-9 {
- margin-left: 75%; }
-
-.col-sm-11,
-.row.cols-sm-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
-.col-sm-offset-10 {
- margin-left: 83.3333333333%; }
-
-.col-sm-12,
-.row.cols-sm-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
-.col-sm-offset-11 {
- margin-left: 91.6666666667%; }
-
-.col-sm-normal {
- order: initial; }
-
-.col-sm-first {
- order: -999; }
-
-.col-sm-last {
- order: 999; }
-
-@media screen and (min-width: 500px) {
- .col-md,
- [class^='col-md-'],
- [class^='col-md-offset-'],
- .row[class*='cols-md-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-md,
- .row.cols-md > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-md-1,
- .row.cols-md-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-md-offset-0 {
- margin-left: 0; }
-
- .col-md-2,
- .row.cols-md-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-md-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-md-3,
- .row.cols-md-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-md-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-md-4,
- .row.cols-md-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-md-offset-3 {
- margin-left: 25%; }
-
- .col-md-5,
- .row.cols-md-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-md-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-md-6,
- .row.cols-md-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-md-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-md-7,
- .row.cols-md-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-md-offset-6 {
- margin-left: 50%; }
-
- .col-md-8,
- .row.cols-md-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-md-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-md-9,
- .row.cols-md-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-md-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-md-10,
- .row.cols-md-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-md-offset-9 {
- margin-left: 75%; }
-
- .col-md-11,
- .row.cols-md-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-md-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-md-12,
- .row.cols-md-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-md-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-md-normal {
- order: initial; }
-
- .col-md-first {
- order: -999; }
-
- .col-md-last {
- order: 999; } }
-@media screen and (min-width: 1280px) {
- .col-lg,
- [class^='col-lg-'],
- [class^='col-lg-offset-'],
- .row[class*='cols-lg-'] > * {
- box-sizing: border-box;
- flex: 0 0 auto;
- padding: 0 calc(var(--universal-padding) / 2); }
-
- .col-lg,
- .row.cols-lg > * {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0; }
-
- .col-lg-1,
- .row.cols-lg-1 > * {
- max-width: 8.3333333333%;
- flex-basis: 8.3333333333%; }
-
- .col-lg-offset-0 {
- margin-left: 0; }
-
- .col-lg-2,
- .row.cols-lg-2 > * {
- max-width: 16.6666666667%;
- flex-basis: 16.6666666667%; }
-
- .col-lg-offset-1 {
- margin-left: 8.3333333333%; }
-
- .col-lg-3,
- .row.cols-lg-3 > * {
- max-width: 25%;
- flex-basis: 25%; }
-
- .col-lg-offset-2 {
- margin-left: 16.6666666667%; }
-
- .col-lg-4,
- .row.cols-lg-4 > * {
- max-width: 33.3333333333%;
- flex-basis: 33.3333333333%; }
-
- .col-lg-offset-3 {
- margin-left: 25%; }
-
- .col-lg-5,
- .row.cols-lg-5 > * {
- max-width: 41.6666666667%;
- flex-basis: 41.6666666667%; }
-
- .col-lg-offset-4 {
- margin-left: 33.3333333333%; }
-
- .col-lg-6,
- .row.cols-lg-6 > * {
- max-width: 50%;
- flex-basis: 50%; }
-
- .col-lg-offset-5 {
- margin-left: 41.6666666667%; }
-
- .col-lg-7,
- .row.cols-lg-7 > * {
- max-width: 58.3333333333%;
- flex-basis: 58.3333333333%; }
-
- .col-lg-offset-6 {
- margin-left: 50%; }
-
- .col-lg-8,
- .row.cols-lg-8 > * {
- max-width: 66.6666666667%;
- flex-basis: 66.6666666667%; }
-
- .col-lg-offset-7 {
- margin-left: 58.3333333333%; }
-
- .col-lg-9,
- .row.cols-lg-9 > * {
- max-width: 75%;
- flex-basis: 75%; }
-
- .col-lg-offset-8 {
- margin-left: 66.6666666667%; }
-
- .col-lg-10,
- .row.cols-lg-10 > * {
- max-width: 83.3333333333%;
- flex-basis: 83.3333333333%; }
-
- .col-lg-offset-9 {
- margin-left: 75%; }
-
- .col-lg-11,
- .row.cols-lg-11 > * {
- max-width: 91.6666666667%;
- flex-basis: 91.6666666667%; }
-
- .col-lg-offset-10 {
- margin-left: 83.3333333333%; }
-
- .col-lg-12,
- .row.cols-lg-12 > * {
- max-width: 100%;
- flex-basis: 100%; }
-
- .col-lg-offset-11 {
- margin-left: 91.6666666667%; }
-
- .col-lg-normal {
- order: initial; }
-
- .col-lg-first {
- order: -999; }
-
- .col-lg-last {
- order: 999; } }
-/* Card component CSS variable definitions */
-:root {
- --card-back-color: #3cb4e6;
- --card-fore-color: #03234b;
- --card-border-color: #03234b; }
-
-.card {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-self: center;
- position: relative;
- width: 100%;
- background: var(--card-back-color);
- color: var(--card-fore-color);
- border: 0.0714285714rem solid var(--card-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- overflow: hidden; }
- @media screen and (min-width: 320px) {
- .card {
- max-width: 320px; } }
- .card > .sectione {
- background: var(--card-back-color);
- color: var(--card-fore-color);
- box-sizing: border-box;
- margin: 0;
- border: 0;
- border-radius: 0;
- border-bottom: 0.0714285714rem solid var(--card-border-color);
- padding: var(--universal-padding);
- width: 100%; }
- .card > .sectione.media {
- height: 200px;
- padding: 0;
- -o-object-fit: cover;
- object-fit: cover; }
- .card > .sectione:last-child {
- border-bottom: 0; }
-
-/*
- Custom elements for card elements.
-*/
-@media screen and (min-width: 240px) {
- .card.small {
- max-width: 240px; } }
-@media screen and (min-width: 480px) {
- .card.large {
- max-width: 480px; } }
-.card.fluid {
- max-width: 100%;
- width: auto; }
-
-.card.warning {
- --card-back-color: #e5b8b7;
- --card-fore-color: #3b234b;
- --card-border-color: #8c0078; }
-
-.card.error {
- --card-back-color: #464650;
- --card-fore-color: #ffffff;
- --card-border-color: #8c0078; }
-
-.card > .sectione.dark {
- --card-back-color: #3b234b;
- --card-fore-color: #ffffff; }
-
-.card > .sectione.double-padded {
- padding: calc(1.5 * var(--universal-padding)); }
-
-/*
- Definitions for forms and input elements.
-*/
-/* Input_control module CSS variable definitions */
-:root {
- --form-back-color: #ffe97f;
- --form-fore-color: #03234b;
- --form-border-color: #3cb4e6;
- --input-back-color: #ffffff;
- --input-fore-color: #03234b;
- --input-border-color: #3cb4e6;
- --input-focus-color: #0288d1;
- --input-invalid-color: #d32f2f;
- --button-back-color: #e2e2e2;
- --button-hover-back-color: #dcdcdc;
- --button-fore-color: #212121;
- --button-border-color: transparent;
- --button-hover-border-color: transparent;
- --button-group-border-color: rgba(124, 124, 124, 0.54); }
-
-form {
- background: var(--form-back-color);
- color: var(--form-fore-color);
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding); }
-
-fieldset {
- border: 0.0714285714rem solid var(--form-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 4);
- padding: var(--universal-padding); }
-
-legend {
- box-sizing: border-box;
- display: table;
- max-width: 100%;
- white-space: normal;
- font-weight: 500;
- padding: calc(var(--universal-padding) / 2); }
-
-label {
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-.input-group {
- display: inline-block; }
- .input-group.fluid {
- display: flex;
- align-items: center;
- justify-content: center; }
- .input-group.fluid > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
- @media screen and (max-width: 499px) {
- .input-group.fluid {
- align-items: stretch;
- flex-direction: column; } }
- .input-group.vertical {
- display: flex;
- align-items: stretch;
- flex-direction: column; }
- .input-group.vertical > input {
- max-width: 100%;
- flex-grow: 1;
- flex-basis: 0px; }
-
-[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button {
- height: auto; }
-
-[type="search"] {
- -webkit-appearance: textfield;
- outline-offset: -2px; }
-
-[type="search"]::-webkit-search-cancel-button,
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none; }
-
-input:not([type]), [type="text"], [type="email"], [type="number"], [type="search"],
-[type="password"], [type="url"], [type="tel"], [type="checkbox"], [type="radio"], textarea, select {
- box-sizing: border-box;
- background: var(--input-back-color);
- color: var(--input-fore-color);
- border: 0.0714285714rem solid var(--input-border-color);
- border-radius: var(--universal-border-radius);
- margin: calc(var(--universal-margin) / 2);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
-
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):hover, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus, textarea:hover, textarea:focus, select:hover, select:focus {
- border-color: var(--input-focus-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"]):invalid, input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus:invalid, textarea:invalid, textarea:focus:invalid, select:invalid, select:focus:invalid {
- border-color: var(--input-invalid-color);
- box-shadow: none; }
-input:not([type="button"]):not([type="submit"]):not([type="reset"])[readonly], textarea[readonly], select[readonly] {
- background: var(--secondary-back-color); }
-
-select {
- max-width: 100%; }
-
-option {
- overflow: hidden;
- text-overflow: ellipsis; }
-
-[type="checkbox"], [type="radio"] {
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- position: relative;
- height: calc(1rem + var(--universal-padding) / 2);
- width: calc(1rem + var(--universal-padding) / 2);
- vertical-align: text-bottom;
- padding: 0;
- flex-basis: calc(1rem + var(--universal-padding) / 2) !important;
- flex-grow: 0 !important; }
- [type="checkbox"]:checked:before, [type="radio"]:checked:before {
- position: absolute; }
-
-[type="checkbox"]:checked:before {
- content: '\2713';
- font-family: sans-serif;
- font-size: calc(1rem + var(--universal-padding) / 2);
- top: calc(0rem - var(--universal-padding));
- left: calc(var(--universal-padding) / 4); }
-
-[type="radio"] {
- border-radius: 100%; }
- [type="radio"]:checked:before {
- border-radius: 100%;
- content: '';
- top: calc(0.0714285714rem + var(--universal-padding) / 2);
- left: calc(0.0714285714rem + var(--universal-padding) / 2);
- background: var(--input-fore-color);
- width: 0.5rem;
- height: 0.5rem; }
-
-:placeholder-shown {
- color: var(--input-fore-color); }
-
-::-ms-placeholder {
- color: var(--input-fore-color);
- opacity: 0.54; }
-
-button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0; }
-
-button, html [type="button"], [type="reset"], [type="submit"] {
- -webkit-appearance: button; }
-
-button {
- overflow: visible;
- text-transform: none; }
-
-button, [type="button"], [type="submit"], [type="reset"],
-a.button, label.button, .button,
-a[role="button"], label[role="button"], [role="button"] {
- display: inline-block;
- background: var(--button-back-color);
- color: var(--button-fore-color);
- border: 0.0714285714rem solid var(--button-border-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding));
- margin: var(--universal-margin);
- text-decoration: none;
- cursor: pointer;
- transition: background 0.3s; }
- button:hover, button:focus, [type="button"]:hover, [type="button"]:focus, [type="submit"]:hover, [type="submit"]:focus, [type="reset"]:hover, [type="reset"]:focus,
- a.button:hover,
- a.button:focus, label.button:hover, label.button:focus, .button:hover, .button:focus,
- a[role="button"]:hover,
- a[role="button"]:focus, label[role="button"]:hover, label[role="button"]:focus, [role="button"]:hover, [role="button"]:focus {
- background: var(--button-hover-back-color);
- border-color: var(--button-hover-border-color); }
-
-input:disabled, input[disabled], textarea:disabled, textarea[disabled], select:disabled, select[disabled], button:disabled, button[disabled], .button:disabled, .button[disabled], [role="button"]:disabled, [role="button"][disabled] {
- cursor: not-allowed;
- opacity: 0.75; }
-
-.button-group {
- display: flex;
- border: 0.0714285714rem solid var(--button-group-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- .button-group > button, .button-group [type="button"], .button-group > [type="submit"], .button-group > [type="reset"], .button-group > .button, .button-group > [role="button"] {
- margin: 0;
- max-width: 100%;
- flex: 1 1 auto;
- text-align: center;
- border: 0;
- border-radius: 0;
- box-shadow: none; }
- .button-group > :not(:first-child) {
- border-left: 0.0714285714rem solid var(--button-group-border-color); }
- @media screen and (max-width: 499px) {
- .button-group {
- flex-direction: column; }
- .button-group > :not(:first-child) {
- border: 0;
- border-top: 0.0714285714rem solid var(--button-group-border-color); } }
-
-/*
- Custom elements for forms and input elements.
-*/
-button.primary, [type="button"].primary, [type="submit"].primary, [type="reset"].primary, .button.primary, [role="button"].primary {
- --button-back-color: #1976d2;
- --button-fore-color: #f8f8f8; }
- button.primary:hover, button.primary:focus, [type="button"].primary:hover, [type="button"].primary:focus, [type="submit"].primary:hover, [type="submit"].primary:focus, [type="reset"].primary:hover, [type="reset"].primary:focus, .button.primary:hover, .button.primary:focus, [role="button"].primary:hover, [role="button"].primary:focus {
- --button-hover-back-color: #1565c0; }
-
-button.secondary, [type="button"].secondary, [type="submit"].secondary, [type="reset"].secondary, .button.secondary, [role="button"].secondary {
- --button-back-color: #d32f2f;
- --button-fore-color: #f8f8f8; }
- button.secondary:hover, button.secondary:focus, [type="button"].secondary:hover, [type="button"].secondary:focus, [type="submit"].secondary:hover, [type="submit"].secondary:focus, [type="reset"].secondary:hover, [type="reset"].secondary:focus, .button.secondary:hover, .button.secondary:focus, [role="button"].secondary:hover, [role="button"].secondary:focus {
- --button-hover-back-color: #c62828; }
-
-button.tertiary, [type="button"].tertiary, [type="submit"].tertiary, [type="reset"].tertiary, .button.tertiary, [role="button"].tertiary {
- --button-back-color: #308732;
- --button-fore-color: #f8f8f8; }
- button.tertiary:hover, button.tertiary:focus, [type="button"].tertiary:hover, [type="button"].tertiary:focus, [type="submit"].tertiary:hover, [type="submit"].tertiary:focus, [type="reset"].tertiary:hover, [type="reset"].tertiary:focus, .button.tertiary:hover, .button.tertiary:focus, [role="button"].tertiary:hover, [role="button"].tertiary:focus {
- --button-hover-back-color: #277529; }
-
-button.inverse, [type="button"].inverse, [type="submit"].inverse, [type="reset"].inverse, .button.inverse, [role="button"].inverse {
- --button-back-color: #212121;
- --button-fore-color: #f8f8f8; }
- button.inverse:hover, button.inverse:focus, [type="button"].inverse:hover, [type="button"].inverse:focus, [type="submit"].inverse:hover, [type="submit"].inverse:focus, [type="reset"].inverse:hover, [type="reset"].inverse:focus, .button.inverse:hover, .button.inverse:focus, [role="button"].inverse:hover, [role="button"].inverse:focus {
- --button-hover-back-color: #111; }
-
-button.small, [type="button"].small, [type="submit"].small, [type="reset"].small, .button.small, [role="button"].small {
- padding: calc(0.5 * var(--universal-padding)) calc(0.75 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-button.large, [type="button"].large, [type="submit"].large, [type="reset"].large, .button.large, [role="button"].large {
- padding: calc(1.5 * var(--universal-padding)) calc(2 * var(--universal-padding));
- margin: var(--universal-margin); }
-
-/*
- Definitions for navigation elements.
-*/
-/* Navigation module CSS variable definitions */
-:root {
- --header-back-color: #03234b;
- --header-hover-back-color: #ffd200;
- --header-fore-color: #ffffff;
- --header-border-color: #3cb4e6;
- --nav-back-color: #ffffff;
- --nav-hover-back-color: #ffe97f;
- --nav-fore-color: #e6007e;
- --nav-border-color: #3cb4e6;
- --nav-link-color: #3cb4e6;
- --footer-fore-color: #ffffff;
- --footer-back-color: #03234b;
- --footer-border-color: #3cb4e6;
- --footer-link-color: #3cb4e6;
- --drawer-back-color: #ffffff;
- --drawer-hover-back-color: #ffe97f;
- --drawer-border-color: #3cb4e6;
- --drawer-close-color: #e6007e; }
-
-header {
- height: 2.75rem;
- background: var(--header-back-color);
- color: var(--header-fore-color);
- border-bottom: 0.0714285714rem solid var(--header-border-color);
- padding: calc(var(--universal-padding) / 4) 0;
- white-space: nowrap;
- overflow-x: auto;
- overflow-y: hidden; }
- header.row {
- box-sizing: content-box; }
- header .logo {
- color: var(--header-fore-color);
- font-size: 1.75rem;
- padding: var(--universal-padding) calc(2 * var(--universal-padding));
- text-decoration: none; }
- header button, header [type="button"], header .button, header [role="button"] {
- box-sizing: border-box;
- position: relative;
- top: calc(0rem - var(--universal-padding) / 4);
- height: calc(3.1875rem + var(--universal-padding) / 2);
- background: var(--header-back-color);
- line-height: calc(3.1875rem - var(--universal-padding) * 1.5);
- text-align: center;
- color: var(--header-fore-color);
- border: 0;
- border-radius: 0;
- margin: 0;
- text-transform: uppercase; }
- header button:hover, header button:focus, header [type="button"]:hover, header [type="button"]:focus, header .button:hover, header .button:focus, header [role="button"]:hover, header [role="button"]:focus {
- background: var(--header-hover-back-color); }
-
-nav {
- background: var(--nav-back-color);
- color: var(--nav-fore-color);
- border: 0.0714285714rem solid var(--nav-border-color);
- border-radius: var(--universal-border-radius);
- margin: var(--universal-margin); }
- nav * {
- padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
- nav a, nav a:visited {
- display: block;
- color: var(--nav-link-color);
- border-radius: var(--universal-border-radius);
- transition: background 0.3s; }
- nav a:hover, nav a:focus, nav a:visited:hover, nav a:visited:focus {
- text-decoration: none;
- background: var(--nav-hover-back-color); }
- nav .sublink-1 {
- position: relative;
- margin-left: calc(2 * var(--universal-padding)); }
- nav .sublink-1:before {
- position: absolute;
- left: calc(var(--universal-padding) - 1 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
- nav .sublink-2 {
- position: relative;
- margin-left: calc(4 * var(--universal-padding)); }
- nav .sublink-2:before {
- position: absolute;
- left: calc(var(--universal-padding) - 3 * var(--universal-padding));
- top: -0.0714285714rem;
- content: '';
- height: 100%;
- border: 0.0714285714rem solid var(--nav-border-color);
- border-left: 0; }
-
-footer {
- background: var(--footer-back-color);
- color: var(--footer-fore-color);
- border-top: 0.0714285714rem solid var(--footer-border-color);
- padding: calc(2 * var(--universal-padding)) var(--universal-padding);
- font-size: 0.875rem; }
- footer a, footer a:visited {
- color: var(--footer-link-color); }
-
-header.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- top: 0; }
-
-footer.sticky {
- position: -webkit-sticky;
- position: sticky;
- z-index: 1101;
- bottom: 0; }
-
-.drawer-toggle:before {
- display: inline-block;
- position: relative;
- vertical-align: bottom;
- content: '\00a0\2261\00a0';
- font-family: sans-serif;
- font-size: 1.5em; }
-@media screen and (min-width: 500px) {
- .drawer-toggle:not(.persistent) {
- display: none; } }
-
-[type="checkbox"].drawer {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].drawer + * {
- display: block;
- box-sizing: border-box;
- position: fixed;
- top: 0;
- width: 320px;
- height: 100vh;
- overflow-y: auto;
- background: var(--drawer-back-color);
- border: 0.0714285714rem solid var(--drawer-border-color);
- border-radius: 0;
- margin: 0;
- z-index: 1110;
- right: -320px;
- transition: right 0.3s; }
- [type="checkbox"].drawer + * .drawer-close {
- position: absolute;
- top: var(--universal-margin);
- right: var(--universal-margin);
- z-index: 1111;
- width: 2rem;
- height: 2rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].drawer + * .drawer-close:before {
- display: block;
- content: '\00D7';
- color: var(--drawer-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 2rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].drawer + * .drawer-close:hover, [type="checkbox"].drawer + * .drawer-close:focus {
- background: var(--drawer-hover-back-color); }
- @media screen and (max-width: 320px) {
- [type="checkbox"].drawer + * {
- width: 100%; } }
- [type="checkbox"].drawer:checked + * {
- right: 0; }
- @media screen and (min-width: 500px) {
- [type="checkbox"].drawer:not(.persistent) + * {
- position: static;
- height: 100%;
- z-index: 1100; }
- [type="checkbox"].drawer:not(.persistent) + * .drawer-close {
- display: none; } }
-
-/*
- Definitions for the responsive table component.
-*/
-/* Table module CSS variable definitions. */
-:root {
- --table-border-color: #03234b;
- --table-border-separator-color: #03234b;
- --table-head-back-color: #03234b;
- --table-head-fore-color: #ffffff;
- --table-body-back-color: #ffffff;
- --table-body-fore-color: #03234b;
- --table-body-alt-back-color: #f4f4f4; }
-
-table {
- border-collapse: separate;
- border-spacing: 0;
- margin: 0;
- display: flex;
- flex: 0 1 auto;
- flex-flow: row wrap;
- padding: var(--universal-padding);
- padding-top: 0; }
- table caption {
- font-size: 1rem;
- margin: calc(2 * var(--universal-margin)) 0;
- max-width: 100%;
- flex: 0 0 100%; }
- table thead, table tbody {
- display: flex;
- flex-flow: row wrap;
- border: 0.0714285714rem solid var(--table-border-color); }
- table thead {
- z-index: 999;
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0;
- border-bottom: 0.0714285714rem solid var(--table-border-separator-color); }
- table tbody {
- border-top: 0;
- margin-top: calc(0 - var(--universal-margin));
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- table tr {
- display: flex;
- padding: 0; }
- table th, table td {
- padding: calc(0.5 * var(--universal-padding));
- font-size: 0.9rem; }
- table th {
- text-align: left;
- background: var(--table-head-back-color);
- color: var(--table-head-fore-color); }
- table td {
- background: var(--table-body-back-color);
- color: var(--table-body-fore-color);
- border-top: 0.0714285714rem solid var(--table-border-color); }
-
-table:not(.horizontal) {
- overflow: auto;
- max-height: 100%; }
- table:not(.horizontal) thead, table:not(.horizontal) tbody {
- max-width: 100%;
- flex: 0 0 100%; }
- table:not(.horizontal) tr {
- flex-flow: row wrap;
- flex: 0 0 100%; }
- table:not(.horizontal) th, table:not(.horizontal) td {
- flex: 1 0 0%;
- overflow: hidden;
- text-overflow: ellipsis; }
- table:not(.horizontal) thead {
- position: sticky;
- top: 0; }
- table:not(.horizontal) tbody tr:first-child td {
- border-top: 0; }
-
-table.horizontal {
- border: 0; }
- table.horizontal thead, table.horizontal tbody {
- border: 0;
- flex: .2 0 0;
- flex-flow: row nowrap; }
- table.horizontal tbody {
- overflow: auto;
- justify-content: space-between;
- flex: .8 0 0;
- margin-left: 0;
- padding-bottom: calc(var(--universal-padding) / 4); }
- table.horizontal tr {
- flex-direction: column;
- flex: 1 0 auto; }
- table.horizontal th, table.horizontal td {
- width: auto;
- border: 0;
- border-bottom: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal th:not(:first-child), table.horizontal td:not(:first-child) {
- border-top: 0; }
- table.horizontal th {
- text-align: right;
- border-left: 0.0714285714rem solid var(--table-border-color);
- border-right: 0.0714285714rem solid var(--table-border-separator-color); }
- table.horizontal thead tr:first-child {
- padding-left: 0; }
- table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td {
- border-right: 0.0714285714rem solid var(--table-border-color); }
- table.horizontal tbody tr:last-child td:first-child {
- border-top-right-radius: 0.25rem; }
- table.horizontal tbody tr:last-child td:last-child {
- border-bottom-right-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:first-child {
- border-top-left-radius: 0.25rem; }
- table.horizontal thead tr:first-child th:last-child {
- border-bottom-left-radius: 0.25rem; }
-
-@media screen and (max-width: 499px) {
- table, table.horizontal {
- border-collapse: collapse;
- border: 0;
- width: 100%;
- display: table; }
- table thead, table th, table.horizontal thead, table.horizontal th {
- border: 0;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- table tbody, table.horizontal tbody {
- border: 0;
- display: table-row-group; }
- table tr, table.horizontal tr {
- display: block;
- border: 0.0714285714rem solid var(--table-border-color);
- border-radius: var(--universal-border-radius);
- background: #ffffff;
- padding: var(--universal-padding);
- margin: var(--universal-margin);
- margin-bottom: calc(1 * var(--universal-margin)); }
- table th, table td, table.horizontal th, table.horizontal td {
- width: auto; }
- table td, table.horizontal td {
- display: block;
- border: 0;
- text-align: right; }
- table td:before, table.horizontal td:before {
- content: attr(data-label);
- float: left;
- font-weight: 600; }
- table th:first-child, table td:first-child, table.horizontal th:first-child, table.horizontal td:first-child {
- border-top: 0; }
- table tbody tr:last-child td, table.horizontal tbody tr:last-child td {
- border-right: 0; } }
-table tr:nth-of-type(2n) > td {
- background: var(--table-body-alt-back-color); }
-
-@media screen and (max-width: 500px) {
- table tr:nth-of-type(2n) {
- background: var(--table-body-alt-back-color); } }
-:root {
- --table-body-hover-back-color: #90caf9; }
-
-table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); }
-
-@media screen and (max-width: 500px) {
- table.hoverable tr:hover, table.hoverable tr:hover > td, table.hoverable tr:focus, table.hoverable tr:focus > td {
- background: var(--table-body-hover-back-color); } }
-/*
- Definitions for contextual background elements, toasts and tooltips.
-*/
-/* Contextual module CSS variable definitions */
-:root {
- --mark-back-color: #3cb4e6;
- --mark-fore-color: #ffffff; }
-
-mark {
- background: var(--mark-back-color);
- color: var(--mark-fore-color);
- font-size: 0.95em;
- line-height: 1em;
- border-radius: var(--universal-border-radius);
- padding: calc(var(--universal-padding) / 4) var(--universal-padding); }
- mark.inline-block {
- display: inline-block;
- font-size: 1em;
- line-height: 1.4;
- padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
-
-:root {
- --toast-back-color: #424242;
- --toast-fore-color: #fafafa; }
-
-.toast {
- position: fixed;
- bottom: calc(var(--universal-margin) * 3);
- left: 50%;
- transform: translate(-50%, -50%);
- z-index: 1111;
- color: var(--toast-fore-color);
- background: var(--toast-back-color);
- border-radius: calc(var(--universal-border-radius) * 16);
- padding: var(--universal-padding) calc(var(--universal-padding) * 3); }
-
-:root {
- --tooltip-back-color: #212121;
- --tooltip-fore-color: #fafafa; }
-
-.tooltip {
- position: relative;
- display: inline-block; }
- .tooltip:before, .tooltip:after {
- position: absolute;
- opacity: 0;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: all 0.3s;
- z-index: 1010;
- left: 50%; }
- .tooltip:not(.bottom):before, .tooltip:not(.bottom):after {
- bottom: 75%; }
- .tooltip.bottom:before, .tooltip.bottom:after {
- top: 75%; }
- .tooltip:hover:before, .tooltip:hover:after, .tooltip:focus:before, .tooltip:focus:after {
- opacity: 1;
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%); }
- .tooltip:before {
- content: '';
- background: transparent;
- border: var(--universal-margin) solid transparent;
- left: calc(50% - var(--universal-margin)); }
- .tooltip:not(.bottom):before {
- border-top-color: #212121; }
- .tooltip.bottom:before {
- border-bottom-color: #212121; }
- .tooltip:after {
- content: attr(aria-label);
- color: var(--tooltip-fore-color);
- background: var(--tooltip-back-color);
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- white-space: nowrap;
- transform: translateX(-50%); }
- .tooltip:not(.bottom):after {
- margin-bottom: calc(2 * var(--universal-margin)); }
- .tooltip.bottom:after {
- margin-top: calc(2 * var(--universal-margin)); }
-
-:root {
- --modal-overlay-color: rgba(0, 0, 0, 0.45);
- --modal-close-color: #e6007e;
- --modal-close-hover-color: #ffe97f; }
-
-[type="checkbox"].modal {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- [type="checkbox"].modal + div {
- position: fixed;
- top: 0;
- left: 0;
- display: none;
- width: 100vw;
- height: 100vh;
- background: var(--modal-overlay-color); }
- [type="checkbox"].modal + div .card {
- margin: 0 auto;
- max-height: 50vh;
- overflow: auto; }
- [type="checkbox"].modal + div .card .modal-close {
- position: absolute;
- top: 0;
- right: 0;
- width: 1.75rem;
- height: 1.75rem;
- border-radius: var(--universal-border-radius);
- padding: var(--universal-padding);
- margin: 0;
- cursor: pointer;
- transition: background 0.3s; }
- [type="checkbox"].modal + div .card .modal-close:before {
- display: block;
- content: '\00D7';
- color: var(--modal-close-color);
- position: relative;
- font-family: sans-serif;
- font-size: 1.75rem;
- line-height: 1;
- text-align: center; }
- [type="checkbox"].modal + div .card .modal-close:hover, [type="checkbox"].modal + div .card .modal-close:focus {
- background: var(--modal-close-hover-color); }
- [type="checkbox"].modal:checked + div {
- display: flex;
- flex: 0 1 auto;
- z-index: 1200; }
- [type="checkbox"].modal:checked + div .card .modal-close {
- z-index: 1211; }
-
-:root {
- --collapse-label-back-color: #03234b;
- --collapse-label-fore-color: #ffffff;
- --collapse-label-hover-back-color: #3cb4e6;
- --collapse-selected-label-back-color: #3cb4e6;
- --collapse-border-color: var(--collapse-label-back-color);
- --collapse-selected-border-color: #ceecf8;
- --collapse-content-back-color: #ffffff;
- --collapse-selected-label-border-color: #3cb4e6; }
-
-.collapse {
- width: calc(100% - 2 * var(--universal-margin));
- opacity: 1;
- display: flex;
- flex-direction: column;
- margin: var(--universal-margin);
- border-radius: var(--universal-border-radius); }
- .collapse > [type="radio"], .collapse > [type="checkbox"] {
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%); }
- .collapse > label {
- flex-grow: 1;
- display: inline-block;
- height: 1.25rem;
- cursor: pointer;
- transition: background 0.2s;
- color: var(--collapse-label-fore-color);
- background: var(--collapse-label-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- padding: calc(1.25 * var(--universal-padding)); }
- .collapse > label:hover, .collapse > label:focus {
- background: var(--collapse-label-hover-back-color); }
- .collapse > label + div {
- flex-basis: auto;
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- position: absolute;
- clip: rect(0 0 0 0);
- -webkit-clip-path: inset(100%);
- clip-path: inset(100%);
- transition: max-height 0.3s;
- max-height: 1px; }
- .collapse > :checked + label {
- background: var(--collapse-selected-label-back-color);
- border-color: var(--collapse-selected-label-border-color); }
- .collapse > :checked + label + div {
- box-sizing: border-box;
- position: relative;
- width: 100%;
- height: auto;
- overflow: auto;
- margin: 0;
- background: var(--collapse-content-back-color);
- border: 0.0714285714rem solid var(--collapse-selected-border-color);
- border-top: 0;
- padding: var(--universal-padding);
- clip: auto;
- -webkit-clip-path: inset(0%);
- clip-path: inset(0%);
- max-height: 100%; }
- .collapse > label:not(:first-of-type) {
- border-top: 0; }
- .collapse > label:first-of-type {
- border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0; }
- .collapse > label:last-of-type:not(:first-of-type) {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
- .collapse > label:last-of-type:first-of-type {
- border-radius: var(--universal-border-radius); }
- .collapse > :checked:last-of-type:not(:first-of-type) + label {
- border-radius: 0; }
- .collapse > :checked:last-of-type + label + div {
- border-radius: 0 0 var(--universal-border-radius) var(--universal-border-radius); }
-
-/*
- Custom elements for contextual background elements, toasts and tooltips.
-*/
-mark.tertiary {
- --mark-back-color: #3cb4e6; }
-
-mark.tag {
- padding: calc(var(--universal-padding)/2) var(--universal-padding);
- border-radius: 1em; }
-
-/*
- Definitions for progress elements and spinners.
-*/
-/* Progress module CSS variable definitions */
-:root {
- --progress-back-color: #3cb4e6;
- --progress-fore-color: #555; }
-
-progress {
- display: block;
- vertical-align: baseline;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- height: 0.75rem;
- width: calc(100% - 2 * var(--universal-margin));
- margin: var(--universal-margin);
- border: 0;
- border-radius: calc(2 * var(--universal-border-radius));
- background: var(--progress-back-color);
- color: var(--progress-fore-color); }
- progress::-webkit-progress-value {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress::-webkit-progress-bar {
- background: var(--progress-back-color); }
- progress::-moz-progress-bar {
- background: var(--progress-fore-color);
- border-top-left-radius: calc(2 * var(--universal-border-radius));
- border-bottom-left-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-webkit-progress-value {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress[value="1000"]::-moz-progress-bar {
- border-radius: calc(2 * var(--universal-border-radius)); }
- progress.inline {
- display: inline-block;
- vertical-align: middle;
- width: 60%; }
-
-:root {
- --spinner-back-color: #ddd;
- --spinner-fore-color: #555; }
-
-@keyframes spinner-donut-anim {
- 0% {
- transform: rotate(0deg); }
- 100% {
- transform: rotate(360deg); } }
-.spinner {
- display: inline-block;
- margin: var(--universal-margin);
- border: 0.25rem solid var(--spinner-back-color);
- border-left: 0.25rem solid var(--spinner-fore-color);
- border-radius: 50%;
- width: 1.25rem;
- height: 1.25rem;
- animation: spinner-donut-anim 1.2s linear infinite; }
-
-/*
- Custom elements for progress bars and spinners.
-*/
-progress.primary {
- --progress-fore-color: #1976d2; }
-
-progress.secondary {
- --progress-fore-color: #d32f2f; }
-
-progress.tertiary {
- --progress-fore-color: #308732; }
-
-.spinner.primary {
- --spinner-fore-color: #1976d2; }
-
-.spinner.secondary {
- --spinner-fore-color: #d32f2f; }
-
-.spinner.tertiary {
- --spinner-fore-color: #308732; }
-
-/*
- Definitions for icons - powered by Feather (https://feathericons.com/).
-*/
-span[class^='icon-'] {
- display: inline-block;
- height: 1em;
- width: 1em;
- vertical-align: -0.125em;
- background-size: contain;
- margin: 0 calc(var(--universal-margin) / 4); }
- span[class^='icon-'].secondary {
- -webkit-filter: invert(25%);
- filter: invert(25%); }
- span[class^='icon-'].inverse {
- -webkit-filter: invert(100%);
- filter: invert(100%); }
-
-span.icon-alert {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-bookmark {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-calendar {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-credit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-edit {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); }
-span.icon-link {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-help {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-home {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-info {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-lock {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-mail {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); }
-span.icon-location {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-phone {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-rss {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E"); }
-span.icon-search {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-settings {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-share {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-cart {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E"); }
-span.icon-upload {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E"); }
-span.icon-user {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E"); }
-
-/*
- Definitions for STMicroelectronics icons (https://brandportal.st.com/document/26).
-*/
-span.icon-st-update {
- background-image: url("Update.svg"); }
-span.icon-st-add {
- background-image: url("Add button.svg"); }
-
-/*
- Definitions for utilities and helper classes.
-*/
-/* Utility module CSS variable definitions */
-:root {
- --generic-border-color: rgba(0, 0, 0, 0.3);
- --generic-box-shadow: 0 0.2857142857rem 0.2857142857rem 0 rgba(0, 0, 0, 0.125), 0 0.1428571429rem 0.1428571429rem -0.1428571429rem rgba(0, 0, 0, 0.125); }
-
-.hidden {
- display: none !important; }
-
-.visually-hidden {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; }
-
-.bordered {
- border: 0.0714285714rem solid var(--generic-border-color) !important; }
-
-.rounded {
- border-radius: var(--universal-border-radius) !important; }
-
-.circular {
- border-radius: 50% !important; }
-
-.shadowed {
- box-shadow: var(--generic-box-shadow) !important; }
-
-.responsive-margin {
- margin: calc(var(--universal-margin) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-margin {
- margin: calc(var(--universal-margin) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-margin {
- margin: var(--universal-margin) !important; } }
-
-.responsive-padding {
- padding: calc(var(--universal-padding) / 4) !important; }
- @media screen and (min-width: 500px) {
- .responsive-padding {
- padding: calc(var(--universal-padding) / 2) !important; } }
- @media screen and (min-width: 1280px) {
- .responsive-padding {
- padding: var(--universal-padding) !important; } }
-
-@media screen and (max-width: 499px) {
- .hidden-sm {
- display: none !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .hidden-md {
- display: none !important; } }
-@media screen and (min-width: 1280px) {
- .hidden-lg {
- display: none !important; } }
-@media screen and (max-width: 499px) {
- .visually-hidden-sm {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 500px) and (max-width: 1279px) {
- .visually-hidden-md {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-@media screen and (min-width: 1280px) {
- .visually-hidden-lg {
- position: absolute !important;
- width: 1px !important;
- height: 1px !important;
- margin: -1px !important;
- border: 0 !important;
- padding: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(100%) !important;
- clip-path: inset(100%) !important;
- overflow: hidden !important; } }
-
-/*# sourceMappingURL=mini-custom.css.map */
-
-img[alt="ST logo"] { display: block; margin: auto; width: 75%; max-width: 250px; min-width: 71px; }
-img[alt="Cube logo"] { float: right; width: 30%; max-width: 10rem; min-width: 8rem; padding-right: 1rem;}
-
-.figure {
- display: block;
- margin-left: auto;
- margin-right: auto;
- text-align: center;
-}
\ No newline at end of file
diff --git a/Drivers/BSP/STM32F401-Discovery/_htmresc/st_logo_2020.png b/Drivers/BSP/STM32F401-Discovery/_htmresc/st_logo_2020.png
deleted file mode 100644
index d6cebb5ac7..0000000000
Binary files a/Drivers/BSP/STM32F401-Discovery/_htmresc/st_logo_2020.png and /dev/null differ
diff --git a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery.c b/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery.c
deleted file mode 100644
index 3d174d3965..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery.c
+++ /dev/null
@@ -1,727 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f401_discovery.c
- * @author MCD Application Team
- * @brief This file provides set of firmware functions to manage LEDs and
- * push-button available on STM32F401-Discovery Kit from STMicroelectronics.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f401_discovery.h"
-
-/** @defgroup BSP BSP
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY STM32F401 DISCOVERY
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL STM32F401 DISCOVERY LOW LEVEL
- * @brief This file provides set of firmware functions to manage Leds and push-button
- * available on STM32F401-Discovery Kit from STMicroelectronics.
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_Private_TypesDefinitions STM32F401 DISCOVERY LOW LEVEL Private TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_Private_Defines STM32F401 DISCOVERY LOW LEVEL Private Defines
- * @{
- */
-
-/**
- * @brief STM32F401 DISCO BSP Driver version number V2.2.5
- */
-#define __STM32F401_DISCO_BSP_VERSION_MAIN (0x02) /*!< [31:24] main version */
-#define __STM32F401_DISCO_BSP_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
-#define __STM32F401_DISCO_BSP_VERSION_SUB2 (0x05) /*!< [15:8] sub2 version */
-#define __STM32F401_DISCO_BSP_VERSION_RC (0x00) /*!< [7:0] release candidate */
-#define __STM32F401_DISCO_BSP_VERSION ((__STM32F401_DISCO_BSP_VERSION_MAIN << 24)\
- |(__STM32F401_DISCO_BSP_VERSION_SUB1 << 16)\
- |(__STM32F401_DISCO_BSP_VERSION_SUB2 << 8 )\
- |(__STM32F401_DISCO_BSP_VERSION_RC))
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_Private_Macros STM32F401 DISCOVERY LOW LEVEL Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_Private_Variables STM32F401 DISCOVERY LOW LEVEL Private Variables
- * @{
- */
-GPIO_TypeDef* GPIO_PORT[LEDn] = {LED4_GPIO_PORT,
- LED3_GPIO_PORT,
- LED5_GPIO_PORT,
- LED6_GPIO_PORT};
-
-const uint16_t GPIO_PIN[LEDn] = {LED4_PIN,
- LED3_PIN,
- LED5_PIN,
- LED6_PIN};
-
-GPIO_TypeDef* BUTTON_PORT[BUTTONn] = {KEY_BUTTON_GPIO_PORT};
-const uint16_t BUTTON_PIN[BUTTONn] = {KEY_BUTTON_PIN};
-const uint8_t BUTTON_IRQn[BUTTONn] = {KEY_BUTTON_EXTI_IRQn};
-
-uint32_t I2cxTimeout = I2Cx_TIMEOUT_MAX; /* 0x01)
- {
- WriteAddr |= (uint8_t)MULTIPLEBYTE_CMD;
- }
- /* Set chip select Low at the start of the transmission */
- GYRO_CS_LOW();
-
- /* Send the Address of the indexed register */
- SPIx_WriteRead(WriteAddr);
-
- /* Send the data that will be written into the device (MSB First) */
- while(NumByteToWrite >= 0x01)
- {
- SPIx_WriteRead(*pBuffer);
- NumByteToWrite--;
- pBuffer++;
- }
-
- /* Set chip select High at the end of the transmission */
- GYRO_CS_HIGH();
-}
-
-/**
- * @brief Reads a block of data from the GYRO.
- * @param pBuffer: pointer to the buffer that receives the data read from the GYRO.
- * @param ReadAddr: GYRO's internal address to read from.
- * @param NumByteToRead: Number of bytes to read from the GYRO.
- */
-void GYRO_IO_Read(uint8_t* pBuffer, uint8_t ReadAddr, uint16_t NumByteToRead)
-{
- if(NumByteToRead > 0x01)
- {
- ReadAddr |= (uint8_t)(READWRITE_CMD | MULTIPLEBYTE_CMD);
- }
- else
- {
- ReadAddr |= (uint8_t)READWRITE_CMD;
- }
-
- /* Set chip select Low at the start of the transmission */
- GYRO_CS_LOW();
-
- /* Send the Address of the indexed register */
- SPIx_WriteRead(ReadAddr);
-
- /* Receive the data that will be read from the device (MSB First) */
- while(NumByteToRead > 0x00)
- {
- /* Send dummy byte (0x00) to generate the SPI clock to GYRO (Slave device) */
- *pBuffer = SPIx_WriteRead(DUMMY_BYTE);
- NumByteToRead--;
- pBuffer++;
- }
-
- /* Set chip select High at the end of the transmission */
- GYRO_CS_HIGH();
-}
-
-/********************************* LINK AUDIO *********************************/
-
-/**
- * @brief Initializes Audio low level.
- */
-void AUDIO_IO_Init(void)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable Reset GPIO Clock */
- AUDIO_RESET_GPIO_CLK_ENABLE();
-
- /* Audio reset pin configuration -------------------------------------------*/
- GPIO_InitStruct.Pin = AUDIO_RESET_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(AUDIO_RESET_GPIO, &GPIO_InitStruct);
-
- I2Cx_Init();
-
- /* Power Down the codec */
- CODEC_AUDIO_POWER_OFF();
-
- /* Wait for a delay to insure registers erasing */
- HAL_Delay(5);
-
- /* Power on the codec */
- CODEC_AUDIO_POWER_ON();
-
- /* Wait for a delay to insure registers erasing */
- HAL_Delay(5);
-}
-
-/**
- * @brief DeInitializes Audio low level.
- */
-void AUDIO_IO_DeInit(void)
-{
-
-}
-
-/**
- * @brief Writes a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @param Value: Data to be written
- */
-void AUDIO_IO_Write (uint8_t Addr, uint8_t Reg, uint8_t Value)
-{
- I2Cx_WriteData(Addr, Reg, Value);
-}
-
-/**
- * @brief Reads a single data.
- * @param Addr: I2C address
- * @param Reg: Reg address
- * @retval Data to be read
- */
-uint8_t AUDIO_IO_Read (uint8_t Addr, uint8_t Reg)
-{
- return I2Cx_ReadData(Addr, Reg);
-}
-
-/****************************** LINK ACCELEROMETER ****************************/
-
-/**
- * @brief Configures COMPASS / ACCELERO I2C interface.
- */
-void COMPASSACCELERO_IO_Init(void)
-{
- GPIO_InitTypeDef GPIO_InitStructure;
-
- /* Enable DRDY clock */
- ACCELERO_DRDY_GPIO_CLK_ENABLE();
-
- /* MEMS DRDY pin configuration */
- GPIO_InitStructure.Pin = ACCELERO_DRDY_PIN;
- GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
- GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
- HAL_GPIO_Init(ACCELERO_DRDY_GPIO_PORT, &GPIO_InitStructure);
-
- I2Cx_Init();
-}
-
-/**
- * @brief Configures COMPASS / ACCELERO click IT.
- */
-void COMPASSACCELERO_IO_ITConfig(void)
-{
- GPIO_InitTypeDef GPIO_InitStructure;
-
- /* Enable INT1 and INT2 GPIO clock */
- ACCELERO_INT_GPIO_CLK_ENABLE();
-
- /* Configure GPIO PINs to detect Interrupts */
- GPIO_InitStructure.Pin = ACCELERO_INT1_PIN | ACCELERO_INT2_PIN;
- GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING;
- GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(ACCELERO_INT_GPIO_PORT, &GPIO_InitStructure);
-
- /* Enable and set COMPASS / ACCELERO Interrupt to the highest priority */
- HAL_NVIC_SetPriority(ACCELERO_INT1_EXTI_IRQn, 0x00, 0x00);
- HAL_NVIC_EnableIRQ(ACCELERO_INT1_EXTI_IRQn);
-}
-
-/**
- * @brief Writes one byte to the COMPASS / ACCELERO.
- * @param DeviceAddr: the slave address to be programmed
- * @param RegisterAddr: the COMPASS / ACCELERO register to be written
- * @param Value: Data to be written
- */
-void COMPASSACCELERO_IO_Write(uint16_t DeviceAddr, uint8_t RegisterAddr, uint8_t Value)
-{
- /* Call I2Cx Read data bus function */
- I2Cx_WriteData(DeviceAddr, RegisterAddr, Value);
-}
-
-/**
- * @brief Reads a block of data from the COMPASS / ACCELERO.
- * @param DeviceAddr: the slave address to be programmed(ACC_I2C_ADDRESS or MAG_I2C_ADDRESS).
- * @param RegisterAddr: the COMPASS / ACCELERO internal address register to read from
- * @retval COMPASS / ACCELERO register value
- */
-uint8_t COMPASSACCELERO_IO_Read(uint16_t DeviceAddr, uint8_t RegisterAddr)
-{
- /* Call I2Cx Read data bus function */
- return I2Cx_ReadData(DeviceAddr, RegisterAddr);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery.h b/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery.h
deleted file mode 100644
index 91dc671038..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f401_discovery.h
- * @author MCD Application Team
- * @brief This file contains definitions for STM32F401-Discovery Kit's Leds and
- * push-button hardware resources.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F401_DISCOVERY_H
-#define __STM32F401_DISCOVERY_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F401_DISCOVERY
- * @{
- */
-
-/** @addtogroup STM32F401_DISCOVERY_LOW_LEVEL
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_Exported_Types STM32F401 DISCOVERY LOW LEVEL Exported Types
- * @{
- */
-typedef enum
-{
- LED4 = 0,
- LED3 = 1,
- LED5 = 2,
- LED6 = 3
-}Led_TypeDef;
-
-typedef enum
-{
- BUTTON_KEY = 0,
-}Button_TypeDef;
-
-typedef enum
-{
- BUTTON_MODE_GPIO = 0,
- BUTTON_MODE_EXTI = 1
-}ButtonMode_TypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_Exported_Constants STM32F401 DISCOVERY LOW LEVEL Exported Constants
- * @{
- */
-
-/**
- * @brief Define for STM32F401_DISCOVERY board
- */
-#if !defined (USE_STM32F401_DISCO)
- #define USE_STM32F401_DISCO
-#endif
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_LED STM32F401 DISCOVERY LOW LEVEL LED
- * @{
- */
-#define LEDn 4
-
-#define LED4_PIN GPIO_PIN_12
-#define LED4_GPIO_PORT GPIOD
-#define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-
-
-#define LED3_PIN GPIO_PIN_13
-#define LED3_GPIO_PORT GPIOD
-#define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-
-
-#define LED5_PIN GPIO_PIN_14
-#define LED5_GPIO_PORT GPIOD
-#define LED5_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define LED5_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-
-
-#define LED6_PIN GPIO_PIN_15
-#define LED6_GPIO_PORT GPIOD
-#define LED6_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
-#define LED6_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
-
-#define LEDx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) LED4_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 1) LED3_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 2) LED5_GPIO_CLK_ENABLE(); else \
- if((__INDEX__) == 3) LED6_GPIO_CLK_ENABLE(); \
- }while(0)
-
-#define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) LED4_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 1) LED3_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 2) LED5_GPIO_CLK_DISABLE(); else \
- if((__INDEX__) == 3) LED6_GPIO_CLK_DISABLE(); \
- }while(0)
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_BUTTON STM32F401 DISCOVERY LOW LEVEL BUTTON
- * @{
- */
-#define BUTTONn 1
-
-/**
- * @brief Wakeup push-button
- */
-#define KEY_BUTTON_PIN GPIO_PIN_0
-#define KEY_BUTTON_GPIO_PORT GPIOA
-#define KEY_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
-#define KEY_BUTTON_EXTI_IRQn EXTI0_IRQn
-
-#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_ENABLE(); \
- }while(0)
-#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_DISABLE(); \
- }while(0)
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_BUS STM32F401 DISCOVERY LOW LEVEL BUS
- * @{
- */
-
-/*############################### I2Cx #######################################*/
-#define DISCOVERY_I2Cx I2C1
-#define DISCOVERY_I2Cx_CLOCK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE()
-#define DISCOVERY_I2Cx_GPIO_PORT GPIOB /* GPIOB */
-#define DISCOVERY_I2Cx_SCL_PIN GPIO_PIN_6 /* PB.06 */
-#define DISCOVERY_I2Cx_SDA_PIN GPIO_PIN_9 /* PB.09 */
-#define DISCOVERY_I2Cx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-#define DISCOVERY_I2Cx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
-#define DISCOVERY_I2Cx_AF GPIO_AF4_I2C1
-
-#define DISCOVERY_I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
-#define DISCOVERY_I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
-
-/* I2C interrupt requests */
-#define DISCOVERY_I2Cx_EV_IRQn I2C1_EV_IRQn
-#define DISCOVERY_I2Cx_ER_IRQn I2C1_ER_IRQn
-
-/* I2C speed and timeout max */
-#define I2Cx_TIMEOUT_MAX 0xA000 /*Init(ctrl);
-
- /* Fill the Accelerometer LPF structure */
- LSM303DLHC_FilterStructure.HighPassFilter_Mode_Selection =LSM303DLHC_HPM_NORMAL_MODE;
- LSM303DLHC_FilterStructure.HighPassFilter_CutOff_Frequency = LSM303DLHC_HPFCF_16;
- LSM303DLHC_FilterStructure.HighPassFilter_AOI1 = LSM303DLHC_HPF_AOI1_DISABLE;
- LSM303DLHC_FilterStructure.HighPassFilter_AOI2 = LSM303DLHC_HPF_AOI2_DISABLE;
-
- /* Configure MEMS: mode, cutoff frquency, Filter status, Click, AOI1 and AOI2 */
- ctrl = (uint8_t) (LSM303DLHC_FilterStructure.HighPassFilter_Mode_Selection |\
- LSM303DLHC_FilterStructure.HighPassFilter_CutOff_Frequency|\
- LSM303DLHC_FilterStructure.HighPassFilter_AOI1|\
- LSM303DLHC_FilterStructure.HighPassFilter_AOI2);
-
- /* Configure the Accelerometer LPF main parameters */
- AccelerometerDrv->FilterConfig(ctrl);
-
- ret = ACCELERO_OK;
- }
- else
- {
- ret = ACCELERO_ERROR;
- }
-
- return ret;
-}
-
-/**
- * @brief Reboot memory content of Accelerometer.
- */
-void BSP_ACCELERO_Reset(void)
-{
- if(AccelerometerDrv->Reset != NULL)
- {
- AccelerometerDrv->Reset();
- }
-}
-
-/**
- * @brief Configure Accelerometer click IT.
- */
-void BSP_ACCELERO_Click_ITConfig(void)
-{
- if(AccelerometerDrv->ConfigIT!= NULL)
- {
- AccelerometerDrv->ConfigIT();
- }
-}
-
-/**
- * @brief Get XYZ axes acceleration.
- * @param pDataXYZ: Pointer to 3 angular acceleration axes.
- * pDataXYZ[0] = X axis, pDataXYZ[1] = Y axis, pDataXYZ[2] = Z axis
- */
-void BSP_ACCELERO_GetXYZ(int16_t *pDataXYZ)
-{
- int16_t SwitchXY = 0;
-
- if(AccelerometerDrv->GetXYZ!= NULL)
- {
- AccelerometerDrv->GetXYZ(pDataXYZ);
-
- /* Switch X and Y Axes in case of LSM303DLHC MEMS */
- if(AccelerometerDrv == &Lsm303dlhcDrv)
- {
- SwitchXY = pDataXYZ[0];
- pDataXYZ[0] = pDataXYZ[1];
-
- /* Invert Y Axis to be conpliant with LIS3DSH */
- pDataXYZ[1] = -SwitchXY;
- }
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_accelerometer.h b/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_accelerometer.h
deleted file mode 100644
index 74c128b913..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_accelerometer.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f401_discovery_accelerometer.h
- * @author MCD Application Team
- * @brief This file contains all the functions prototypes for the
- * stm32f401_discovery_accelerometer.c firmware driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F401_DISCOVERY_ACCELEROMETER_H
-#define __STM32F401_DISCOVERY_ACCELEROMETER_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f401_discovery.h"
-
-/* Include Accelerometer component driver */
-#include "../Components/lsm303dlhc/lsm303dlhc.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F401_DISCOVERY
- * @{
- */
-
-/** @addtogroup STM32F401_DISCOVERY_ACCELEROMETER
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_ACCELEROMETER_Exported_Types STM32F401 DISCOVERY ACCELEROMETER Exported Types
- * @{
- */
-typedef enum
-{
- ACCELERO_OK = 0,
- ACCELERO_ERROR = 1,
- ACCELERO_TIMEOUT = 2
-}ACCELERO_StatusTypeDef;
-
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_ACCELEROMETER_Exported_Constants STM32F401 DISCOVERY ACCELEROMETER Exported Constants
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_ACCELEROMETER_Exported_Functions STM32F401 DISCOVERY ACCELEROMETER Exported Functions
- * @{
- */
-/* Accelerometer functions */
-uint8_t BSP_ACCELERO_Init(void);
-void BSP_ACCELERO_Reset(void);
-void BSP_ACCELERO_Click_ITConfig(void);
-void BSP_ACCELERO_GetXYZ(int16_t *pDataXYZ);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F401_DISCOVERY_ACCELEROMETER_H */
diff --git a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_audio.c b/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_audio.c
deleted file mode 100644
index 13422c8b36..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_audio.c
+++ /dev/null
@@ -1,1120 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f401_discovery_audio.c
- * @author MCD Application Team
- * @brief This file provides the Audio driver for the STM32F401-Discovery
- * board.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/*==============================================================================
- User NOTES
-1. How To use this driver:
---------------------------
- - This driver supports STM32F401xx devices on STM32F401-Discovery Kit:
- a) to play an audio file (all functions names start by BSP_AUDIO_OUT_xxx)
- b) to record an audio file through MP45DT02, ST MEMS (all functions names start by AUDIO_IN_xxx)
-
-a) PLAY A FILE:
-==============
- + Call the function BSP_AUDIO_OUT_Init(
- OutputDevice: physical output mode (OUTPUT_DEVICE_SPEAKER,
- OUTPUT_DEVICE_HEADPHONE, OUTPUT_DEVICE_AUTO or
- OUTPUT_DEVICE_BOTH)
- Volume: initial volume to be set (0 is min (mute), 100 is max (100%)
- AudioFreq: Audio frequency in Hz (8000, 16000, 22500, 32000 ...)
- this parameter is relative to the audio file/stream type.
- )
- This function configures all the hardware required for the audio application (codec, I2C, I2S,
- GPIOs, DMA and interrupt if needed). This function returns 0 if configuration is OK.
- If the returned value is different from 0 or the function is stuck then the communication with
- the codec (try to un-plug the power or reset device in this case).
- - OUTPUT_DEVICE_SPEAKER: only speaker will be set as output for the audio stream.
- - OUTPUT_DEVICE_HEADPHONE: only headphones will be set as output for the audio stream.
- - OUTPUT_DEVICE_AUTO: Selection of output device is made through external switch (implemented
- into the audio jack on the discovery board). When the Headphone is connected it is used
- as output. When the headphone is disconnected from the audio jack, the output is
- automatically switched to Speaker.
- - OUTPUT_DEVICE_BOTH: both Speaker and Headphone are used as outputs for the audio stream
- at the same time.
- + Call the function BSP_AUDIO_OUT_Play(
- pBuffer: pointer to the audio data file address
- Size: size of the buffer to be sent in Bytes
- )
- to start playing (for the first time) from the audio file/stream.
- + Call the function BSP_AUDIO_OUT_Pause() to pause playing
- + Call the function BSP_AUDIO_OUT_Resume() to resume playing.
- Note. After calling BSP_AUDIO_OUT_Pause() function for pause, only BSP_AUDIO_OUT_Resume() should be called
- for resume (it is not allowed to call BSP_AUDIO_OUT_Play() in this case).
- Note. This function should be called only when the audio file is played or paused (not stopped).
- + For each mode, you may need to implement the relative callback functions into your code.
- The Callback functions are named BSP_AUDIO_OUT_XXXCallBack() and only their prototypes are declared in
- the stm32f401_discovery_audio.h file. (refer to the example for more details on the callbacks implementations)
- + To Stop playing, to modify the volume level, the frequency or to mute, use the functions
- BSP_AUDIO_OUT_Stop(), BSP_AUDIO_OUT_SetVolume(), AUDIO_OUT_SetFrequency() BSP_AUDIO_OUT_SetOutputMode and BSP_AUDIO_OUT_SetMute().
- + The driver API and the callback functions are at the end of the stm32f401_discovery_audio.h file.
-
-Driver architecture:
---------------------
- + This driver provide the High Audio Layer: consists of the function API exported in the stm32f401_discovery_audio.h file
- (BSP_AUDIO_OUT_Init(), BSP_AUDIO_OUT_Play() ...)
- + This driver provide also the Media Access Layer (MAL): which consists of functions allowing to access the media containing/
- providing the audio file/stream. These functions are also included as local functions into
- the stm32f401_discovery_audio.c file (I2S3_Init()...)
-
-Known Limitations:
--------------------
- 1- When using the Speaker, if the audio file quality is not high enough, the speaker output
- may produce high and uncomfortable noise level. To avoid this issue, to use speaker
- output properly, try to increase audio file sampling rate (typically higher than 48KHz).
- This operation will lead to larger file size.
- 2- Communication with the audio codec (through I2C) may be corrupted if it is interrupted by some
- user interrupt routines (in this case, interrupts could be disabled just before the start of
- communication then re-enabled when it is over). Note that this communication is only done at
- the configuration phase (BSP_AUDIO_OUT_Init() or BSP_AUDIO_OUT_Stop()) and when Volume control modification is
- performed (BSP_AUDIO_OUT_SetVolume() or BSP_AUDIO_OUT_SetMute()or BSP_AUDIO_OUT_SetOutputMode()).
- When the audio data is played, no communication is required with the audio codec.
- 3- Parsing of audio file is not implemented (in order to determine audio file properties: Mono/Stereo, Data size,
- File size, Audio Frequency, Audio Data header size ...). The configuration is fixed for the given audio file.
- 4- Supports only Stereo audio streaming. To play mono audio streams, each data should be sent twice
- on the I2S or should be duplicated on the source buffer. Or convert the stream in stereo before playing.
- 5- Supports only 16-bits audio data size.
-
-b) RECORD A FILE:
-================
- + Call the function BSP_AUDIO_IN_Init(
- AudioFreq: Audio frequency in Hz (8000, 16000, 22500, 32000 ...)
- )
- This function configures all the hardware required for the audio application (I2S,
- GPIOs, DMA and interrupt if needed). This function returns 0 if configuration is OK.
-
- + Call the function BSP_AUDIO_IN_Record(
- pbuf Main buffer pointer for the recorded data storing
- size Current size of the recorded buffer
- )
- to start recording from the microphone.
-
- + User needs to implement user callbacks to retrieve data saved in the record buffer
- (AUDIO_IN_RxHalfCpltCallback/BSP_AUDIO_IN_ReceiveComplete_CallBack)
-
- + Call the function AUDIO_IN_STOP() to stop recording
-
-==============================================================================*/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f401_discovery_audio.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F401_DISCOVERY
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO STM32F401 DISCOVERY AUDIO
- * @brief This file includes the low layer audio driver available on STM32F401-Discovery
- * discovery board.
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_Private_Types STM32F401 DISCOVERY AUDIO Private Types
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_Private_Defines STM32F401 DISCOVERY AUDIO Private Defines
- * @{
- */
-/* These PLL parameters are valid when the f(VCO clock) = 1Mhz */
-const uint32_t I2SFreq[8] = {8000, 11025, 16000, 22050, 32000, 44100, 48000, 96000};
-const uint32_t I2SPLLN[8] = {256, 429, 213, 429, 426, 271, 258, 344};
-const uint32_t I2SPLLR[8] = {5, 4, 4, 4, 4, 6, 3, 1};
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_Private_Macros STM32F401 DISCOVERY AUDIO Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_Private_Variables STM32F401 DISCOVERY AUDIO Private Variables
- * @{
- */
-/*##### PLAY #####*/
-static AUDIO_DrvTypeDef *pAudioDrv;
-I2S_HandleTypeDef hAudioOutI2s;
-
-/*### RECORDER ###*/
-I2S_HandleTypeDef hAudioInI2s;
-
-/* PDM filters params */
-PDM_Filter_Handler_t PDM_FilterHandler[2];
-PDM_Filter_Config_t PDM_FilterConfig[2];
-
-__IO uint16_t AudioInVolume = DEFAULT_AUDIO_IN_VOLUME;
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_Private_Function_Prototypes STM32F401 DISCOVERY AUDIO Private Function Prototypes
- * @{
- */
-static uint8_t I2S3_Init(uint32_t AudioFreq);
-static uint8_t I2S2_Init(uint32_t AudioFreq);
-static void PDMDecoder_Init(uint32_t AudioFreq, uint32_t ChnlNbrIn, uint32_t ChnlNbrOut);
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_OUT_Private_Functions STM32F401 DISCOVERY AUDIO OUT Private Functions
- * @{
- */
-
-/**
- * @brief Configures the audio peripherals.
- * @param OutputDevice: OUTPUT_DEVICE_SPEAKER, OUTPUT_DEVICE_HEADPHONE,
- * OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO .
- * @param Volume: Initial volume level (from 0 (Mute) to 100 (Max))
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq)
-{
- uint8_t ret = AUDIO_OK;
-
- /* PLL clock is set depending by the AudioFreq (44.1khz vs 48khz groups) */
- BSP_AUDIO_OUT_ClockConfig(&hAudioOutI2s, AudioFreq, NULL);
-
- /* I2S data transfer preparation:
- Prepare the Media to be used for the audio transfer from memory to I2S peripheral */
- hAudioOutI2s.Instance = I2S3;
- if(HAL_I2S_GetState(&hAudioOutI2s) == HAL_I2S_STATE_RESET)
- {
- /* Init the I2S MSP: this __weak function can be redefined by the application*/
- BSP_AUDIO_OUT_MspInit(&hAudioOutI2s, NULL);
- }
-
- /* I2S data transfer preparation:
- Prepare the Media to be used for the audio transfer from memory to I2S peripheral */
- /* Configure the I2S peripheral */
- if(I2S3_Init(AudioFreq) != AUDIO_OK)
- {
- ret = AUDIO_ERROR;
- }
-
- if(ret == AUDIO_OK)
- {
- /* Retrieve audio codec identifier */
- if(((cs43l22_drv.ReadID(AUDIO_I2C_ADDRESS)) & CS43L22_ID_MASK) == CS43L22_ID)
- {
- /* Initialize the audio driver structure */
- pAudioDrv = &cs43l22_drv;
- }
- else
- {
- ret = AUDIO_ERROR;
- }
- }
-
- if(ret == AUDIO_OK)
- {
- pAudioDrv->Init(AUDIO_I2C_ADDRESS, OutputDevice, Volume, AudioFreq);
- }
-
- return ret;
-}
-
-/**
- * @brief Starts playing audio stream from a data buffer for a determined size.
- * @param pBuffer: Pointer to the buffer
- * @param Size: Number of audio data BYTES.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size)
-{
- /* Call the audio Codec Play function */
- if(pAudioDrv->Play(AUDIO_I2C_ADDRESS, pBuffer, Size) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Update the Media layer and enable it for play */
- HAL_I2S_Transmit_DMA(&hAudioOutI2s, pBuffer, DMA_MAX(Size/AUDIODATA_SIZE));
-
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Sends n-Bytes on the I2S interface.
- * @param pData: Pointer to data address
- * @param Size: Number of data to be written
- */
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size)
-{
- HAL_I2S_Transmit_DMA(&hAudioOutI2s, pData, Size);
-}
-
-/**
- * @brief Pauses the audio file stream. In case of using DMA, the DMA Pause
- * feature is used.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only the
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Pause(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(pAudioDrv->Pause(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer pause function */
- HAL_I2S_DMAPause(&hAudioOutI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Resumes the audio file streaming.
- * WARNING: When calling BSP_AUDIO_OUT_Pause() function for pause, only
- * BSP_AUDIO_OUT_Resume() function should be called for resume (use of BSP_AUDIO_OUT_Play()
- * function for resume could lead to unexpected behavior).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Resume(void)
-{
- /* Call the Audio Codec Pause/Resume function */
- if(pAudioDrv->Resume(AUDIO_I2C_ADDRESS) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Call the Media layer resume function */
- HAL_I2S_DMAResume(&hAudioOutI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Stops audio playing and Power down the Audio Codec.
- * @param Option: could be one of the following parameters
- * - CODEC_PDWN_HW: completely shut down the codec (physically).
- * Then need to reconfigure the Codec after power on.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option)
-{
- /* Call DMA Stop to disable DMA stream before stopping codec */
- HAL_I2S_DMAStop(&hAudioOutI2s);
-
- /* Call Audio Codec Stop function */
- if(pAudioDrv->Stop(AUDIO_I2C_ADDRESS, Option) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- if(Option == CODEC_PDWN_HW)
- {
- /* Wait at least 1ms */
- HAL_Delay(1);
-
- /* Reset the pin */
- HAL_GPIO_WritePin(AUDIO_RESET_GPIO, AUDIO_RESET_PIN, GPIO_PIN_RESET);
- }
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Controls the current audio volume level.
- * @param Volume: Volume level to be set in percentage from 0% to 100% (0 for
- * Mute and 100 for Max volume level).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume)
-{
- /* Call the codec volume control function with converted volume value */
- if(pAudioDrv->SetVolume(AUDIO_I2C_ADDRESS, Volume) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Enables or disables the MUTE mode by software
- * @param Cmd: could be AUDIO_MUTE_ON to mute sound or AUDIO_MUTE_OFF to
- * unmute the codec and restore previous volume level.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd)
-{
- /* Call the Codec Mute function */
- if(pAudioDrv->SetMute(AUDIO_I2C_ADDRESS, Cmd) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Switch dynamically (while audio file is played) the output target
- * (speaker or headphone).
- * @note This function modifies a global variable of the audio codec driver: OutputDev.
- * @param Output: specifies the audio output target: OUTPUT_DEVICE_SPEAKER,
- * OUTPUT_DEVICE_HEADPHONE, OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output)
-{
- /* Call the Codec output Device function */
- if(pAudioDrv->SetOutputMode(AUDIO_I2C_ADDRESS, Output) != 0)
- {
- return AUDIO_ERROR;
- }
- else
- {
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
- }
-}
-
-/**
- * @brief Update the audio frequency.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @note This API should be called after the BSP_AUDIO_OUT_Init() to adjust the
- * audio frequency.
- */
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq)
-{
- /* PLL clock is set depending by the AudioFreq (44.1khz vs 48khz groups) */
- BSP_AUDIO_OUT_ClockConfig(&hAudioOutI2s, AudioFreq, NULL);
-
- /* Update the I2S audio frequency configuration */
- I2S3_Init(AudioFreq);
-}
-
-/**
- * @brief Tx Transfer completed callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- if(hi2s->Instance == I2S3)
- {
- /* Call the user function which will manage directly transfer complete */
- BSP_AUDIO_OUT_TransferComplete_CallBack();
- }
-}
-
-/**
- * @brief Tx Half Transfer completed callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
-{
- if(hi2s->Instance == I2S3)
- {
- /* Manage the remaining file size and new address offset: This function should
- be coded by user (its prototype is already declared in stm32f4_discovery_audio.h) */
- BSP_AUDIO_OUT_HalfTransfer_CallBack();
- }
-}
-
-/**
- * @brief Clock Config.
- * @param hi2s: might be required to set audio peripheral predivider if any.
- * @param AudioFreq: Audio frequency used to play the audio stream.
- * @note This API is called by BSP_AUDIO_OUT_Init() and BSP_AUDIO_OUT_SetFrequency()
- * Being __weak it can be overwritten by the application
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params)
-{
- RCC_PeriphCLKInitTypeDef rccclkinit;
- uint8_t index = 0, freqindex = 0xFF;
-
- for(index = 0; index < 8; index++)
- {
- if(I2SFreq[index] == AudioFreq)
- {
- freqindex = index;
- }
- }
- /* Enable PLLI2S clock */
- HAL_RCCEx_GetPeriphCLKConfig(&rccclkinit);
- /* PLLI2S_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
- if ((freqindex & 0x7) == 0)
- {
- /* I2S clock config
- PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) × (PLLI2SN/PLLM)
- I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
- rccclkinit.PeriphClockSelection = RCC_PERIPHCLK_I2S;
- rccclkinit.PLLI2S.PLLI2SN = I2SPLLN[freqindex];
- rccclkinit.PLLI2S.PLLI2SR = I2SPLLR[freqindex];
- HAL_RCCEx_PeriphCLKConfig(&rccclkinit);
- }
- else
- {
- /* I2S clock config
- PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) × (PLLI2SN/PLLM)
- I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
- rccclkinit.PeriphClockSelection = RCC_PERIPHCLK_I2S;
- rccclkinit.PLLI2S.PLLI2SN = 258;
- rccclkinit.PLLI2S.PLLI2SR = 3;
- HAL_RCCEx_PeriphCLKConfig(&rccclkinit);
- }
-}
-
-/**
- * @brief AUDIO OUT I2S MSP Init.
- * @param hi2s: might be required to set audio peripheral predivider if any.
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- static DMA_HandleTypeDef hdma_i2sTx;
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* Enable I2S3 clock */
- I2S3_CLK_ENABLE();
-
- /*** Configure the GPIOs ***/
- /* Enable I2S GPIO clocks */
- I2S3_SCK_SD_CLK_ENABLE();
- I2S3_WS_CLK_ENABLE();
-
- /* I2S3 pins configuration: WS, SCK and SD pins ----------------------------*/
- GPIO_InitStruct.Pin = I2S3_SCK_PIN | I2S3_SD_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Alternate = I2S3_SCK_SD_WS_AF;
- HAL_GPIO_Init(I2S3_SCK_SD_GPIO_PORT, &GPIO_InitStruct);
-
- GPIO_InitStruct.Pin = I2S3_WS_PIN ;
- HAL_GPIO_Init(I2S3_WS_GPIO_PORT, &GPIO_InitStruct);
-
- /* I2S3 pins configuration: MCK pin */
- I2S3_MCK_CLK_ENABLE();
- GPIO_InitStruct.Pin = I2S3_MCK_PIN;
- HAL_GPIO_Init(I2S3_MCK_GPIO_PORT, &GPIO_InitStruct);
-
- /* Enable the I2S DMA clock */
- I2S3_DMAx_CLK_ENABLE();
-
- if(hi2s->Instance == I2S3)
- {
- /* Configure the hdma_i2sTx handle parameters */
- hdma_i2sTx.Init.Channel = I2S3_DMAx_CHANNEL;
- hdma_i2sTx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_i2sTx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_i2sTx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_i2sTx.Init.PeriphDataAlignment = I2S3_DMAx_PERIPH_DATA_SIZE;
- hdma_i2sTx.Init.MemDataAlignment = I2S3_DMAx_MEM_DATA_SIZE;
- hdma_i2sTx.Init.Mode = DMA_NORMAL;
- hdma_i2sTx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_i2sTx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- hdma_i2sTx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_i2sTx.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_i2sTx.Init.PeriphBurst = DMA_PBURST_SINGLE;
-
- hdma_i2sTx.Instance = I2S3_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hi2s, hdmatx, hdma_i2sTx);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_i2sTx);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&hdma_i2sTx);
- }
-
- /* I2S DMA IRQ Channel configuration */
- HAL_NVIC_SetPriority(I2S3_DMAx_IRQ, AUDIO_OUT_IRQ_PREPRIO, 0);
- HAL_NVIC_EnableIRQ(I2S3_DMAx_IRQ);
-}
-
-/**
- * @brief De-Initializes BSP_AUDIO_OUT MSP.
- * @param hi2s: might be required to set audio peripheral predivider if any.
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- GPIO_InitTypeDef GPIO_InitStruct;
-
- /* I2S DMA IRQ Channel deactivation */
- HAL_NVIC_DisableIRQ(I2S3_DMAx_IRQ);
-
- if(hi2s->Instance == I2S3)
- {
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(hi2s->hdmatx);
- }
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(hi2s);
-
- /* CODEC_I2S pins configuration: SCK and SD pins */
- GPIO_InitStruct.Pin = I2S3_SCK_PIN | I2S3_SD_PIN;
- HAL_GPIO_DeInit(I2S3_SCK_SD_GPIO_PORT, GPIO_InitStruct.Pin);
-
- /* CODEC_I2S pins configuration: WS pin */
- GPIO_InitStruct.Pin = I2S3_WS_PIN;
- HAL_GPIO_DeInit(I2S3_WS_GPIO_PORT, GPIO_InitStruct.Pin);
-
- /* CODEC_I2S pins configuration: MCK pin */
- GPIO_InitStruct.Pin = I2S3_MCK_PIN;
- HAL_GPIO_DeInit(I2S3_MCK_GPIO_PORT, GPIO_InitStruct.Pin);
-
- /* Disable I2S clock */
- I2S3_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the applic
- by surcgarging this __weak function */
-}
-
-/**
- * @brief Manages the DMA full Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- */
-__weak void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
-{
-}
-
-/**
- * @brief Manages the DMA FIFO error event.
- */
-__weak void BSP_AUDIO_OUT_Error_CallBack(void)
-{
-}
-
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Initializes the Audio Codec audio interface (I2S)
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- */
-static uint8_t I2S3_Init(uint32_t AudioFreq)
-{
- /* Initialize the hAudioOutI2s Instance parameter */
- hAudioOutI2s.Instance = I2S3;
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(&hAudioOutI2s);
-
- /* I2S3 peripheral configuration */
- hAudioOutI2s.Init.AudioFreq = AudioFreq;
- hAudioOutI2s.Init.ClockSource = I2S_CLOCK_PLL;
- hAudioOutI2s.Init.CPOL = I2S_CPOL_LOW;
- hAudioOutI2s.Init.DataFormat = I2S_DATAFORMAT_16B;
- hAudioOutI2s.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
- hAudioOutI2s.Init.Mode = I2S_MODE_MASTER_TX;
- hAudioOutI2s.Init.Standard = I2S_STANDARD;
- /* Initialize the I2S peripheral with the structure above */
- if(HAL_I2S_Init(&hAudioOutI2s) != HAL_OK)
- {
- return AUDIO_ERROR;
- }
- else
- {
- return AUDIO_OK;
- }
-}
-
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_IN_Private_Functions STM32F401 DISCOVERY AUDIO IN Private Functions
- * @{
- */
-
-/**
- * @brief Initializes wave recording.
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- * @param BitRes: Audio frequency to be configured for the I2S peripheral.
- * @param ChnlNbr: Audio frequency to be configured for the I2S peripheral.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr)
-{
- /* Configure PLL clock */
- BSP_AUDIO_IN_ClockConfig(&hAudioInI2s, AudioFreq, NULL);
-
- /* Configure the PDM library */
- /* On STM32F401-Discovery a single microphone is mounted, samples are duplicated
- to make stereo audio streams */
- PDMDecoder_Init(AudioFreq, ChnlNbr, 2);
-
- /* Configure the I2S peripheral */
- hAudioInI2s.Instance = I2S2;
- if(HAL_I2S_GetState(&hAudioInI2s) == HAL_I2S_STATE_RESET)
- {
- /* Initialize the I2S Msp: this __weak function can be rewritten by the application */
- BSP_AUDIO_IN_MspInit(&hAudioInI2s, NULL);
- }
-
- /* Configure the I2S2 */
- I2S2_Init(AudioFreq);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Starts audio recording.
- * @param pbuf: Main buffer pointer for the recorded data storing
- * @param size: Current size of the recorded buffer
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Record(uint16_t* pbuf, uint32_t size)
-{
- uint32_t ret = AUDIO_ERROR;
-
- /* Start the process receive DMA */
- HAL_I2S_Receive_DMA(&hAudioInI2s, pbuf, size);
-
- /* Return AUDIO_OK when all operations are correctly done */
- ret = AUDIO_OK;
-
- return ret;
-}
-
-/**
- * @brief Stops audio recording.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Stop(void)
-{
- uint32_t ret = AUDIO_ERROR;
-
- /* Call the Media layer pause function */
- HAL_I2S_DMAStop(&hAudioInI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- ret = AUDIO_OK;
-
- return ret;
-}
-
-/**
- * @brief Pauses the audio file stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Pause(void)
-{
- /* Call the Media layer pause function */
- HAL_I2S_DMAPause(&hAudioInI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Resumes the audio file stream.
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_Resume(void)
-{
- /* Call the Media layer pause/resume function */
- HAL_I2S_DMAResume(&hAudioInI2s);
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Controls the audio in volume level.
- * @param Volume: Volume level to be set in percentage from 0% to 100% (0 for
- * Mute and 100 for Max volume level).
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume)
-{
- /* Set the Global variable AudioInVolume */
- AudioInVolume = Volume;
-
- /* Return AUDIO_OK when all operations are correctly done */
- return AUDIO_OK;
-}
-
-/**
- * @brief Converts audio format from PDM to PCM.
- * @param PDMBuf: Pointer to data PDM buffer
- * @param PCMBuf: Pointer to data PCM buffer
- * @retval AUDIO_OK if correct communication, else wrong communication
- */
-uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf)
-{
- uint16_t AppPDM[INTERNAL_BUFF_SIZE/2];
- uint32_t index = 0;
-
- /* PDM Demux */
- for(index = 0; indexInstance == I2S2)
- {
- /* Configure the hdma_i2sRx handle parameters */
- hdma_i2sRx.Init.Channel = I2S2_DMAx_CHANNEL;
- hdma_i2sRx.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_i2sRx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_i2sRx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_i2sRx.Init.PeriphDataAlignment = I2S2_DMAx_PERIPH_DATA_SIZE;
- hdma_i2sRx.Init.MemDataAlignment = I2S2_DMAx_MEM_DATA_SIZE;
- hdma_i2sRx.Init.Mode = DMA_CIRCULAR;
- hdma_i2sRx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_i2sRx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma_i2sRx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_i2sRx.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_i2sRx.Init.PeriphBurst = DMA_MBURST_SINGLE;
-
- hdma_i2sRx.Instance = I2S2_DMAx_STREAM;
-
- /* Associate the DMA handle */
- __HAL_LINKDMA(hi2s, hdmarx, hdma_i2sRx);
-
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(&hdma_i2sRx);
-
- /* Configure the DMA Stream */
- HAL_DMA_Init(&hdma_i2sRx);
- }
-
- /* I2S DMA IRQ Channel configuration */
- HAL_NVIC_SetPriority(I2S2_DMAx_IRQ, AUDIO_IN_IRQ_PREPRIO, 0);
- HAL_NVIC_EnableIRQ(I2S2_DMAx_IRQ);
-}
-
-/**
- * @brief DeInitializes BSP_AUDIO_IN MSP.
- * @param hi2s: I2S handle
- * @param Params : pointer on additional configuration parameters, can be NULL.
- */
-__weak void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params)
-{
- GPIO_InitTypeDef gpio_init_structure;
-
- /* I2S DMA IRQ Channel deactivation */
- HAL_NVIC_DisableIRQ(I2S2_DMAx_IRQ);
-
- if(hi2s->Instance == I2S2)
- {
- /* Deinitialize the Stream for new transfer */
- HAL_DMA_DeInit(hi2s->hdmarx);
- }
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(hi2s);
-
- /* Disable pins: SCK and SD pins */
- gpio_init_structure.Pin = I2S2_SCK_PIN;
- HAL_GPIO_DeInit(I2S2_SCK_GPIO_PORT, gpio_init_structure.Pin);
- gpio_init_structure.Pin = I2S2_MOSI_PIN;
- HAL_GPIO_DeInit(I2S2_MOSI_GPIO_PORT, gpio_init_structure.Pin);
-
- /* Disable I2S clock */
- I2S2_CLK_DISABLE();
-
- /* GPIO pins clock and DMA clock can be shut down in the applic
- by surcgarging this __weak function */
-}
-
-/**
- * @brief User callback when record buffer is filled.
- */
-__weak void BSP_AUDIO_IN_TransferComplete_CallBack(void)
-{
- /* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled
- to prepare the next buffer pointer and its size. */
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- */
-__weak void BSP_AUDIO_IN_HalfTransfer_CallBack(void)
-{
- /* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled
- to prepare the next buffer pointer and its size. */
-}
-
-/**
- * @brief Audio IN Error callback function.
- */
-__weak void BSP_AUDIO_IN_Error_Callback(void)
-{
- /* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-}
-
-/*******************************************************************************
- Static Functions
-*******************************************************************************/
-
-/**
- * @brief Initializes the PDM library.
- * @param AudioFreq: Audio sampling frequency
- * @param ChnlNbrIn: Number of input audio channels in the PDM buffer
- * @param ChnlNbrOut: Number of desired output audio channels in the resulting PCM buffer
- * Number of audio channels (1: mono; 2: stereo)
- */
-static void PDMDecoder_Init(uint32_t AudioFreq, uint32_t ChnlNbrIn, uint32_t ChnlNbrOut)
-{
- uint32_t index = 0;
-
- /* Enable CRC peripheral to unlock the PDM library */
- __HAL_RCC_CRC_CLK_ENABLE();
-
- for(index = 0; index < ChnlNbrIn; index++)
- {
- /* Init PDM filters */
- PDM_FilterHandler[index].bit_order = PDM_FILTER_BIT_ORDER_LSB;
- PDM_FilterHandler[index].endianness = PDM_FILTER_ENDIANNESS_LE;
- PDM_FilterHandler[index].high_pass_tap = 2122358088;
- PDM_FilterHandler[index].out_ptr_channels = ChnlNbrOut;
- PDM_FilterHandler[index].in_ptr_channels = ChnlNbrIn;
- PDM_Filter_Init((PDM_Filter_Handler_t *)(&PDM_FilterHandler[index]));
-
- /* PDM lib config phase */
- PDM_FilterConfig[index].output_samples_number = AudioFreq/1000;
- PDM_FilterConfig[index].mic_gain = 24;
- PDM_FilterConfig[index].decimation_factor = PDM_FILTER_DEC_FACTOR_64;
- PDM_Filter_setConfig((PDM_Filter_Handler_t *)&PDM_FilterHandler[index], &PDM_FilterConfig[index]);
- }
-}
-
-/**
- * @brief Initializes the Audio Codec audio interface (I2S)
- * @note This function assumes that the I2S input clock (through PLL_R in
- * Devices RevA/Z and through dedicated PLLI2S_R in Devices RevB/Y)
- * is already configured and ready to be used.
- * @param AudioFreq: Audio frequency to be configured for the I2S peripheral.
- */
-static uint8_t I2S2_Init(uint32_t AudioFreq)
-{
- /* Initialize the hAudioInI2s Instance parameter */
- hAudioInI2s.Instance = I2S2;
-
- /* Disable I2S block */
- __HAL_I2S_DISABLE(&hAudioInI2s);
-
- /* I2S2 peripheral configuration */
- hAudioInI2s.Init.AudioFreq = 2 * AudioFreq;
- hAudioInI2s.Init.ClockSource = I2S_CLOCK_PLL;
- hAudioInI2s.Init.CPOL = I2S_CPOL_HIGH;
- hAudioInI2s.Init.DataFormat = I2S_DATAFORMAT_16B;
- hAudioInI2s.Init.MCLKOutput = I2S_MCLKOUTPUT_DISABLE;
- hAudioInI2s.Init.Mode = I2S_MODE_MASTER_RX;
- hAudioInI2s.Init.Standard = I2S_STANDARD_LSB;
-
- /* Initialize the I2S peripheral with the structure above */
- if(HAL_I2S_Init(&hAudioInI2s) != HAL_OK)
- {
- return AUDIO_ERROR;
- }
- else
- {
- return AUDIO_OK;
- }
-}
-
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_IN_OUT_Private_Functions STM32F401 DISCOVERY AUDIO IN OUT Private Functions
- * @{
- */
-
-/**
- * @brief I2S error callbacks.
- * @param hi2s: I2S handle
- */
-void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s)
-{
- /* Manage the error generated on DMA FIFO: This function
- should be coded by user (its prototype is already declared in stm32f401_discovery_audio.h) */
- if(hi2s->Instance == I2S3)
- {
- BSP_AUDIO_OUT_Error_CallBack();
- }
- if(hi2s->Instance == I2S2)
- {
- BSP_AUDIO_IN_Error_Callback();
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_audio.h b/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_audio.h
deleted file mode 100644
index 41a7860081..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_audio.h
+++ /dev/null
@@ -1,254 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f401_discovery_audio.h
- * @author MCD Application Team
- * @brief This file contains the common defines and functions prototypes for
- * stm32f401_discovery_audio.c driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F401_DISCOVERY_AUDIO_H
-#define __STM32F401_DISCOVERY_AUDIO_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-/* Include audio component Driver */
-#include "../Components/cs43l22/cs43l22.h"
-#include "stm32f401_discovery.h"
-#include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F401_DISCOVERY
- * @{
- */
-
-/** @addtogroup STM32F401_DISCOVERY_AUDIO
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_Exported_Types STM32F401 DISCOVERY AUDIO Exported Types
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_OUT_Exported_Constants STM32F401 DISCOVERY AUDIO OUT Exported Constants
- * @{
- */
-
-/*------------------------------------------------------------------------------
- AUDIO OUT CONFIGURATION
-------------------------------------------------------------------------------*/
-
-/* I2S peripheral configuration defines */
-#define I2S3 SPI3
-#define I2S3_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
-#define I2S3_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
-#define I2S3_SCK_SD_WS_AF GPIO_AF6_SPI3
-#define I2S3_SCK_SD_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define I2S3_MCK_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define I2S3_WS_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
-#define I2S3_WS_PIN GPIO_PIN_4
-#define I2S3_SCK_PIN GPIO_PIN_10
-#define I2S3_SD_PIN GPIO_PIN_12
-#define I2S3_MCK_PIN GPIO_PIN_7
-#define I2S3_SCK_SD_GPIO_PORT GPIOC
-#define I2S3_WS_GPIO_PORT GPIOA
-#define I2S3_MCK_GPIO_PORT GPIOC
-
-/* I2S DMA Stream definitions */
-#define I2S3_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define I2S3_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE()
-#define I2S3_DMAx_STREAM DMA1_Stream7
-#define I2S3_DMAx_CHANNEL DMA_CHANNEL_0
-#define I2S3_DMAx_IRQ DMA1_Stream7_IRQn
-#define I2S3_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
-#define I2S3_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
-#define DMA_MAX_SZE 0xFFFF
-
-#define I2S3_IRQHandler DMA1_Stream7_IRQHandler
-
-/* Select the interrupt preemption priority and subpriority for the DMA interrupt */
-#define AUDIO_OUT_IRQ_PREPRIO 0x0E /* Select the preemption priority level(0 is the highest) */
-
-/*------------------------------------------------------------------------------
- AUDIO IN CONFIGURATION
-------------------------------------------------------------------------------*/
-/* SPI Configuration defines */
-#define I2S2 SPI2
-#define I2S2_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE()
-#define I2S2_CLK_DISABLE() __HAL_RCC_SPI2_CLK_DISABLE()
-#define I2S2_SCK_PIN GPIO_PIN_10
-#define I2S2_SCK_GPIO_PORT GPIOB
-#define I2S2_SCK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-#define I2S2_SCK_AF GPIO_AF5_SPI2
-
-#define I2S2_MOSI_PIN GPIO_PIN_3
-#define I2S2_MOSI_GPIO_PORT GPIOC
-#define I2S2_MOSI_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
-#define I2S2_MOSI_AF GPIO_AF5_SPI2
-
-/* I2S DMA Stream Rx definitions */
-#define I2S2_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
-#define I2S2_DMAx_CLK_DISABLE() __HAL_RCC_DMA1_CLK_DISABLE()
-#define I2S2_DMAx_STREAM DMA1_Stream3
-#define I2S2_DMAx_CHANNEL DMA_CHANNEL_0
-#define I2S2_DMAx_IRQ DMA1_Stream3_IRQn
-#define I2S2_DMAx_PERIPH_DATA_SIZE DMA_PDATAALIGN_HALFWORD
-#define I2S2_DMAx_MEM_DATA_SIZE DMA_MDATAALIGN_HALFWORD
-
-#define I2S2_IRQHandler DMA1_Stream3_IRQHandler
-
-/* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */
-#define AUDIO_IN_IRQ_PREPRIO 0x0F /* Select the preemption priority level(0 is the highest) */
-
-/*------------------------------------------------------------------------------
- CONFIGURATION: Audio Driver Configuration parameters
-------------------------------------------------------------------------------*/
-
-#define AUDIODATA_SIZE 2 /* 16-bits audio data size */
-
-/* Audio status definition */
-#define AUDIO_OK 0
-#define AUDIO_ERROR 1
-#define AUDIO_TIMEOUT 2
-
-/* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */
-#define DEFAULT_AUDIO_IN_FREQ I2S_AUDIOFREQ_16K
-#define DEFAULT_AUDIO_IN_BIT_RESOLUTION 16
-#define DEFAULT_AUDIO_IN_CHANNEL_NBR 1 /* Mono = 1, Stereo = 2 */
-#define DEFAULT_AUDIO_IN_VOLUME 64
-
-/* PDM buffer input size */
-#define INTERNAL_BUFF_SIZE 128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR
-/* PCM buffer output size */
-#define PCM_OUT_SIZE DEFAULT_AUDIO_IN_FREQ/1000
-#define CHANNEL_DEMUX_MASK 0x55
-
-/*------------------------------------------------------------------------------
- OPTIONAL Configuration defines parameters
-------------------------------------------------------------------------------*/
-
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_Exported_Variables STM32F401 DISCOVERY AUDIO Exported Variables
- * @{
- */
-extern __IO uint16_t AudioInVolume;
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_Exported_Macros STM32F401 DISCOVERY AUDIO Exported Macros
- * @{
- */
-#define DMA_MAX(_X_) (((_X_) <= DMA_MAX_SZE)? (_X_):DMA_MAX_SZE)
-#define HTONS(A) ((((uint16_t)(A) & 0xff00) >> 8) | (((uint16_t)(A) & 0x00ff) << 8))
-
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_OUT_Exported_Functions STM32F401 DISCOVERY AUDIO OUT Exported Functions
- * @{
- */
-uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
-uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size);
-void BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size);
-uint8_t BSP_AUDIO_OUT_Pause(void);
-uint8_t BSP_AUDIO_OUT_Resume(void);
-uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option);
-uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume);
-void BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq);
-uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd);
-uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output);
-
-/* User Callbacks: user has to implement these functions in his code if they are needed. */
-/* This function is called when the requested data has been completely transferred. */
-void BSP_AUDIO_OUT_TransferComplete_CallBack(void);
-
-/* This function is called when half of the requested buffer has been transferred. */
-void BSP_AUDIO_OUT_HalfTransfer_CallBack(void);
-
-/* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-void BSP_AUDIO_OUT_Error_CallBack(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
-void BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
-void BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
-
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_AUDIO_IN_Exported_Functions STM32F401 DISCOVERY AUDIO IN Exported Functions
- * @{
- */
-uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
-uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size);
-uint8_t BSP_AUDIO_IN_Stop(void);
-uint8_t BSP_AUDIO_IN_Pause(void);
-uint8_t BSP_AUDIO_IN_Resume(void);
-uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume);
-uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf);
-/* User Callbacks: user has to implement these functions in his code if they are needed. */
-/* This function should be implemented by the user application.
- It is called into this driver when the current buffer is filled to prepare the next
- buffer pointer and its size. */
-void BSP_AUDIO_IN_TransferComplete_CallBack(void);
-void BSP_AUDIO_IN_HalfTransfer_CallBack(void);
-
-/* This function is called when an Interrupt due to transfer error on or peripheral
- error occurs. */
-void BSP_AUDIO_IN_Error_Callback(void);
-
-/* These function can be modified in case the current settings (e.g. DMA stream)
- need to be changed for specific application needs */
-void BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
-void BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
-void BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F401_DISCOVERY_AUDIO_H */
diff --git a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_gyroscope.c b/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_gyroscope.c
deleted file mode 100644
index 5d5c10fbc3..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_gyroscope.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f401_discovery_gyroscope.c
- * @author MCD Application Team
- * @brief This file provides a set of functions needed to manage the
- * MEMS gyroscope available on STM32F401-Discovery Kit.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f401_discovery_gyroscope.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F401_DISCOVERY
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE STM32F401 DISCOVERY GYROSCOPE
- * @{
- */
-
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Private_TypesDefinitions STM32F401 DISCOVERY GYROSCOPE Private TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Private_Defines STM32F401 DISCOVERY GYROSCOPE Private Defines
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Private_Macros STM32F401 DISCOVERY GYROSCOPE Private Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Private_Variables STM32F401 DISCOVERY GYROSCOPE Private Variables
- * @{
- */
-static GYRO_DrvTypeDef *GyroscopeDrv;
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Private_FunctionPrototypes STM32F401 DISCOVERY GYROSCOPE Private FunctionPrototypes
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Private_Functions STM32F401 DISCOVERY GYROSCOPE Private Functions
- * @{
- */
-
-/**
- * @brief Set Gyroscope Initialization.
- * @retval GYRO_OK if no problem during initialization
- */
-uint8_t BSP_GYRO_Init(void)
-{
- uint8_t ret = GYRO_ERROR;
- uint16_t ctrl = 0x0000;
- GYRO_InitTypeDef L3GD20_InitStructure;
- GYRO_FilterConfigTypeDef L3GD20_FilterStructure = {0,0};
-
- if((L3gd20Drv.ReadID() == I_AM_L3GD20) || (L3gd20Drv.ReadID() == I_AM_L3GD20_TR))
- {
- /* Initialize the Gyroscope driver structure */
- GyroscopeDrv = &L3gd20Drv;
-
- /* MEMS configuration ----------------------------------------------------*/
- /* Fill the Gyroscope structure */
- L3GD20_InitStructure.Power_Mode = L3GD20_MODE_ACTIVE;
- L3GD20_InitStructure.Output_DataRate = L3GD20_OUTPUT_DATARATE_1;
- L3GD20_InitStructure.Axes_Enable = L3GD20_AXES_ENABLE;
- L3GD20_InitStructure.Band_Width = L3GD20_BANDWIDTH_4;
- L3GD20_InitStructure.BlockData_Update = L3GD20_BlockDataUpdate_Continous;
- L3GD20_InitStructure.Endianness = L3GD20_BLE_LSB;
- L3GD20_InitStructure.Full_Scale = L3GD20_FULLSCALE_500;
-
- /* Configure MEMS: data rate, power mode, full scale and axes */
- ctrl = (uint16_t) (L3GD20_InitStructure.Power_Mode | L3GD20_InitStructure.Output_DataRate | \
- L3GD20_InitStructure.Axes_Enable | L3GD20_InitStructure.Band_Width);
-
- ctrl |= (uint16_t) ((L3GD20_InitStructure.BlockData_Update | L3GD20_InitStructure.Endianness | \
- L3GD20_InitStructure.Full_Scale) << 8);
-
- /* Configure the Gyroscope main parameters */
- GyroscopeDrv->Init(ctrl);
-
- L3GD20_FilterStructure.HighPassFilter_Mode_Selection =L3GD20_HPM_NORMAL_MODE_RES;
- L3GD20_FilterStructure.HighPassFilter_CutOff_Frequency = L3GD20_HPFCF_0;
-
- ctrl = (uint8_t) ((L3GD20_FilterStructure.HighPassFilter_Mode_Selection |\
- L3GD20_FilterStructure.HighPassFilter_CutOff_Frequency));
-
- /* Configure the Gyroscope main parameters */
- GyroscopeDrv->FilterConfig(ctrl) ;
-
- GyroscopeDrv->FilterCmd(L3GD20_HIGHPASSFILTER_ENABLE);
-
- ret = GYRO_OK;
- }
- return ret;
-}
-
-/**
- * @brief Read ID of Gyroscope component.
- * @retval ID
- */
-uint8_t BSP_GYRO_ReadID(void)
-{
- uint8_t id = 0x00;
-
- if(GyroscopeDrv->ReadID != NULL)
- {
- id = GyroscopeDrv->ReadID();
- }
- return id;
-}
-
-/**
- * @brief Reboot memory content of Gyroscope.
- */
-void BSP_GYRO_Reset(void)
-{
- if(GyroscopeDrv->Reset != NULL)
- {
- GyroscopeDrv->Reset();
- }
-}
-
-/**
- * @brief Configures INT1 interrupt.
- * @param pIntConfig: pointer to a L3GD20_InterruptConfig_TypeDef
- * structure that contains the configuration setting for the L3GD20 Interrupt.
- */
-void BSP_GYRO_ITConfig(GYRO_InterruptConfigTypeDef *pIntConfig)
-{
- uint16_t interruptconfig = 0x0000;
-
- if(GyroscopeDrv->ConfigIT != NULL)
- {
- /* Configure latch Interrupt request and axe interrupts */
- interruptconfig |= ((uint8_t)(pIntConfig->Latch_Request| \
- pIntConfig->Interrupt_Axes) << 8);
-
- interruptconfig |= (uint8_t)(pIntConfig->Interrupt_ActiveEdge);
-
- GyroscopeDrv->ConfigIT(interruptconfig);
- }
-}
-
-/**
- * @brief Enables INT1 or INT2 interrupt.
- * @param IntPin: Interrupt pin
- * This parameter can be:
- * @arg L3GD20_INT1
- * @arg L3GD20_INT2
- */
-void BSP_GYRO_EnableIT(uint8_t IntPin)
-{
- if(GyroscopeDrv->EnableIT != NULL)
- {
- GyroscopeDrv->EnableIT(IntPin);
- }
-}
-
-/**
- * @brief Disables INT1 or INT2 interrupt.
- * @param IntPin: Interrupt pin
- * This parameter can be:
- * @arg L3GD20_INT1
- * @arg L3GD20_INT2
- */
-void BSP_GYRO_DisableIT(uint8_t IntPin)
-{
- if(GyroscopeDrv->DisableIT != NULL)
- {
- GyroscopeDrv->DisableIT(IntPin);
- }
-}
-
-/**
- * @brief Get XYZ angular acceleration.
- * @param pfData: pointer on floating array
- */
-void BSP_GYRO_GetXYZ(float *pfData)
-{
- if(GyroscopeDrv->GetXYZ!= NULL)
- {
- GyroscopeDrv->GetXYZ(pfData);
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_gyroscope.h b/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_gyroscope.h
deleted file mode 100644
index be753857a3..0000000000
--- a/Drivers/BSP/STM32F401-Discovery/stm32f401_discovery_gyroscope.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- ******************************************************************************
- * @file stm32f401_discovery_gyroscope.h
- * @author MCD Application Team
- * @brief This file contains definitions for stm32f401_discovery_gyroscope.c
- * firmware driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F401_DISCOVERY_GYROSCOPE_H
-#define __STM32F401_DISCOVERY_GYROSCOPE_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f401_discovery.h"
-
- /* Include Gyroscope component driver */
-#include "../Components/l3gd20/l3gd20.h"
-
-/** @addtogroup BSP
- * @{
- */
-
-/** @addtogroup STM32F401_DISCOVERY
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE STM32F401 DISCOVERY GYROSCOPE
- * @{
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Exported_Types STM32F401 DISCOVERY GYROSCOPE Exported Types
- * @{
- */
-typedef enum
-{
- GYRO_OK = 0,
- GYRO_ERROR = 1,
- GYRO_TIMEOUT = 2
-}GYRO_StatusTypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Exported_Constants STM32F401 DISCOVERY GYROSCOPE Exported Constants
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Exported_Macros STM32F401 DISCOVERY GYROSCOPE Exported Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup STM32F401_DISCOVERY_GYROSCOPE_Exported_Functions STM32F401 DISCOVERY GYROSCOPE Exported Functions
- * @{
- */
-/* Gyroscope Functions */
-uint8_t BSP_GYRO_Init(void);
-void BSP_GYRO_Reset(void);
-uint8_t BSP_GYRO_ReadID(void);
-void BSP_GYRO_ITConfig(GYRO_InterruptConfigTypeDef *pIntConfigStruct);
-void BSP_GYRO_EnableIT(uint8_t IntPin);
-void BSP_GYRO_DisableIT(uint8_t IntPin);
-void BSP_GYRO_GetXYZ(float *pfData);
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* __STM32F401_DISCOVERY_GYROSCOPE_H */
diff --git a/Drivers/BSP/STM32F411E-Discovery b/Drivers/BSP/STM32F411E-Discovery
new file mode 160000
index 0000000000..c7de631ade
--- /dev/null
+++ b/Drivers/BSP/STM32F411E-Discovery
@@ -0,0 +1 @@
+Subproject commit c7de631adeb20ecd2097581ab22e88d316a8bdb3
diff --git a/Drivers/BSP/STM32F411E-Discovery/LICENSE.md b/Drivers/BSP/STM32F411E-Discovery/LICENSE.md
deleted file mode 100644
index 479c4f6826..0000000000
--- a/Drivers/BSP/STM32F411E-Discovery/LICENSE.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright 2017 STMicroelectronics.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors
-may be used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Drivers/BSP/STM32F411E-Discovery/README.md b/Drivers/BSP/STM32F411E-Discovery/README.md
deleted file mode 100644
index 60552f90fd..0000000000
--- a/Drivers/BSP/STM32F411E-Discovery/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# BSP STM32F411E-DISCOVERY Component
-
-![latest tag](https://img.shields.io/github/v/tag/STMicroelectronics/stm32f411e-discovery.svg?color=brightgreen)
-
-## Overview
-
-**STM32Cube** is an STMicroelectronics original initiative to ease developers' life by reducing efforts, time and cost.
-
-**STM32Cube** covers the overall STM32 products portfolio. It includes a comprehensive embedded software platform delivered for each STM32 series.
- * The CMSIS modules (core and device) corresponding to the ARM(tm) core implemented in this STM32 product.
- * The STM32 HAL-LL drivers, an abstraction layer offering a set of APIs ensuring maximized portability across the STM32 portfolio.
- * The BSP drivers of each evaluation, demonstration or nucleo board provided for this STM32 series.
- * A consistent set of middleware libraries such as RTOS, USB, FatFS, graphics, touch sensing library...
- * A full set of software projects (basic examples, applications, and demonstrations) for each board provided for this STM32 series.
-
-Two models of publication are proposed for the STM32Cube embedded software:
- * The monolithic **MCU Package**: all STM32Cube software modules of one STM32 series are present (Drivers, Middleware, Projects, Utilities) in the repository (usual name **STM32Cubexx**, xx corresponding to the STM32 series).
- * The **MCU component**: each STM32Cube software module being part of the STM32Cube MCU Package, is delivered as an individual repository, allowing the user to select and get only the required software functions.
-
-## Description
-
-This **stm32f411e-discovery** MCU component repository is one element of the **STM32CubeF4** MCU embedded software package, providing the **STM32F411E-DISCOVERY** BSP BOARD component part.
-
-## Release note
-
-Details about the content of this release are available in the release note [here](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/stm32f411e-discovery/blob/main/Release_Notes.html).
-
-## Compatibility information
-
-Below is the list of the BSP *component* drivers to be used with this BSP *board* driver. It is **crucial** that you use a consistent set of CMSIS - HAL - BSP versions, as mentioned in [this](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/STM32CubeF4/blob/master/Release_Notes.html) release note.
-
-* [stm32-bsp-common](https://github.com/STMicroelectronics/stm32-bsp-common)
-* [stm32-cs43l22](https://github.com/STMicroelectronics/stm32-cs43l22)
-* [stm32-i3g4250d](https://github.com/STMicroelectronics/stm32-i3g4250d)
-* [stm32-l3gd20](https://github.com/STMicroelectronics/stm32-l3gd20)
-* [stm32-lsm303agr](https://github.com/STMicroelectronics/stm32-lsm303agr)
-* [stm32-lsm303dlhc](https://github.com/STMicroelectronics/stm32-lsm303dlhc)
-
-## Troubleshooting
-
-Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) guide.
diff --git a/Drivers/BSP/STM32F411E-Discovery/Release_Notes.html b/Drivers/BSP/STM32F411E-Discovery/Release_Notes.html
deleted file mode 100644
index 580ff84457..0000000000
--- a/Drivers/BSP/STM32F411E-Discovery/Release_Notes.html
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
-
-
- Release Notes for STM32F411E-Discovery Board Drivers
-
-
-
-
-
-
-
This directory contains the board drivers to demonstrate the capabilities of the STM32F429 Discovery Board Drivers.
-
-
-
Update History
-
-
-
-
Main Changes
-
-
Update Release_Notes.html to support new format
-
Update touch calibration to fix inverted touch panel on STM32F429I-DISCOVERY
-
-
-
-
-
-
-
Main Changes
-
-
Update to support the I3G4250D gyroscope component
-
All source files: update disclaimer to add reference to the new license agreement
-
-
-
-
-
-
-
Main Changes
-
-
Remove Date & Version
-
stm32f429i_discovery_lcd.c/.h
-
-
Update BSP_LCD_DrawBitmap() API to fix functional misbehaviour with SW4STM32 Toolchain
-
-
-
-
-
-
-
-
Main Changes
-
-
Replace __PPP_CLK_ENABLE/DISABLE with __HAL_RCC_PPP_ENABLE/DISABLE
-
Set NVIC priority to 0x0F
-
stm32f429i_discovery_lcd.c/.h
-
-
Update BSP_LCD_ReadPixel implementation for ARGB8888 and RGB888 formats
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f429i_discovery_lcd.c/.h
-
-
Provide BSP full coverage for the LTDC reload HW capabilities (Immediate reload , Vertical Blanking Reload , No reload)
-
-
BSP_LCD_Relaod() to disable the color keying without reloading
-
BSP_LCD_SetLayerVisible_NoReload() to set an LCD Layer visible without reloading
-
BSP_LCD_SetTransparency_NoReload() to configure the transparency without reloading
-
BSP_LCD_SetLayerAddress_NoReload() to set an LCD layer frame buffer address without reloading
-
BSP_LCD_SetLayerWindow_NoReload() to set display window without reloading
-
BSP_LCD_SetColorKeying_NoReload() to configure and sets the color keying without reloading
-
BSP_LCD_ResetColorKeying_NoReload() to disables the color keying without reloading
-
-
-
-
-
-
-
-
-
Main Changes
-
-
General updates to fix doxygen errors
-
Add STM32429I_EVAL_BSP_User_Manual.chm file
-
-
-
-
-
-
-
Main Changes
-
-
stm32f429i_discovery.c/.h
-
-
Align to STM32F4xx HAL Driver V1.3.0 for __HAL_RCC_PPP_CLK_ENABLE() .
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f429i_discovery.c/.h
-
-
Change I2C_SPEED used define by BSP_I2C_SPEED
-
-
stm32f429i_discovery_sdram.c
-
-
BSP_SDRAM_Initialization_sequence(): Fix wrong configuration of the burst length
-
-
stm32f429i_discovery_gyroscope.h, stm32f429i_discovery_io.h,stm32f429i_discovery_lcd.c/.h and stm32f429i_discovery_ts.h:
-
-
Change “" byâ€/" in the include path to fix compilation issue under Linux
-
-
Miscellaneous comments update
-
-
-
-
-
-
-
Main Changes
-
-
stm32f429i_discovery.c/.h
-
-
Add protection for double initialization of IO_Init within LCD_IO_Init()
-
Enhance BSP_PB_Init() function by removing the call of __SYSCFG_CLK_ENABLE() already enabled in the HAL_GPIO_Init()
-
-
stm32f429i_discovery_gyroscope.c/.h
-
-
Update BSP_GYRO_Init() to support new L3GD20 device ID (I_AM_L3GD20_TR)
-
-
stm32f429i_discovery_ts.c/.h
-
-
Correct wrong TS configuration BSP_TS_ITConfig() and TS IT implementation, BSP_TS_ITClear() related to the use of IO expander STMPE1600 device not available on stm32f429i discovery board
-
Comments clean up and typo corrections
-
-
stm32f429i_discovery_eeprom.c/.h
-
-
Update usage of BSP_EEPROM_TIMEOUT_UserCallback() function
-
-
-
-
-
-
-
-
Main Changes
-
-
stm32f429i_discovery_eeprom.c/.h
-
-
Update usage of BSP_EEPROM_TIMEOUT_UserCallback() function
-
-
-
-
-
-
-
-
Main Changes
-
-
Major update based on STM32Cube specification: drivers architecture and APIs modified vs. V1.0.2, and thus the 2 versions are not compatible.
-
This version has to be used only with STM32CubeF4 based development
-
-
-
-
-
-
-
Main Changes
-
-
Update IO expander interrupt line on stm32f429i_discovery_ioe.h file.
Set SPI baudrate to 5.625 MHz to fit LCD and Gyroscope timing characteristics
-
-
ILI9341 LCD SPI interface max baud rate is 10MHz for write and 6.66MHz for read
-
Gyroscope l3gd20 SPI interface max baud rate is 10MHz for write/read
-
-
-
stm32f429i_discovery_lcd.c
-
-
Improve SPI low level write routines (add check on BSY flag before to deselect the LCD)
-
Remove the __IO attribute from these function’s parameters: LCD_SetLayer(), LCD_SetColors(), LCD_GetColors(), LCD_SetTextColor() and LCD_SetBackColor()
minor enhancement; Avoid infinite loop in case device descriptor length is wrongly set to zero
+
+
+
MSC Class
+
+
+
Add support of multi-LUN storage devices
+
+
+
Report error for non-ready media
+
+
+
Audio Class
+
+
+
Report error for unsupported audio sample rate
+
+
+
CDC Class
+
+
+
Ensure that only short packet or ZLP can stop receiving
+
+
+
+
+
+
+
Main Changes
@@ -104,7 +146,7 @@
Main Changes
Core
-
fix potential corruption of Endpoints MaxPacketSize
+
Fix potential corruption of Endpoints MaxPacketSize
HID Class
diff --git a/Middlewares/Third_Party/FatFs/src/st_readme.txt b/Middlewares/Third_Party/FatFs/src/st_readme.txt
index 6c1d38aac5..b499318dbe 100644
--- a/Middlewares/Third_Party/FatFs/src/st_readme.txt
+++ b/Middlewares/Third_Party/FatFs/src/st_readme.txt
@@ -22,6 +22,34 @@
### V2.1.5/18-08-2023 ###
============================
+ Add LICENSE.md file at the root directory.
++ Fix in disk_initialize() function, the "is_initialized" flag to be set 1 after checking the driver's return value.
+ - src\diskio.c
+
++ Fix read/write sector size cast type in USBH_ioctl().
+ - src\drivers\usbh_diskio_template.c
+ - src\drivers\usbh_diskio_dma_template.c
+
++ Fix declaration of the "ret" parameter in SD_read()
+ - src\drivers\sd_diskio_dma_rtos_template_bspv1.c
+
++ Set “ReadStatus†variable to zero before calling BSP_SD_ReadBlocks_DMA()
+ - src\drivers\sd_diskio_dma_template_bspv1.c
+
++ Fix typo error in SD_Write() where READ_CPLT_MSG is used instead of WRITE_CPLT_MSG
+ - src\drivers\sd_diskio_dma_rtos_template_bspv1.c
+ - src\drivers\sd_diskio_dma_rtos_template_bspv2.c
+
++ Use local variable to store function call return values
+ - src\drivers\sd_diskio_dma_template_bspv1.c
+ - src\drivers\sd_diskio_dma_template_bspv2.c
+ - src\drivers\sd_diskio_dma_rtos_template_bspv1.c
+ - src\drivers\sd_diskio_dma_rtos_template_bspv2.c
+
++ Use 32-byte aligned scratch buffer, in SD_read() and SD_write, to match CPU cache alignment.
+ - src\drivers\sd_diskio_dma_template_bspv1.c
+ - src\drivers\sd_diskio_dma_template_bspv2.c
+ - src\drivers\sd_diskio_dma_rtos_template_bspv1.c
+ - src\drivers\sd_diskio_dma_rtos_template_bspv2.c
### V2.1.4/18-10-2019 ###
============================
diff --git a/Projects/Release_Notes.html b/Projects/Release_Notes.html
index d9d0291169..ce5ebe53e1 100644
--- a/Projects/Release_Notes.html
+++ b/Projects/Release_Notes.html
@@ -47,10 +47,389 @@
Purpose
Update History
-
+
Main Changes
+
Applications MW LwIP
+
+
Fix Confusing comment in ethernet_if.
+
Fix Wrong use of DHCP API in application code & ethernet_link_thread() API.
+
Fix Ethernet low_level_init() API does not handle return code from LAN8742_init() API.
+
+
Examples I2C
+
+
Fix wrong check condition on HAL_TIMEOUT: this value is no longer returned by the HAL_I2C_IsDeviceReady() API.
+
+
+
Contents
+
Projects
+
+
+
+
Board
+
Project category
+
Version
+
Path
+
+
+
+
+
STM32469I-EVAL
+
Demonstrations
+
v1.28.1
+
Projects/STM32469I-EVAL/Demonstrations
+
+
+
STM32469I-EVAL
+
Applications
+
v1.28.1
+
Projects/STM32469I-EVAL/Applications
+
+
+
STM32469I-EVAL
+
HAL Examples
+
v1.28.1
+
Projects/STM32469I-EVAL/Examples
+
+
+
STM32469I-EVAL
+
HAL Templates
+
v1.28.1
+
Projects/STM32469I-EVAL/Templates
+
+
+
STM32469I-EVAL
+
LL Templates
+
v1.28.1
+
Projects/STM32469I-EVAL/Templates_LL
+
+
+
STM32469I-Discovery
+
Demonstrations
+
v1.28.1
+
Projects/STM32469I-Discovery/Demonstrations
+
+
+
STM32469I-Discovery
+
Applications
+
v1.28.1
+
Projects/STM32469I-Discovery/Applications
+
+
+
STM32469I-Discovery
+
HAL Examples
+
v1.28.1
+
Projects/STM32469I-Discovery/Examples
+
+
+
STM32469I-Discovery
+
HAL Templates
+
v1.28.1
+
Projects/STM32469I-Discovery/Templates
+
+
+
STM32469I-Discovery
+
LL Templates
+
v1.28.1
+
Projects/STM32469I-Discovery/Templates_LL
+
+
+
STM32446E-EVAL
+
Demonstrations
+
v1.28.1
+
Projects/STM32446E-EVAL/Demonstrations
+
+
+
STM32446E-EVAL
+
Applications
+
v1.28.1
+
Projects/STM32446E-EVAL/Applications
+
+
+
STM32446E-EVAL
+
HAL Examples
+
v1.28.1
+
Projects/STM32446E-EVAL/Examples
+
+
+
STM32446E-EVAL
+
HAL Templates
+
v1.28.1
+
Projects/STM32446E-EVAL/Templates
+
+
+
STM32446E-EVAL
+
LL Templates
+
v1.28.1
+
Projects/STM32446E-EVAL/Templates_LL
+
+
+
STM324xG-EVAL
+
Demonstrations
+
v1.28.1
+
Projects/STM324xG-EVAL/Demonstrations
+
+
+
STM324xG-EVAL
+
Applications
+
v1.28.1
+
Projects/STM324xG-EVAL/Applications
+
+
+
STM324xG-EVAL
+
HAL Examples
+
v1.28.1
+
Projects/STM324xG-EVAL/Examples
+
+
+
STM324xG-EVAL
+
HAL Templates
+
v1.28.1
+
Projects/STM324xG-EVAL/Templates
+
+
+
STM324xG-EVAL
+
LL Templates
+
v1.28.1
+
Projects/STM324xG-EVAL/Templates_LL
+
+
+
STM32F4-Discovery
+
Demonstrations
+
v1.28.1
+
Projects/STM32F4-Discovery/Demonstrations
+
+
+
STM32F4-Discovery
+
Applications
+
v1.28.1
+
Projects/STM32F4-Discovery/Applications
+
+
+
STM32F4-Discovery
+
HAL Examples
+
v1.28.1
+
Projects/STM32F4-Discovery/Examples
+
+
+
STM32F4-Discovery
+
HAL Templates
+
v1.28.1
+
Projects/STM32F4-Discovery/Templates
+
+
+
STM32F4-Discovery
+
LL Templates
+
v1.28.1
+
Projects/STM32F4-Discovery/Templates_LL
+
+
+
STM32F401-Discovery
+
Applications
+
v1.28.1
+
Projects/STM32F401-Discovery/Applications
+
+
+
STM32F401-Discovery
+
HAL Examples
+
v1.28.1
+
Projects/STM32F401-Discovery/Examples
+
+
+
STM32F401-Discovery
+
Demonstrations
+
v1.28.1
+
Projects/STM32F401-Discovery/Demonstrations
+
+
+
STM32F401-Discovery
+
HAL Templates
+
v1.28.1
+
Projects/STM32F401-Discovery/Templates
+
+
+
STM32F401-Discovery
+
LL Templates
+
v1.28.1
+
Projects/STM32F401-Discovery/Templates_LL
+
+
+
STM32F429I-Discovery
+
Demonstrations
+
v1.28.1
+
Projects/STM32F429I-Discovery/Demonstrations
+
+
+
STM32F429I-Discovery
+
Applications
+
v1.28.1
+
Projects/STM32F429I-Discovery/Applications
+
+
+
STM32F429I-Discovery
+
HAL Examples
+
v1.28.1
+
Projects/STM32F429I-Discovery/Examples
+
+
+
STM32F429I-Discovery
+
HAL Templates
+
v1.28.1
+
Projects/STM32F429I-Discovery/Templates
+
+
+
STM32F429I-Discovery
+
LL Templates
+
v1.28.1
+
Projects/STM32F429I-Discovery/Templates_LL
+
+
+
STM32412G-Discovery
+
Demonstrations
+
v1.28.1
+
Projects/STM32412G-Discovery/Demonstrations
+
+
+
STM32412G-Discovery
+
Applications
+
v1.28.1
+
Projects/STM32412G-Discovery/Applications
+
+
+
STM32412G-Discovery
+
HAL Examples
+
v1.28.1
+
Projects/STM32412G-Discovery/Examples
+
+
+
STM32412G-Discovery
+
HAL Templates
+
v1.28.1
+
Projects/STM32412G-Discovery/Templates
+
+
+
STM32412G-Discovery
+
LL Templates
+
v1.28.1
+
Projects/STM32412G-Discovery/Templates_LL
+
+
+
STM32F413H-Discovery
+
Demonstrations
+
v1.28.1
+
Projects/STM32F413H-Discovery/Demonstrations
+
+
+
STM32F413H-Discovery
+
Applications
+
v1.28.1
+
Projects/STM32F413H-Discovery/Applications
+
+
+
STM32F413H-Discovery
+
HAL Examples
+
v1.28.1
+
Projects/STM32F413H-Discovery/Examples
+
+
+
STM32F413H-Discovery
+
HAL Templates
+
v1.28.1
+
Projects/STM32F413H-Discovery/Templates
+
+
+
STM32F413H-Discovery
+
LL Templates
+
v1.28.1
+
Projects/STM32F413H-Discovery/Templates_LL
+
+
+
+
+
+
Known Limitations
+
+
USB_Device_Standalone application for STM324x9I_EVAL
+
+
MDK-ARM and STM32CubeIDE projects are provided with optimization set to None, to avoid audio glitch when USB cable is disconnected
+
+
STemWin demonstration for STM32F413H-Discovery
+
+
Issue on audio recorder module with MDK-ARM, to be fixed for next releases.
+
+
The following STM32CubeIDE projects include only Release configuration :
+
STM32F413ZHT6U and STM32F413H-Discovery board RevD
-
Backward Compatibility
+
Backward Compatibility
None
-
Main Changes
+
Main Changes
Add new STemWin applications and demonstrations and TouchGFX demonstrations for STM32F4x9I_EVAL, STM32F429I-Discovery, STM32F469_EVAL and STM32F469-Discovery platforms.
Update applications to refer to the new PDM libraries:
@@ -1924,9 +2303,9 @@
Main Changes
libPDMFilter_CM4_Keil.lib updated and renamed to libPDMFilter_CM4_Keil_wc16.lib for MDK-ARM projects.
For the complete list of changes, please refer to the release notes of each firmware component
-
-
Contents
-
Projects
+
+
Contents
+
Projects
Projects :
@@ -2272,7 +2651,7 @@
Projects
-
Known Limitations
+
Known Limitations
USB_Device_Standalone application for STM324x9I_EVAL
@@ -2288,7 +2667,7 @@
Known Limitations
SW4STM32 projects are not provided for all EVAL and Discovery demonstrations
STM32F413ZHT6U and STM32F413H-Discovery board RevD
-
Backward Compatibility
+
Backward Compatibility
None
-
Main Changes
+
Main Changes
Add 68 projects for STM32F413ZH-Nucleo board
General updates to fix known defects and enhancements implementation
Update overall projects for alignment with changes done in latest version of CMSIS device
For the complete list of changes, please refer to the release notes of each firmware component
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -4305,7 +4684,7 @@
Projects
-
Known Limitations
+
Known Limitations
USB_Device_Standalone application for STM324x9I_EVAL
@@ -4314,7 +4693,7 @@
Known Limitations
TrueSTUDIO and SW4STM32 projects are not provided for all EVAL and Discovery demonstrations
STemWin sample demo applications with all STM32 platforms are not fully functional with MDK-ARM toolchain: the application doesn t run successfully after the second hit of the Hide Button. in fact when presing the button again while the progress bar displays the next steps, pressing Hide or Next Buttons are not working anymore.
General updates to fix known defects and enhancements implementation
Update applications and demonstrations related to STemWin library in order to support the latest STemWin version
Add new demonstration for STM32F412G-Discovery
For the complete list of changes, please refer to the release notes of each firmware component
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -4692,14 +5071,14 @@
Projects
-
Known Limitations
+
Known Limitations
USB_Device_Standalone application for STM324x9I_EVAL
MDK-ARM and TrueSTUDIO projects are provided with optimization set to None, to avoid audio glitch when USB cable is disconnected
TrueSTUDIO and SW4STM32 projects are not provided for all EVAL and Discovery demonstrations
STemWin sample demo applications with all STM32 platforms are not fully functional with MDK-ARM toolchain: the application doesn t run successfully after the second hit of the Hide Button. in fact when presing the button again while the progress bar displays the next steps, pressing Hide or Next Buttons are not working anymore.
General updates to fix known defects and enhancements implementation
Update HAL_TimeBase example to use the new HAL timebase template
@@ -5147,8 +5526,8 @@
Main Changes
The FreeRTOS_LowPower application is removed comparing to STM32CubeF4 firmware package V1.10.0: this application will be reworked and will be supported in future release
For the complete list of changes, please refer to the release notes of each firmware component
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -5464,7 +5843,7 @@
Projects
-
Known Limitations
+
Known Limitations
USB_Device_Standalone application for STM324x9I_EVAL
@@ -5472,7 +5851,7 @@
Known Limitations
TrueSTUDIO projects are not provided for all EVAL and Discovery demonstrations
Add Examples, Applications and Demonstration firmware for STM32F469xx/STM32F479xx devices and STM32469I_EVAL/STM32469I-Discovery boards
Add Examples for STM32410xx_Nucleo board (14 in total)
@@ -6189,8 +6568,8 @@
Main Changes
Note: Demonstration Firmware for STM32469I_EVAL and STM32469I-Discovery, provided within this package, doesn t embed TouchGFX demonstration module. Free evaluation version of the TouchGFX demonstration, based on Draupner Graphics commercial graphic library, is available at www.touchgfx.com/stmicroelectronics
For the complete list of changes, please refer to the release notes of each firmware components
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -6446,7 +6825,7 @@
Projects
-
Known Limitations
+
Known Limitations
USB_Device_Standalone application for STM324x9I_EVAL
Add Examples for STM32446E_Nucleo board (11 in total)
Add the support System Workbench for STM32 (SW4STM32) toolchain for STM32446E_EVAL board projects
@@ -6514,8 +6893,8 @@
Main Changes
Add the support of new 5.7 LCD reference for STM32F4x9I-EVAL
For the complete list of changes, please refer to the release notes of each firmware components
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -6771,7 +7150,7 @@
Projects
-
Known Limitations
+
Known Limitations
The following issues are detected when using EWARM V7.30, however they are not present when using EWARM V7.10, they will be fixed in next release:
@@ -6799,7 +7178,7 @@
Known Limitations
Robustness to be improved, the application may not work correctly after several board reset
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
@@ -6826,7 +7205,7 @@
Development Toolchains and Comp
-
Supported Devices and EVAL boards
+
Supported Devices and EVAL boards
STM32F446xx devices STM32446E_EVAL board RevB
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
@@ -6838,7 +7217,7 @@
Supported Devices and EVAL boards<
STM32F411xE and STM32F411RE-Nucleo board RevC
STM32F446RE and STM32446E-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
Dependencies
None
@@ -6847,7 +7226,7 @@
Dependencies
-
Main Changes
+
Main Changes
Maintenance release
FLASH_EraseProgram example: update to reset data and instruction cash memories after flash erase
@@ -6856,8 +7235,8 @@
Maintenance release
Demonstration for STM32F401-Discovery and STM32F4-Discovery boards: fix issue of wrong behavior after the second press on user button
Fix compile issue in some projects (9 in total), mainly due to bad project settings
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -7022,7 +7401,7 @@
Projects
Â
-
Known Limitations
+
Known Limitations
SW4STM32 projects are not provided for STM32446E_EVAL board, will be added in next release
The following issues are detected when using EWARM V7.30, however they are not present when using EWARM V7.10, they will be fixed in next release:
@@ -7054,7 +7433,7 @@
Known Limitations
Robustness to be improved, the application may not work correctly after several board reset
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
@@ -7081,7 +7460,7 @@
Development Toolchains and Comp
-
Supported Devices and EVAL boards
+
Supported Devices and EVAL boards
STM32F446xx devices STM32446E_EVAL board RevB
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
@@ -7092,14 +7471,14 @@
Supported Devices and EVAL boards<
STM32F401xE and STM32F401RE-Nucleo board RevC
STM32F411xE and STM32F411RE-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
-
Main Changes
+
Main Changes
Add Examples, Applications and Demonstration firmware for STM32F446xx devices and STM32446E_EVAL board
All projects updated following changes in latest version of HAL and Middlewares
@@ -7111,8 +7490,8 @@
Main Changes
For the complete list of changes, please refer to the release notes of each firmware components
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -7308,7 +7687,7 @@
Projects
-
Known Limitations
+
Known Limitations
The following issues are detected when using EWARM V7.30, however they are not present when using EWARM V7.10, they will be fixed in next release:
@@ -7339,7 +7718,7 @@
Known Limitations
Robustness to be improved, the application may not work correctly after several board reset
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
@@ -7366,7 +7745,7 @@
Development Toolchains and Comp
-
Supported Devices and EVAL boards
+
Supported Devices and EVAL boards
STM32F446xx devices STM32446E_EVAL board RevB
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
@@ -7377,14 +7756,14 @@
Supported Devices and EVAL boards<
STM32F401xE and STM32F401RE-Nucleo board RevC
STM32F411xE and STM32F411RE-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
-
Main Changes
+
Main Changes
All projects updated following changes in latest version of HAL and Middlewares
Miscellaneous enhancements and bugs fix
@@ -7397,8 +7776,8 @@
Main Changes
Important note: some of MDK-ARM projects was created with v4.73, and others with v5.10 (mainly for STM32F411RE-Nucleo projects). If you are using MDK-ARM v5.10 (and later) you have to install a legacy patch to be able to open projects built with v4.73, here is the download link
For the complete list of changes, please refer to the release notes of each firmware components
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -7564,7 +7943,7 @@
Projects
-
Known Limitations
+
Known Limitations
The following issues are detected when using EWARM V7.30, however they are not present when using EWARM V7.10, they will be fixed in next release:
@@ -7587,7 +7966,7 @@
Known Limitations
TrueSTUDIO project is not provided
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
@@ -7614,7 +7993,7 @@
Development Toolchains and Comp
-
Supported Devices and EVAL boards
+
Supported Devices and EVAL boards
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
STM32F429xx and STM32F429I-Discovery board RevB
@@ -7624,7 +8003,7 @@
Supported Devices and EVAL boards<
STM32F401xE and STM32F401RE-Nucleo board RevC
STM32F411xE and STM32F411RE-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
Dependencies
None
@@ -7633,7 +8012,7 @@
Dependencies
-
Main Changes
+
Main Changes
All projects updated following changes in latest version of HAL, BSP and Middlewares
Add examples for JPEG images encoding and decoding, based on LibJPEG, for STM324x9I_EVAL, STM324xG_EVAL and STM32F429I-Discovery (under <BoardName>)
@@ -7644,8 +8023,8 @@
Main Changes
For the complete list of changes, please refer to the release notes of each board Examples, Applications and Demonstrations
Important note: some of MDK-ARM projects was created with v4.73, and others with v5.10 (mainly for STM32F411RE-Nucleo projects). If you are using MDK-ARM v5.10 (and later) you have to install a legacy patch to be able to open projects built with v4.73, here is the download link
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -7811,7 +8190,7 @@
Projects
-
Known Limitations
+
Known Limitations
PolarSSL applications for STM324x9I_EVAL and STM324xG_EVAL
@@ -7828,7 +8207,7 @@
Known Limitations
STM324x9I-EVAL, STM324xG-EVAL and STM32F429I-Discovery demonstration
TrueSTUDIO project is not provided
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
@@ -7855,7 +8234,7 @@
Development Toolchains and Comp
-
Supported Devices and EVAL boards
+
Supported Devices and EVAL boards
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
STM32F429xx and STM32F429I-Discovery board RevB
@@ -7865,22 +8244,22 @@
Supported Devices and EVAL boards<
STM32F401xE and STM32F401RE-Nucleo board RevC
STM32F411xE and STM32F411RE-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
-
Main Changes
+
Main Changes
Add sources of STM324x9I-EVAL (both references MB1046 and MB1063), STM324xG-EVAL and STM32F429I-Discovery Demonstration (only for EWARM and MDK-ARM)
Media sample files (.jpg and .emf) to be used with the demonstration are provided under Utilities
Use updated version of STemWin V5.22
Miscellaneous update on Examples, Applications, Demonstrations and Templates projects for some boards; for more details refer to the associated release notes
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -8046,11 +8425,11 @@
Projects
-
Known Limitations
+
Known Limitations
TrueSTUDIO projects are not provided for few Applications and Demonstrations (10 in total)
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
@@ -8073,7 +8452,7 @@
Development Toolchains and Comp
-
Supported Devices and EVAL boards
+
Supported Devices and EVAL boards
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
STM32F429xx and STM32F429I-Discovery board RevB
@@ -8082,20 +8461,20 @@
Supported Devices and EVAL boards<
STM32F401xC and STM32F401-Discovery board RevB
STM32F401xE and STM32F4xx-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
-
Main Changes
+
Main Changes
Maintenance release
First official release
-
Contents
-
Projects
+
Contents
+
Projects
Projects :
@@ -8261,13 +8640,13 @@
Projects
-
Known Limitations
+
Known Limitations
STM324x9I-EVAL, STM324xG-EVAL and STM32F429I-Discovery Demonstrations sources will be provided in V1.1.0 release planned very soon
TrueSTUDIO projects are not provided for few Examples and Applications (7 in total)
MDK-ARM projects are not provided for 2 Applications (2 in total)
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
@@ -8290,7 +8669,7 @@
Development Toolchains and Comp
-
Supported Devices and EVAL boards
+
Supported Devices and EVAL boards
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
STM32F407xx/417xx devices and STM324xG-EVAL board RevC
@@ -8299,7 +8678,7 @@
Supported Devices and EVAL boards<
STM32F429xx and STM32F429I-Discovery board RevB
STM32F401xE and STM32F4xx-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
diff --git a/Projects/STM32446E-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Examples/UART/UART_ReceptionToIdle_CircularDMA/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Examples/UART/UART_ReceptionToIdle_CircularDMA/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Examples/UART/UART_ReceptionToIdle_CircularDMA/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Examples/UART/UART_ReceptionToIdle_CircularDMA/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Templates/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Templates/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Templates/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Templates/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E-Nucleo/Templates_LL/STM32CubeIDE/STM32F446RETX_FLASH.ld b/Projects/STM32446E-Nucleo/Templates_LL/STM32CubeIDE/STM32F446RETX_FLASH.ld
index 0c1a4f1dd6..ae15f32ab1 100644
--- a/Projects/STM32446E-Nucleo/Templates_LL/STM32CubeIDE/STM32F446RETX_FLASH.ld
+++ b/Projects/STM32446E-Nucleo/Templates_LL/STM32CubeIDE/STM32F446RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 33e1b9b262..8da09cb4c1 100644
--- a/Projects/STM32446E_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 33e1b9b262..8da09cb4c1 100644
--- a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 968857a347..11efb73ce9 100644
--- a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 69c7cd6c38..f32c4d79f2 100644
--- a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 69c7cd6c38..f32c4d79f2 100644
--- a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 69c7cd6c38..f32c4d79f2 100644
--- a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 6d79a891c5..f75c4e9664 100644
--- a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 69c7cd6c38..f32c4d79f2 100644
--- a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 69c7cd6c38..f32c4d79f2 100644
--- a/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
index 9cb395c5ce..46cc5e358f 100644
--- a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
+++ b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
@@ -17,13 +17,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,15 +37,15 @@
-
-
-
+
+
-
-
-
+
+
@@ -102,31 +102,31 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -163,6 +163,14 @@
+
+
+
+
+
+
diff --git a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F446VETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F446VETX_FLASH.ld
index e2737a5572..26609f84ac 100644
--- a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F446VETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F446VETX_FLASH.ld
@@ -119,13 +119,15 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -133,7 +135,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -142,7 +144,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -152,7 +154,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c b/Projects/STM32446E_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c
index 9faaa32939..c946bb48e9 100644
--- a/Projects/STM32446E_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c
+++ b/Projects/STM32446E_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c
@@ -355,7 +355,7 @@ COM_StatusTypeDef Ymodem_Receive ( uint32_t *p_size )
/* Test the size of the image to be sent */
/* Image size is greater than Flash size */
- if (*p_size > (USER_FLASH_SIZE + 1))
+ if (filesize > (USER_FLASH_SIZE + 1))
{
/* End session */
tmp = CA;
diff --git a/Projects/STM32446E_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 3ec1580471..a534cf32ea 100644
--- a/Projects/STM32446E_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index e0e52d8018..2c3de61476 100644
--- a/Projects/STM32446E_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 5cca6032a0..998aa759f9 100644
--- a/Projects/STM32446E_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 6bb7bb2a55..c29cb693e8 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 377dda718d..8ab67d7a7f 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index bd417469af..5dab85e2b3 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 6b37b5cce8..3a67f9130f 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 1f885ba1b4..9ab0d1a7f8 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index c30c11e2dc..908da912d7 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 5c6d89a951..a4c0e62bf3 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 5fb6fa4b74..d60edf9a58 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 94b24c637f..e16e8e1397 100644
--- a/Projects/STM32446E_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Binary/audio_sample_tdm.bin b/Projects/STM32446E_EVAL/Examples/BSP/Binary/audio_sample_tdm.bin
deleted file mode 100644
index 15ccb7b4dd..0000000000
Binary files a/Projects/STM32446E_EVAL/Examples/BSP/Binary/audio_sample_tdm.bin and /dev/null differ
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/Project.ewd b/Projects/STM32446E_EVAL/Examples/BSP/EWARM/Project.ewd
deleted file mode 100644
index 72a1b0b0e9..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/Project.ewd
+++ /dev/null
@@ -1,1638 +0,0 @@
-
-
-
- 2
-
- STM32446E_EVAL
-
- ARM
-
- 1
-
- C-SPY
- 2
-
- 28
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ARMSIM_ID
- 2
-
- 1
- 1
- 1
-
-
-
-
-
-
-
- ANGEL_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
- CADI_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
-
- CMSISDAP_ID
- 2
-
- 4
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GDBSERVER_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
-
-
-
- IARROM_ID
- 2
-
- 1
- 1
- 1
-
-
-
-
-
-
-
-
- IJET_ID
- 2
-
- 8
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JLINK_ID
- 2
-
- 16
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- LMIFTDI_ID
- 2
-
- 2
- 1
- 1
-
-
-
-
-
-
-
-
-
- MACRAIGOR_ID
- 2
-
- 3
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PEMICRO_ID
- 2
-
- 3
- 1
- 1
-
-
-
-
-
-
-
- RDI_ID
- 2
-
- 2
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- STLINK_ID
- 2
-
- 3
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- THIRDPARTY_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
- TIFET_ID
- 2
-
- 1
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- XDS100_ID
- 2
-
- 5
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\middleware\PercepioTraceExporter\PercepioTraceExportPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB7_Plugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin
- 0
-
-
- $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin
- 1
-
-
- $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin
- 0
-
-
- $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin
- 0
-
-
-
-
-
-
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/Project.ewp b/Projects/STM32446E_EVAL/Examples/BSP/EWARM/Project.ewp
deleted file mode 100644
index 2925d72476..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/Project.ewp
+++ /dev/null
@@ -1,1193 +0,0 @@
-
-
-
- 2
-
- STM32446E_EVAL
-
- ARM
-
- 1
-
- General
- 3
-
- 24
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ICCARM
- 2
-
- 31
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- AARM
- 2
-
- 9
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- OBJCOPY
- 0
-
- 1
- 1
- 1
-
-
-
-
-
-
-
-
- CUSTOM
- 3
-
-
-
- 0
-
-
-
- BICOMP
- 0
-
-
-
- BUILDACTION
- 1
-
-
-
-
-
-
- ILINK
- 0
-
- 17
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IARCHIVE
- 0
-
- 0
- 1
- 1
-
-
-
-
-
-
- BILINK
- 0
-
-
-
-
- Doc
-
- $PROJ_DIR$\..\readme.txt
-
-
-
- Drivers
-
- BSP
-
- Components
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\ili9325\ili9325.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\mfxstm32l152\mfxstm32l152.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\s5k5cag\s5k5cag.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\ov5640\ov5640.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\wm8994\wm8994.c
-
-
-
- STM32446E_EVAL
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_audio.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_camera.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_eeprom.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_io.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_lcd.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_qspi.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_sd.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_sdram.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_ts.c
-
-
-
-
- CMSIS
-
- $PROJ_DIR$\..\Src\system_stm32f4xx.c
-
-
-
- STM32F4xx_HAL_Driver
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c_ex.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s_ex.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fsmc.c
-
-
- $PROJ_DIR$\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c
-
-
-
-
- Example
-
- EWARM
-
- $PROJ_DIR$\startup_stm32f446xx.s
-
-
-
- User
-
- $PROJ_DIR$\..\Src\audio.c
-
-
- $PROJ_DIR$\..\Src\camera.c
-
-
- $PROJ_DIR$\..\Src\eeprom.c
-
-
- $PROJ_DIR$\..\Src\joystick.c
-
-
- $PROJ_DIR$\..\Src\lcd.c
-
-
- $PROJ_DIR$\..\Src\log.c
-
-
- $PROJ_DIR$\..\Src\main.c
-
-
- $PROJ_DIR$\..\Src\qspi.c
-
-
- $PROJ_DIR$\..\Src\sd.c
-
-
- $PROJ_DIR$\..\Src\sdram.c
-
-
- $PROJ_DIR$\..\Src\stm32f4xx_it.c
-
-
- $PROJ_DIR$\..\Src\touchscreen.c
-
-
- $PROJ_DIR$\..\Src\ts_calibration.c
-
-
-
- Utilities
-
- $PROJ_DIR$\..\..\..\..\..\Utilities\Log\lcd_log.c
-
-
-
-
-
-
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/Project.eww b/Projects/STM32446E_EVAL/Examples/BSP/EWARM/Project.eww
deleted file mode 100644
index e0fd14b2a0..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/Project.eww
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- $WS_DIR$\Project.ewp
-
-
-
-
-
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/startup_stm32f446xx.s b/Projects/STM32446E_EVAL/Examples/BSP/EWARM/startup_stm32f446xx.s
deleted file mode 100644
index 742a7de7fc..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/startup_stm32f446xx.s
+++ /dev/null
@@ -1,661 +0,0 @@
-;********************************************************************************
-;* File Name : startup_stm32f446xx.s
-;* Author : MCD Application Team
-;* Description : STM32F446xx devices vector table for EWARM toolchain.
-;* This module performs:
-;* - Set the initial SP
-;* - Set the initial PC == _iar_program_start,
-;* - Set the vector table entries with the exceptions ISR
-;* address.
-;* - Branches to main in the C library (which eventually
-;* calls main()).
-;* After Reset the Cortex-M4 processor is in Thread mode,
-;* priority is Privileged, and the Stack is set to Main.
-;********************************************************************************
-;* @attention
-;*
-;* Copyright (c) 2017 STMicroelectronics.
-;* All rights reserved.
-;*
-;* This software is licensed under terms that can be found in the LICENSE file
-;* in the root directory of this software component.
-;* If no LICENSE file comes with this software, it is provided AS-IS.
-;*
-;*******************************************************************************
-;
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-
- MODULE ?cstartup
-
- ;; Forward declaration of sections.
- SECTION CSTACK:DATA:NOROOT(3)
-
- SECTION .intvec:CODE:NOROOT(2)
-
- EXTERN __iar_program_start
- EXTERN SystemInit
- PUBLIC __vector_table
-
- DATA
-__vector_table
- DCD sfe(CSTACK)
- DCD Reset_Handler ; Reset Handler
-
- DCD NMI_Handler ; NMI Handler
- DCD HardFault_Handler ; Hard Fault Handler
- DCD MemManage_Handler ; MPU Fault Handler
- DCD BusFault_Handler ; Bus Fault Handler
- DCD UsageFault_Handler ; Usage Fault Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SVC_Handler ; SVCall Handler
- DCD DebugMon_Handler ; Debug Monitor Handler
- DCD 0 ; Reserved
- DCD PendSV_Handler ; PendSV Handler
- DCD SysTick_Handler ; SysTick Handler
-
- ; External Interrupts
- DCD WWDG_IRQHandler ; Window WatchDog
- DCD PVD_IRQHandler ; PVD through EXTI Line detection
- DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
- DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
- DCD FLASH_IRQHandler ; FLASH
- DCD RCC_IRQHandler ; RCC
- DCD EXTI0_IRQHandler ; EXTI Line0
- DCD EXTI1_IRQHandler ; EXTI Line1
- DCD EXTI2_IRQHandler ; EXTI Line2
- DCD EXTI3_IRQHandler ; EXTI Line3
- DCD EXTI4_IRQHandler ; EXTI Line4
- DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0
- DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1
- DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2
- DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3
- DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4
- DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5
- DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6
- DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s
- DCD CAN1_TX_IRQHandler ; CAN1 TX
- DCD CAN1_RX0_IRQHandler ; CAN1 RX0
- DCD CAN1_RX1_IRQHandler ; CAN1 RX1
- DCD CAN1_SCE_IRQHandler ; CAN1 SCE
- DCD EXTI9_5_IRQHandler ; External Line[9:5]s
- DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9
- DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10
- DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11
- DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
- DCD TIM2_IRQHandler ; TIM2
- DCD TIM3_IRQHandler ; TIM3
- DCD TIM4_IRQHandler ; TIM4
- DCD I2C1_EV_IRQHandler ; I2C1 Event
- DCD I2C1_ER_IRQHandler ; I2C1 Error
- DCD I2C2_EV_IRQHandler ; I2C2 Event
- DCD I2C2_ER_IRQHandler ; I2C2 Error
- DCD SPI1_IRQHandler ; SPI1
- DCD SPI2_IRQHandler ; SPI2
- DCD USART1_IRQHandler ; USART1
- DCD USART2_IRQHandler ; USART2
- DCD USART3_IRQHandler ; USART3
- DCD EXTI15_10_IRQHandler ; External Line[15:10]s
- DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
- DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line
- DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12
- DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13
- DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14
- DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare
- DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7
- DCD FMC_IRQHandler ; FMC
- DCD SDIO_IRQHandler ; SDIO
- DCD TIM5_IRQHandler ; TIM5
- DCD SPI3_IRQHandler ; SPI3
- DCD UART4_IRQHandler ; UART4
- DCD UART5_IRQHandler ; UART5
- DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
- DCD TIM7_IRQHandler ; TIM7
- DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0
- DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1
- DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2
- DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3
- DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD CAN2_TX_IRQHandler ; CAN2 TX
- DCD CAN2_RX0_IRQHandler ; CAN2 RX0
- DCD CAN2_RX1_IRQHandler ; CAN2 RX1
- DCD CAN2_SCE_IRQHandler ; CAN2 SCE
- DCD OTG_FS_IRQHandler ; USB OTG FS
- DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5
- DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6
- DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7
- DCD USART6_IRQHandler ; USART6
- DCD I2C3_EV_IRQHandler ; I2C3 event
- DCD I2C3_ER_IRQHandler ; I2C3 error
- DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out
- DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In
- DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI
- DCD OTG_HS_IRQHandler ; USB OTG HS
- DCD DCMI_IRQHandler ; DCMI
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD FPU_IRQHandler ; FPU
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SPI4_IRQHandler ; SPI4
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SAI1_IRQHandler ; SAI1
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SAI2_IRQHandler ; SAI2
- DCD QUADSPI_IRQHandler ; QuadSPI
- DCD CEC_IRQHandler ; CEC
- DCD SPDIF_RX_IRQHandler ; SPDIF RX
- DCD FMPI2C1_EV_IRQHandler ; FMPI2C1 Event
- DCD FMPI2C1_ER_IRQHandler ; PMPI2C1 Error
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
- THUMB
- PUBWEAK Reset_Handler
- SECTION .text:CODE:REORDER:NOROOT(2)
-Reset_Handler
-
- LDR R0, =SystemInit
- BLX R0
- LDR R0, =__iar_program_start
- BX R0
-
- PUBWEAK NMI_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
-NMI_Handler
- B NMI_Handler
-
- PUBWEAK HardFault_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
-HardFault_Handler
- B HardFault_Handler
-
- PUBWEAK MemManage_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
-MemManage_Handler
- B MemManage_Handler
-
- PUBWEAK BusFault_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
-BusFault_Handler
- B BusFault_Handler
-
- PUBWEAK UsageFault_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
-UsageFault_Handler
- B UsageFault_Handler
-
- PUBWEAK SVC_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SVC_Handler
- B SVC_Handler
-
- PUBWEAK DebugMon_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DebugMon_Handler
- B DebugMon_Handler
-
- PUBWEAK PendSV_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
-PendSV_Handler
- B PendSV_Handler
-
- PUBWEAK SysTick_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SysTick_Handler
- B SysTick_Handler
-
- PUBWEAK WWDG_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-WWDG_IRQHandler
- B WWDG_IRQHandler
-
- PUBWEAK PVD_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-PVD_IRQHandler
- B PVD_IRQHandler
-
- PUBWEAK TAMP_STAMP_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TAMP_STAMP_IRQHandler
- B TAMP_STAMP_IRQHandler
-
- PUBWEAK RTC_WKUP_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-RTC_WKUP_IRQHandler
- B RTC_WKUP_IRQHandler
-
- PUBWEAK FLASH_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-FLASH_IRQHandler
- B FLASH_IRQHandler
-
- PUBWEAK RCC_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-RCC_IRQHandler
- B RCC_IRQHandler
-
- PUBWEAK EXTI0_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-EXTI0_IRQHandler
- B EXTI0_IRQHandler
-
- PUBWEAK EXTI1_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-EXTI1_IRQHandler
- B EXTI1_IRQHandler
-
- PUBWEAK EXTI2_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-EXTI2_IRQHandler
- B EXTI2_IRQHandler
-
- PUBWEAK EXTI3_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-EXTI3_IRQHandler
- B EXTI3_IRQHandler
-
- PUBWEAK EXTI4_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-EXTI4_IRQHandler
- B EXTI4_IRQHandler
-
- PUBWEAK DMA1_Stream0_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA1_Stream0_IRQHandler
- B DMA1_Stream0_IRQHandler
-
- PUBWEAK DMA1_Stream1_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA1_Stream1_IRQHandler
- B DMA1_Stream1_IRQHandler
-
- PUBWEAK DMA1_Stream2_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA1_Stream2_IRQHandler
- B DMA1_Stream2_IRQHandler
-
- PUBWEAK DMA1_Stream3_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA1_Stream3_IRQHandler
- B DMA1_Stream3_IRQHandler
-
- PUBWEAK DMA1_Stream4_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA1_Stream4_IRQHandler
- B DMA1_Stream4_IRQHandler
-
- PUBWEAK DMA1_Stream5_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA1_Stream5_IRQHandler
- B DMA1_Stream5_IRQHandler
-
- PUBWEAK DMA1_Stream6_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA1_Stream6_IRQHandler
- B DMA1_Stream6_IRQHandler
-
- PUBWEAK ADC_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-ADC_IRQHandler
- B ADC_IRQHandler
-
- PUBWEAK CAN1_TX_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-CAN1_TX_IRQHandler
- B CAN1_TX_IRQHandler
-
- PUBWEAK CAN1_RX0_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-CAN1_RX0_IRQHandler
- B CAN1_RX0_IRQHandler
-
- PUBWEAK CAN1_RX1_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-CAN1_RX1_IRQHandler
- B CAN1_RX1_IRQHandler
-
- PUBWEAK CAN1_SCE_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-CAN1_SCE_IRQHandler
- B CAN1_SCE_IRQHandler
-
- PUBWEAK EXTI9_5_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-EXTI9_5_IRQHandler
- B EXTI9_5_IRQHandler
-
- PUBWEAK TIM1_BRK_TIM9_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM1_BRK_TIM9_IRQHandler
- B TIM1_BRK_TIM9_IRQHandler
-
- PUBWEAK TIM1_UP_TIM10_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM1_UP_TIM10_IRQHandler
- B TIM1_UP_TIM10_IRQHandler
-
- PUBWEAK TIM1_TRG_COM_TIM11_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM1_TRG_COM_TIM11_IRQHandler
- B TIM1_TRG_COM_TIM11_IRQHandler
-
- PUBWEAK TIM1_CC_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM1_CC_IRQHandler
- B TIM1_CC_IRQHandler
-
- PUBWEAK TIM2_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM2_IRQHandler
- B TIM2_IRQHandler
-
- PUBWEAK TIM3_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM3_IRQHandler
- B TIM3_IRQHandler
-
- PUBWEAK TIM4_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM4_IRQHandler
- B TIM4_IRQHandler
-
- PUBWEAK I2C1_EV_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-I2C1_EV_IRQHandler
- B I2C1_EV_IRQHandler
-
- PUBWEAK I2C1_ER_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-I2C1_ER_IRQHandler
- B I2C1_ER_IRQHandler
-
- PUBWEAK I2C2_EV_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-I2C2_EV_IRQHandler
- B I2C2_EV_IRQHandler
-
- PUBWEAK I2C2_ER_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-I2C2_ER_IRQHandler
- B I2C2_ER_IRQHandler
-
- PUBWEAK SPI1_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SPI1_IRQHandler
- B SPI1_IRQHandler
-
- PUBWEAK SPI2_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SPI2_IRQHandler
- B SPI2_IRQHandler
-
- PUBWEAK USART1_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-USART1_IRQHandler
- B USART1_IRQHandler
-
- PUBWEAK USART2_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-USART2_IRQHandler
- B USART2_IRQHandler
-
- PUBWEAK USART3_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-USART3_IRQHandler
- B USART3_IRQHandler
-
- PUBWEAK EXTI15_10_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-EXTI15_10_IRQHandler
- B EXTI15_10_IRQHandler
-
- PUBWEAK RTC_Alarm_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-RTC_Alarm_IRQHandler
- B RTC_Alarm_IRQHandler
-
- PUBWEAK OTG_FS_WKUP_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-OTG_FS_WKUP_IRQHandler
- B OTG_FS_WKUP_IRQHandler
-
- PUBWEAK TIM8_BRK_TIM12_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM8_BRK_TIM12_IRQHandler
- B TIM8_BRK_TIM12_IRQHandler
-
- PUBWEAK TIM8_UP_TIM13_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM8_UP_TIM13_IRQHandler
- B TIM8_UP_TIM13_IRQHandler
-
- PUBWEAK TIM8_TRG_COM_TIM14_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM8_TRG_COM_TIM14_IRQHandler
- B TIM8_TRG_COM_TIM14_IRQHandler
-
- PUBWEAK TIM8_CC_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM8_CC_IRQHandler
- B TIM8_CC_IRQHandler
-
- PUBWEAK DMA1_Stream7_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA1_Stream7_IRQHandler
- B DMA1_Stream7_IRQHandler
-
- PUBWEAK FMC_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-FMC_IRQHandler
- B FMC_IRQHandler
-
- PUBWEAK SDIO_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SDIO_IRQHandler
- B SDIO_IRQHandler
-
- PUBWEAK TIM5_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM5_IRQHandler
- B TIM5_IRQHandler
-
- PUBWEAK SPI3_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SPI3_IRQHandler
- B SPI3_IRQHandler
-
- PUBWEAK UART4_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-UART4_IRQHandler
- B UART4_IRQHandler
-
- PUBWEAK UART5_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-UART5_IRQHandler
- B UART5_IRQHandler
-
- PUBWEAK TIM6_DAC_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM6_DAC_IRQHandler
- B TIM6_DAC_IRQHandler
-
- PUBWEAK TIM7_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-TIM7_IRQHandler
- B TIM7_IRQHandler
-
- PUBWEAK DMA2_Stream0_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA2_Stream0_IRQHandler
- B DMA2_Stream0_IRQHandler
-
- PUBWEAK DMA2_Stream1_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA2_Stream1_IRQHandler
- B DMA2_Stream1_IRQHandler
-
- PUBWEAK DMA2_Stream2_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA2_Stream2_IRQHandler
- B DMA2_Stream2_IRQHandler
-
- PUBWEAK DMA2_Stream3_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA2_Stream3_IRQHandler
- B DMA2_Stream3_IRQHandler
-
- PUBWEAK DMA2_Stream4_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA2_Stream4_IRQHandler
- B DMA2_Stream4_IRQHandler
-
- PUBWEAK CAN2_TX_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-CAN2_TX_IRQHandler
- B CAN2_TX_IRQHandler
-
- PUBWEAK CAN2_RX0_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-CAN2_RX0_IRQHandler
- B CAN2_RX0_IRQHandler
-
- PUBWEAK CAN2_RX1_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-CAN2_RX1_IRQHandler
- B CAN2_RX1_IRQHandler
-
- PUBWEAK CAN2_SCE_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-CAN2_SCE_IRQHandler
- B CAN2_SCE_IRQHandler
-
- PUBWEAK OTG_FS_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-OTG_FS_IRQHandler
- B OTG_FS_IRQHandler
-
- PUBWEAK DMA2_Stream5_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA2_Stream5_IRQHandler
- B DMA2_Stream5_IRQHandler
-
- PUBWEAK DMA2_Stream6_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA2_Stream6_IRQHandler
- B DMA2_Stream6_IRQHandler
-
- PUBWEAK DMA2_Stream7_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DMA2_Stream7_IRQHandler
- B DMA2_Stream7_IRQHandler
-
- PUBWEAK USART6_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-USART6_IRQHandler
- B USART6_IRQHandler
-
- PUBWEAK I2C3_EV_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-I2C3_EV_IRQHandler
- B I2C3_EV_IRQHandler
-
- PUBWEAK I2C3_ER_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-I2C3_ER_IRQHandler
- B I2C3_ER_IRQHandler
-
- PUBWEAK OTG_HS_EP1_OUT_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-OTG_HS_EP1_OUT_IRQHandler
- B OTG_HS_EP1_OUT_IRQHandler
-
- PUBWEAK OTG_HS_EP1_IN_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-OTG_HS_EP1_IN_IRQHandler
- B OTG_HS_EP1_IN_IRQHandler
-
- PUBWEAK OTG_HS_WKUP_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-OTG_HS_WKUP_IRQHandler
- B OTG_HS_WKUP_IRQHandler
-
- PUBWEAK OTG_HS_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-OTG_HS_IRQHandler
- B OTG_HS_IRQHandler
-
- PUBWEAK DCMI_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-DCMI_IRQHandler
- B DCMI_IRQHandler
-
- PUBWEAK FPU_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-FPU_IRQHandler
- B FPU_IRQHandler
-
- PUBWEAK SPI4_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SPI4_IRQHandler
- B SPI4_IRQHandler
-
- PUBWEAK SAI1_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SAI1_IRQHandler
- B SAI1_IRQHandler
-
- PUBWEAK SAI2_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SAI2_IRQHandler
- B SAI2_IRQHandler
-
- PUBWEAK QUADSPI_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-QUADSPI_IRQHandler
- B QUADSPI_IRQHandler
-
- PUBWEAK CEC_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-CEC_IRQHandler
- B CEC_IRQHandler
-
- PUBWEAK SPDIF_RX_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-SPDIF_RX_IRQHandler
- B SPDIF_RX_IRQHandler
-
- PUBWEAK FMPI2C1_EV_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-FMPI2C1_EV_IRQHandler
- B FMPI2C1_EV_IRQHandler
-
- PUBWEAK FMPI2C1_ER_IRQHandler
- SECTION .text:CODE:REORDER:NOROOT(1)
-FMPI2C1_ER_IRQHandler
- B FMPI2C1_ER_IRQHandler
-
-
- END
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/stm32f446xx_flash.icf b/Projects/STM32446E_EVAL/Examples/BSP/EWARM/stm32f446xx_flash.icf
deleted file mode 100644
index 963a230a69..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/EWARM/stm32f446xx_flash.icf
+++ /dev/null
@@ -1,31 +0,0 @@
-/*###ICF### Section handled by ICF editor, don't touch! ****/
-/*-Editor annotation file-*/
-/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
-/*-Specials-*/
-define symbol __ICFEDIT_intvec_start__ = 0x08000000;
-/*-Memory Regions-*/
-define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
-define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
-define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
-define symbol __ICFEDIT_region_RAM_end__ = 0x2001FFFF;
-/*-Sizes-*/
-define symbol __ICFEDIT_size_cstack__ = 0x400;
-define symbol __ICFEDIT_size_heap__ = 0x200;
-/**** End of ICF editor section. ###ICF###*/
-
-
-define memory mem with size = 4G;
-define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
-define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
-
-define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
-define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
-
-initialize by copy { readwrite };
-do not initialize { section .noinit };
-
-place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
-
-place in ROM_region { readonly };
-place in RAM_region { readwrite,
- block CSTACK, block HEAP };
\ No newline at end of file
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Inc/lcd_log_conf.h b/Projects/STM32446E_EVAL/Examples/BSP/Inc/lcd_log_conf.h
deleted file mode 100644
index 4ad36a0f4b..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Inc/lcd_log_conf.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Inc/lcd_log_conf.h
- * @author MCD Application Team
- * @brief lcd_log configuration template file.
- * This file should be copied to the application folder and modified
- * as follows:
- * - Rename it to 'lcd_log_conf.h'.
- * - Update the name of the LCD driver's header file, depending on
- * the EVAL board you are using, see line40 below (be default this
- * file will generate compile error unless you do this modification).
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef __LCD_LOG_CONF_H__
-#define __LCD_LOG_CONF_H__
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32446e_eval_lcd.h"
-#include
-
-
-/** @addtogroup LCD_LOG
- * @{
- */
-
-/** @defgroup LCD_LOG
- * @brief This file is the
- * @{
- */
-
-
-/** @defgroup LCD_LOG_CONF_Exported_Defines
- * @{
- */
-
-/* Comment the line below to disable the scroll back and forward features */
-#define LCD_SCROLL_ENABLED 1
-
-/* Define the Fonts */
-#define LCD_LOG_HEADER_FONT Font16
-#define LCD_LOG_FOOTER_FONT Font12
-#define LCD_LOG_TEXT_FONT Font12
-
-/* Define the LCD LOG Color */
-#define LCD_LOG_BACKGROUND_COLOR LCD_COLOR_WHITE
-#define LCD_LOG_TEXT_COLOR LCD_COLOR_DARKBLUE
-
-#define LCD_LOG_SOLID_BACKGROUND_COLOR LCD_COLOR_BLUE
-#define LCD_LOG_SOLID_TEXT_COLOR LCD_COLOR_WHITE
-
-/* Define the cache depth */
-#define CACHE_SIZE 100
-#define YWINDOW_SIZE 17
-
-#if (YWINDOW_SIZE > 17)
- #error "Wrong YWINDOW SIZE"
-#endif
-
-/* Redirect the printf to the LCD */
-#ifdef __GNUC__
-/* With GCC, small printf (option LD Linker->Libraries->Small printf
- set to 'Yes') calls __io_putchar() */
-#define LCD_LOG_PUTCHAR int __io_putchar(int ch)
-#else
-#define LCD_LOG_PUTCHAR int fputc(int ch, FILE *f)
-#endif /* __GNUC__ */
-
-/** @defgroup LCD_LOG_CONF_Exported_TypesDefinitions
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup LCD_LOG_Exported_Macros
- * @{
- */
-
-
-/**
- * @}
- */
-
-/** @defgroup LCD_LOG_CONF_Exported_Variables
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup LCD_LOG_CONF_Exported_FunctionsPrototype
- * @{
- */
-
-/**
- * @}
- */
-
-
-#endif //__LCD_LOG_CONF_H__
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Inc/main.h b/Projects/STM32446E_EVAL/Examples/BSP/Inc/main.h
deleted file mode 100644
index 6df0453eaa..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Inc/main.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Inc/main.h
- * @author MCD Application Team
- * @brief Header for main.c module
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __MAIN_H
-#define __MAIN_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "stdio.h"
-#include "stm32446e_eval.h"
-#include "stm32446e_eval_ts.h"
-#include "stm32446e_eval_io.h"
-#include "stm32446e_eval_lcd.h"
-#include "stm32446e_eval_sd.h"
-#include "stm32446e_eval_sdram.h"
-#include "stm32446e_eval_eeprom.h"
-#include "stm32446e_eval_camera.h"
-#include "stm32446e_eval_audio.h"
-#include "stm32446e_eval_qspi.h"
-
-/* Macros --------------------------------------------------------------------*/
-
-
-
-
-/* Exported types ------------------------------------------------------------*/
-typedef struct
-{
- void (*DemoFunc)(void);
- uint8_t DemoName[50];
- uint32_t DemoIndex;
-}BSP_DemoTypedef;
-
-extern const unsigned char stlogo[];
-/* Exported global variables ---------------------------------------------------*/
-extern volatile uint8_t MfxExtiReceived;
-#ifndef USE_FULL_ASSERT
-extern uint16_t ErrorCounter;
-#endif
-
-/* Exported constants --------------------------------------------------------*/
-
-/* Camera buffer requested space (at max resolution) */
-#define CAMERA_RES_MAX_X 480
-#define CAMERA_RES_MAX_Y 272
-#define RGB565_BYTE_PER_PIXEL 2
-/* Memories addresses */
-#define FLASH_CODE_ADDRESS 0x08000000
-#define FLASH_DATA_ADDRESS 0x08040000
-#define SRAM_WRITE_READ_ADDR 0x2000b000
-#define SDRAM_WRITE_READ_ADDR SDRAM_DEVICE_ADDR + (CAMERA_RES_MAX_X * CAMERA_RES_MAX_Y * RGB565_BYTE_PER_PIXEL)
-
-/* Exported macro ------------------------------------------------------------*/
-
-#define COUNT_OF_EXAMPLE(x) (sizeof(x)/sizeof(BSP_DemoTypedef))
-
-#ifdef USE_FULL_ASSERT
-/* Assert activated */
-#define ASSERT(__condition__) do { if(__condition__) \
- { assert_failed(__FILE__, __LINE__); \
- while(1); \
- } \
- }while(0)
-#else
-/* Assert not activated : macro has no effect */
-#define ASSERT(__condition__) do { if(__condition__) \
- { ErrorCounter++; \
- } \
- }while(0)
-#endif /* USE_FULL_ASSERT */
-
-/* Exported functions ------------------------------------------------------- */
-void Joystick_polling_demo (void);
-void Joystick_exti_demo (void);
-void Joystick_SetCursorPosition(void);
-void Touchscreen_polling_demo (void);
-void AudioPlay_demo (void);
-void LCD_demo (void);
-void SD_demo (void);
-void SD_exti_demo (void);
-void Log_demo(void);
-void SDRAM_demo(void);
-void EEPROM_demo(void);
-void Camera_demo(void);
-void Touchscreen_Calibration (void);
-uint16_t Calibration_GetX(uint16_t x);
-uint16_t Calibration_GetY(uint16_t y);
-uint8_t IsCalibrationDone(void);
-uint8_t AUDIO_Process(void);
-void QSPI_demo(void);
-uint8_t CheckForUserInput(void);
-void Toggle_Leds(void);
-
-#endif /* __MAIN_H */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Inc/stlogo.h b/Projects/STM32446E_EVAL/Examples/BSP/Inc/stlogo.h
deleted file mode 100644
index f215a154b7..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Inc/stlogo.h
+++ /dev/null
@@ -1,602 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Inc/stlogo.h
- * @author MCD Application Team
- * @brief This file contains image used for BSP example.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STLOGO_H
-#define __STLOGO_H
-
-__ALIGN_BEGIN const unsigned char stlogo[9174] __ALIGN_END =
-{
-0x42,0x4d,0xd6,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,
-0x00,0x00,0x50,0x00,0x00,0x00,0x39,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x03,0x00,
-0x00,0x00,0xa0,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x98,0xb5,0xa9,0x08,
-0x4b,0x29,0x27,0x00,0xd2,0x7b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x7f,0xd7,0x5f,0xc7,0x1e,0xb7,0x9f,0xdf,0x3f,0xc7,0x5f,0xc7,0x3e,0xc7,0x3f,0xc7,
-0x5f,0xc7,0xff,0xff,0xdf,0xf7,0xbe,0x9e,0xbe,0xa6,0xff,0xff,0xff,0xff,0xff,0xf7,
-0x9e,0x96,0xff,0xff,0xff,0xff,0xff,0xff,0xd6,0x9c,0x14,0x84,0xdc,0xde,0xfa,0xc5,
-0xff,0xff,0xff,0xff,0xb5,0x9c,0x34,0x8c,0x3a,0xce,0x3d,0xef,0xa9,0x08,0x34,0x8c,
-0xd6,0x9c,0x1a,0xce,0x04,0x00,0xff,0xff,0xb8,0xbd,0xff,0xff,0xff,0xff,0xf9,0xc5,
-0xff,0xff,0xff,0xff,0x98,0xb5,0xbf,0xff,0xff,0xff,0x37,0xad,0xf3,0x7b,0xfd,0xe6,
-0xff,0xff,0xdc,0xde,0xdc,0xde,0xff,0xff,0xff,0xff,0x99,0xb5,0xff,0xff,0x9c,0xd6,
-0xdc,0xde,0xff,0xff,0xff,0xff,0x57,0xad,0xf3,0x7b,0xdc,0xde,0xff,0xff,0xff,0xff,
-0xdf,0xff,0x14,0x84,0x95,0x94,0xfd,0xe6,0x1a,0xc6,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xde,0xae,0xdb,0x14,0xdd,0x5d,0x1e,0xbf,0xfb,0x1c,0x5d,0x7e,0x9e,0x96,0xdb,0x14,
-0x9e,0x96,0xdf,0xf7,0xbb,0x04,0x7d,0x8e,0x3d,0x76,0xbb,0x04,0xff,0xff,0x3d,0x7e,
-0xbb,0x04,0x3d,0x7e,0xff,0xff,0xc9,0x10,0xcd,0x31,0xf3,0x73,0x07,0x00,0x06,0x00,
-0xff,0xff,0xc9,0x10,0x2d,0x3a,0x51,0x63,0x04,0x00,0x54,0x84,0x13,0x84,0x89,0x00,
-0xf3,0x7b,0x0a,0x11,0x06,0x00,0xd8,0xbd,0x06,0x00,0xff,0xff,0xff,0xff,0x06,0x00,
-0xff,0xff,0xff,0xff,0x05,0x00,0xbc,0xde,0x0d,0x3a,0x2a,0x19,0xd3,0x73,0x05,0x00,
-0x78,0xb5,0xb2,0x6b,0x51,0x6b,0xff,0xff,0xff,0xff,0x03,0x00,0xdf,0xff,0x0e,0x3a,
-0xb2,0x73,0xff,0xff,0x0d,0x3a,0x0a,0x11,0x14,0x7c,0x05,0x00,0x77,0xad,0xff,0xff,
-0x06,0x00,0x10,0x5b,0xf0,0x5a,0x04,0x00,0x4b,0x21,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0x1c,0x25,0x5f,0xdf,0xff,0xff,0x3a,0x2d,0xdf,0xff,0xff,0xff,0x1c,0x25,
-0xff,0xff,0x1d,0x76,0x9e,0x96,0xff,0xff,0xff,0xff,0xff,0xae,0x5f,0xd7,0xff,0xff,
-0x7e,0x86,0xff,0xff,0x98,0xb5,0x88,0x08,0xff,0xff,0xff,0xff,0x5d,0xef,0x07,0x00,
-0x7e,0xef,0x06,0x00,0xff,0xff,0xff,0xff,0x11,0x5b,0x51,0x6b,0x06,0x00,0xff,0xff,
-0xff,0xff,0xff,0xff,0x05,0x00,0x1a,0xc6,0x27,0x00,0xff,0xff,0xff,0xff,0x69,0x08,
-0xff,0xff,0xff,0xff,0x27,0x00,0x37,0xa5,0x07,0x00,0xff,0xff,0xdf,0xff,0x3a,0xce,
-0xab,0x31,0x14,0x84,0xb2,0x73,0xff,0xff,0xff,0xff,0x06,0x00,0xff,0xff,0xaf,0x52,
-0x34,0x84,0x3a,0xce,0x06,0x00,0xff,0xff,0xdf,0xff,0xf9,0xc5,0x8b,0x31,0x12,0x5b,
-0x10,0x5b,0xff,0xff,0xff,0xff,0x95,0x94,0x4b,0x21,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xfc,0x1c,0x5f,0xd7,0xff,0xff,0x3b,0x2d,0xbf,0xef,0xff,0xff,0xfb,0x1c,
-0xff,0xff,0xfc,0x6d,0xbd,0x4d,0xfd,0x5d,0x1e,0x66,0x5c,0x2d,0xfd,0x65,0xff,0xff,
-0xff,0xff,0xff,0xff,0xd6,0x9c,0x4e,0x3a,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
-0x5e,0xef,0x48,0x00,0xff,0xff,0xff,0xff,0x13,0x84,0x6e,0x4a,0x28,0x00,0xff,0xff,
-0xff,0xff,0xff,0xff,0x68,0x08,0xf9,0xbd,0x48,0x00,0xff,0xff,0xff,0xff,0x68,0x08,
-0xff,0xff,0xff,0xff,0x48,0x00,0x53,0x84,0x28,0x00,0x0a,0x11,0xca,0x10,0x0a,0x11,
-0x06,0x00,0x92,0x6b,0x14,0x84,0xff,0xff,0xff,0xff,0x05,0x00,0xff,0xff,0xaf,0x52,
-0x75,0x8c,0xb9,0xbd,0x07,0x00,0x2a,0x19,0xca,0x10,0x0a,0x11,0xa9,0x08,0x8b,0x29,
-0x74,0x8c,0xff,0xff,0xff,0xff,0x57,0xa5,0x4b,0x19,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0x1c,0x25,0x5f,0xd7,0x7f,0xdf,0xfb,0x1c,0xdf,0xf7,0x1e,0xb7,0x1c,0x25,
-0x3f,0xc7,0x7f,0xd7,0x1c,0x25,0x3f,0xcf,0xde,0xae,0xfc,0x1c,0xbf,0xef,0xff,0xff,
-0xff,0xff,0xff,0xff,0xbf,0xff,0x05,0x00,0xd6,0x94,0xdc,0xde,0xed,0x31,0x07,0x00,
-0x5e,0xef,0x07,0x00,0xff,0xff,0xff,0xff,0xb2,0x73,0x14,0x7c,0x6b,0x21,0xf0,0x5a,
-0xbb,0xde,0xf3,0x7b,0x04,0x00,0x1a,0xc6,0x06,0x00,0x98,0xb5,0xf6,0x9c,0x05,0x00,
-0xb5,0x94,0x19,0xc6,0x04,0x00,0xff,0xff,0x47,0x00,0x37,0xa5,0x5e,0xef,0x4e,0x42,
-0xef,0x5a,0x74,0x8c,0x27,0x00,0x9b,0xd6,0xb5,0x94,0x07,0x00,0x5d,0xef,0xcd,0x31,
-0xaf,0x52,0x7b,0xd6,0x68,0x00,0xf6,0x9c,0x5d,0xef,0x2e,0x42,0x11,0x5b,0xfc,0xe6,
-0x06,0x00,0x1a,0xc6,0xf9,0xc5,0xa9,0x08,0xac,0x29,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xfb,0x1c,0x7f,0xdf,0x7d,0x8e,0xfd,0x65,0xdf,0xff,0xdd,0x5d,0x1b,0x25,
-0x5e,0x86,0xff,0xff,0x5f,0xcf,0x9c,0x45,0xfd,0x6d,0xbf,0xe7,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0x3d,0xe7,0x2b,0x19,0x48,0x00,0xb2,0x73,0x2e,0x42,
-0x7e,0xf7,0xec,0x39,0xff,0xff,0xff,0xff,0xb5,0x9c,0xb5,0x94,0xff,0xff,0x8e,0x4a,
-0x48,0x00,0xef,0x52,0x0d,0x3a,0x7a,0xd6,0x0d,0x3a,0x4a,0x19,0x2b,0x19,0x5a,0xce,
-0x2b,0x21,0x68,0x00,0x19,0xc6,0xff,0xff,0x9e,0xf7,0x4a,0x19,0x68,0x00,0xb2,0x73,
-0xff,0xff,0xd5,0x9c,0xf0,0x5a,0x89,0x00,0x2b,0x21,0xde,0xf7,0x77,0xb5,0x89,0x00,
-0xea,0x10,0xd3,0x7b,0xff,0xff,0xed,0x31,0x68,0x00,0x91,0x6b,0xff,0xff,0xff,0xff,
-0xd9,0xbd,0x89,0x00,0xc9,0x10,0x51,0x63,0x6c,0x29,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x9e,0x96,0xdc,0x0c,0x3f,0xcf,0xff,0xff,0x1c,0x1d,0xff,0xff,0xff,0xff,0x3c,0x25,
-0x1c,0x6e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x42,
-0xf3,0x7b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0x37,0xa5,0xa9,0x08,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x3f,0xcf,0xde,0xa6,0xdf,0xf7,0xff,0xff,0x1e,0x76,0xff,0xff,0xff,0xff,0xdf,0xf7,
-0xbd,0x9e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x39,0xce,
-0xbb,0xd6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xde,0xd8,0xbd,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x14,0x54,0xf0,0x22,0x72,0x3b,
-0x72,0x33,0x72,0x3b,0x71,0x33,0x72,0x3b,0x72,0x33,0x51,0x2b,0x7b,0xbe,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x92,0x3b,0x51,0x33,0x72,0x3b,
-0x71,0x33,0xd3,0x43,0x37,0x85,0x3e,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb9,0x9d,0x0d,0x02,
-0x6d,0x12,0x6d,0x0a,0x8e,0x12,0x6e,0x0a,0x8e,0x0a,0x6e,0x02,0xf0,0x1a,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x64,0x6e,0x02,0x8f,0x0a,
-0xaf,0x12,0x8e,0x0a,0x8e,0x0a,0x2e,0x02,0x92,0x3b,0x5d,0xe7,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xa5,
-0x4e,0x02,0xaf,0x12,0xaf,0x12,0xd0,0x12,0xaf,0x12,0xd0,0x12,0x4e,0x02,0x7b,0xbe,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5e,0xe7,0x4e,0x02,0xf0,0x12,
-0xf0,0x12,0xf0,0x1a,0xd0,0x12,0xf0,0x12,0xaf,0x0a,0x0d,0x02,0xf9,0xb5,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x54,0x5c,0x6e,0x02,0xcf,0x12,0xcf,0x12,0xd0,0x12,0xcf,0x12,0xaf,0x12,0xd2,0x43,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x92,0x3b,0xcf,0x0a,
-0xf0,0x1a,0xf0,0x12,0xf0,0x1a,0xf0,0x12,0xf0,0x12,0xf0,0x12,0xab,0x01,0x9b,0xc6,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0x8f,0x0a,0xcf,0x12,0xf0,0x1a,0xf0,0x12,0xf0,0x1a,0xf0,0x12,0x6f,0x02,
-0x5e,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5b,0xbe,0xb0,0x0a,
-0x11,0x1b,0x11,0x1b,0x11,0x13,0x11,0x1b,0x10,0x13,0x11,0x1b,0xf0,0x12,0xd0,0x0a,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xb2,0x3b,0xd0,0x0a,0xf0,0x12,0xf0,0x1a,0xf0,0x12,0x11,0x1b,0xd0,0x0a,
-0xd6,0x74,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x12,
-0x31,0x1b,0x11,0x13,0x11,0x1b,0x11,0x13,0x31,0x1b,0x10,0x13,0x11,0x1b,0xb0,0x02,
-0xfb,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3a,0xb6,0x51,0x2b,0x92,0x3b,0xb2,0x3b,
-0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb3,0x3b,0x92,0x3b,0xb2,0x3b,
-0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb2,0x3b,0x92,0x3b,0xb2,0x3b,
-0x92,0x3b,0x92,0x3b,0x34,0x5c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0x98,0x95,0xaf,0x02,0x11,0x1b,0x11,0x13,0x31,0x1b,0x11,0x1b,0x32,0x1b,
-0x0c,0x02,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0x84,
-0xaf,0x0a,0x52,0x1b,0x31,0x1b,0x32,0x1b,0x31,0x1b,0x32,0x1b,0x11,0x1b,0xf1,0x12,
-0x57,0x24,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7e,0xef,0xcc,0x01,0x0c,0x1a,0x0b,0x12,
-0x0c,0x1a,0x0b,0x12,0x0c,0x1a,0x0c,0x12,0x2c,0x1a,0x2c,0x12,0x4d,0x12,0x4d,0x12,
-0x6d,0x12,0x6d,0x0a,0x8e,0x12,0x8e,0x0a,0x8f,0x0a,0x8f,0x0a,0xaf,0x12,0xaf,0x0a,
-0xd0,0x12,0xd0,0x0a,0x6f,0x02,0xd9,0x9d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0x19,0xb6,0x6f,0x02,0x11,0x13,0x31,0x1b,0x31,0x13,0x32,0x1b,0x31,0x13,
-0x8f,0x02,0x57,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9e,0xf7,
-0x4e,0x02,0x52,0x13,0x52,0x1b,0x31,0x13,0x52,0x1b,0x31,0x13,0x32,0x1b,0x11,0x13,
-0x53,0x0b,0x1e,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x92,0x3b,0x0c,0x1a,0x4d,0x22,
-0x2c,0x1a,0x4d,0x22,0x4c,0x1a,0x6d,0x22,0x6d,0x1a,0x8e,0x1a,0x6d,0x1a,0x8f,0x1a,
-0x8e,0x12,0xaf,0x1a,0xaf,0x12,0xcf,0x12,0xcf,0x12,0xd0,0x12,0xf0,0x12,0x10,0x1b,
-0xf0,0x12,0x11,0x13,0x2d,0x02,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0x1a,0xae,0xaf,0x02,0x32,0x1b,0x32,0x1b,0x52,0x1b,0x32,0x13,0x53,0x1b,
-0x52,0x13,0xf1,0x0a,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x54,0x4c,0x32,0x13,0x52,0x1b,0x73,0x1b,0x52,0x1b,0x52,0x1b,0x52,0x13,0x52,0x1b,
-0x11,0x13,0xdb,0x85,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbb,0xc6,0xcb,0x01,0x2c,0x1a,
-0x4d,0x22,0x4c,0x1a,0x4d,0x1a,0x4d,0x1a,0x6e,0x1a,0x6d,0x12,0x8e,0x1a,0x8e,0x12,
-0xaf,0x1a,0xae,0x12,0xcf,0x12,0xaf,0x12,0xd0,0x12,0xcf,0x12,0xf0,0x1a,0xf0,0x12,
-0xd0,0x0a,0x4d,0x12,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xd7,0x54,0x11,0x13,0x31,0x13,0x52,0x1b,0x52,0x13,0x52,0x1b,0x52,0x1b,
-0x53,0x1b,0x12,0x03,0x1e,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x1d,0xd7,0x12,0x03,0x73,0x1b,0x52,0x1b,0x73,0x1b,0x52,0x1b,0x53,0x1b,0x52,0x13,
-0x32,0x13,0xd4,0x1b,0xdf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0c,0x0a,0x2c,0x22,
-0x4c,0x1a,0x4d,0x22,0x4d,0x1a,0x6d,0x1a,0x6d,0x1a,0x8e,0x1a,0x8e,0x1a,0xaf,0x1a,
-0xae,0x12,0xcf,0x12,0xcf,0x12,0xd0,0x12,0xd0,0x12,0xf1,0x1a,0x10,0x1b,0xb0,0x0a,
-0xae,0x2a,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xf6,0x13,0x11,0x13,0x52,0x1b,0x52,0x13,0x73,0x1b,0x53,0x1b,0x73,0x1b,
-0x73,0x1b,0x53,0x1b,0x19,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0x98,0x34,0x53,0x13,0x93,0x23,0x73,0x1b,0x73,0x23,0x73,0x1b,0x73,0x1b,
-0x52,0x1b,0x53,0x13,0xfb,0x8d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x8d,0xcb,0x09,
-0x4d,0x22,0x4d,0x1a,0x6d,0x1a,0x6d,0x12,0x8e,0x1a,0x8e,0x12,0xaf,0x1a,0x8e,0x12,
-0xaf,0x12,0xaf,0x12,0xd0,0x12,0xcf,0x12,0xf0,0x12,0xf0,0x12,0x8f,0x02,0x71,0x3b,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x7c,0xae,0x73,0x23,0x73,0x2b,0x73,0x23,0x93,0x2b,0x93,0x23,0x94,0x2b,0x93,0x23,
-0x94,0x23,0x73,0x13,0xf5,0x23,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0x7c,0xae,0x94,0x13,0x73,0x13,0x94,0x1b,0x73,0x1b,0x93,0x1b,0x73,0x1b,
-0x73,0x1b,0x32,0x13,0x74,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4e,0x02,
-0x2c,0x1a,0x6d,0x1a,0x6d,0x1a,0x8e,0x1a,0x8e,0x1a,0xae,0x1a,0x8e,0x12,0xaf,0x12,
-0xaf,0x12,0xd0,0x12,0xf0,0x1a,0x11,0x23,0x11,0x23,0xf1,0x1a,0x96,0x64,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xef,
-0x76,0x4c,0xb3,0x33,0xd4,0x3b,0xf5,0x3b,0xd4,0x3b,0xf5,0x3b,0xf5,0x3b,0x15,0x3c,
-0xf5,0x3b,0x16,0x3c,0xf5,0x33,0x3c,0xa6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0x76,0x3c,0x74,0x13,0x94,0x13,0xb4,0x1b,0x93,0x1b,0x94,0x23,
-0x73,0x1b,0x73,0x23,0x12,0x03,0x5b,0xae,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0x5c,
-0x2c,0x12,0x4d,0x1a,0x6e,0x1a,0x6d,0x12,0x8e,0x12,0x8e,0x12,0xcf,0x1a,0xef,0x22,
-0x31,0x33,0x51,0x33,0x71,0x3b,0x51,0x33,0x32,0x23,0x79,0x7d,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5e,0xdf,0x36,0x3c,
-0x93,0x33,0xb4,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf4,0x33,0xf5,0x3b,0xf5,0x3b,
-0x16,0x3c,0x15,0x3c,0xf5,0x3b,0xf6,0x2b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0x5c,0xa6,0xd5,0x2b,0xd5,0x2b,0xb4,0x1b,0xb4,0x1b,0x93,0x13,
-0x94,0x1b,0x73,0x1b,0x73,0x1b,0xf0,0x12,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xdf,
-0xb0,0x02,0x4d,0x1a,0x8e,0x1a,0xcf,0x2a,0xef,0x32,0x31,0x3b,0x30,0x33,0x51,0x3b,
-0x31,0x33,0x52,0x3b,0x31,0x33,0x53,0x23,0x3c,0x9e,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xce,0xb5,0x23,0xb4,0x33,
-0xd4,0x33,0xf5,0x3b,0xd4,0x3b,0xf5,0x3b,0xf5,0x3b,0x16,0x3c,0x15,0x3c,0x36,0x3c,
-0x16,0x3c,0x36,0x44,0x36,0x3c,0xd5,0x2b,0x3b,0xae,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0x2b,0x16,0x3c,0x36,0x44,0x16,0x3c,0x16,0x3c,
-0xd4,0x2b,0xb4,0x23,0x94,0x13,0x4f,0x02,0xdc,0xd6,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xf8,0x5c,0x8e,0x2a,0xf0,0x32,0xef,0x32,0x10,0x33,0x10,0x33,0x31,0x33,0x30,0x33,
-0x51,0x33,0x10,0x33,0xb4,0x2b,0xbd,0xb6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5b,0xae,0x53,0x1b,0xb4,0x3b,0xd4,0x33,
-0xf4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x3b,0x15,0x3c,0x15,0x3c,0x16,0x3c,0x16,0x3c,
-0x36,0x3c,0x36,0x3c,0x37,0x3c,0x36,0x34,0xd4,0x3b,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xb7,0x54,0x16,0x34,0x16,0x3c,0x36,0x3c,0x15,0x3c,
-0x16,0x3c,0x15,0x3c,0x15,0x3c,0x94,0x1b,0xb1,0x5b,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x1e,0xcf,0x52,0x33,0xcf,0x32,0x10,0x3b,0x10,0x33,0x31,0x33,0x30,0x33,0x51,0x3b,
-0x31,0x33,0x93,0x33,0xbd,0xb6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0x99,0x95,0x11,0x13,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,
-0xf5,0x3b,0x15,0x3c,0x15,0x3c,0x16,0x3c,0x16,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x3c,
-0x37,0x3c,0x57,0x3c,0x57,0x3c,0x78,0x44,0x73,0x23,0xdc,0xce,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0x1d,0xdf,0x94,0x23,0x57,0x44,0x36,0x3c,0x37,0x3c,
-0x16,0x3c,0x36,0x3c,0x15,0x3c,0x36,0x44,0xaf,0x1a,0xdf,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xb6,0x5c,0xae,0x2a,0x10,0x33,0x30,0x33,0x10,0x33,0x51,0x33,0x31,0x33,
-0x11,0x33,0x59,0x75,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xd6,0x7c,0xf1,0x12,0xd4,0x3b,0xd4,0x33,0xf4,0x3b,0xd4,0x33,
-0xf5,0x3b,0xf5,0x33,0x16,0x3c,0x16,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x3c,0x37,0x3c,
-0x57,0x3c,0x57,0x3c,0x77,0x3c,0x57,0x3c,0x57,0x3c,0xd2,0x53,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x51,0x33,0x57,0x3c,0x57,0x3c,0x36,0x3c,
-0x37,0x3c,0x16,0x3c,0x36,0x3c,0x15,0x3c,0xb4,0x2b,0x77,0x95,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xdd,0xbe,0x10,0x33,0x10,0x33,0x10,0x33,0x31,0x3b,0x31,0x33,0x51,0x3b,
-0x72,0x33,0xfe,0xc6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0x13,0x64,0xf1,0x22,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xd5,0x3b,0x15,0x3c,
-0xf5,0x3b,0x16,0x3c,0x16,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x44,0x57,0x3c,0x78,0x3c,
-0x57,0x3c,0x78,0x44,0x77,0x44,0x78,0x44,0x98,0x44,0xf0,0x22,0xbf,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0xa5,0xb5,0x2b,0x77,0x3c,0x57,0x3c,
-0x37,0x3c,0x57,0x44,0x36,0x3c,0x36,0x3c,0x16,0x34,0xb3,0x43,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xd4,0x3b,0xcf,0x2a,0x30,0x33,0x30,0x33,0x51,0x33,0x31,0x33,
-0xb4,0x33,0xdf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x2f,0x3b,0x11,0x23,0xd4,0x3b,0xb3,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x33,
-0x16,0x3c,0x15,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x3c,0x57,0x3c,0x77,0x3c,0x57,0x3c,
-0x77,0x44,0x77,0x44,0x98,0x44,0x77,0x44,0x98,0x4c,0x15,0x34,0xd5,0x84,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8e,0x1a,0x98,0x44,0x57,0x3c,
-0x57,0x3c,0x36,0x3c,0x57,0x3c,0x16,0x3c,0x36,0x3c,0xb4,0x33,0xdc,0xce,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0x9a,0x75,0xf0,0x32,0x30,0x33,0x51,0x33,0x51,0x33,0x52,0x3b,
-0xb4,0x2b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x74,
-0x11,0x23,0xb4,0x3b,0xb4,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x3b,0x16,0x3c,
-0x16,0x3c,0x36,0x3c,0x36,0x3c,0x57,0x3c,0x57,0x3c,0x78,0x3c,0x77,0x3c,0x78,0x44,
-0x77,0x44,0x98,0x4c,0x97,0x44,0x98,0x4c,0x98,0x4c,0xb8,0x4c,0xf3,0x43,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x74,0x74,0x57,0x3c,0x78,0x44,
-0x77,0x3c,0x77,0x3c,0x37,0x3c,0x37,0x3c,0x36,0x3c,0x16,0x34,0xf7,0x6c,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0x5e,0xdf,0x12,0x1b,0x30,0x33,0x31,0x33,0x51,0x33,0x51,0x33,
-0x94,0x2b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x98,0x95,
-0x32,0x23,0x72,0x2b,0x93,0x2b,0x93,0x2b,0xb4,0x33,0xb4,0x2b,0xd5,0x33,0xd5,0x2b,
-0xf5,0x33,0xf5,0x2b,0x16,0x34,0x16,0x34,0x37,0x3c,0x36,0x34,0x57,0x3c,0x56,0x3c,
-0x57,0x44,0x56,0x3c,0x77,0x44,0x77,0x44,0x97,0x4c,0x77,0x44,0x56,0x44,0x9b,0xb6,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9e,0xf7,0x11,0x1b,0x16,0x34,
-0x16,0x34,0x16,0x2c,0x16,0x34,0x16,0x34,0x16,0x34,0xf5,0x2b,0x36,0x3c,0x7e,0xe7,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x44,0x10,0x33,0x51,0x3b,0x51,0x33,0x72,0x3b,
-0x32,0x23,0x9f,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x1d,0xd7,0xdd,0xc6,0xdc,0xc6,0xdd,0xc6,0xdc,0xc6,0xdd,0xce,0xdc,0xc6,0xfd,0xce,
-0xdc,0xc6,0xfd,0xce,0xdd,0xce,0xfd,0xce,0xfd,0xc6,0xfd,0xce,0xfd,0xce,0xfd,0xce,
-0xfd,0xce,0xfd,0xce,0xfd,0xce,0xfd,0xce,0xfd,0xce,0xfd,0xce,0xdd,0xc6,0xbf,0xef,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3d,0xe7,0x3a,0xb6,
-0x5a,0xbe,0x9b,0xc6,0x9b,0xc6,0xbc,0xc6,0xdc,0xc6,0xfd,0xce,0xdd,0xc6,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0x3b,0xa6,0x11,0x23,0x31,0x33,0x52,0x3b,0x52,0x33,
-0x52,0x2b,0xb9,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x52,0x23,0x51,0x33,0x51,0x33,0x72,0x3b,
-0x72,0x33,0x93,0x33,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x37,0x85,0x10,0x23,0x72,0x3b,0x72,0x33,
-0x93,0x3b,0x31,0x23,0xf7,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xd0,0x1a,0x72,0x33,0x73,0x3b,
-0x92,0x33,0xb3,0x3b,0xd0,0x1a,0x78,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd2,0x4b,0x52,0x33,0x72,0x33,
-0x93,0x3b,0x93,0x33,0xd4,0x3b,0xf0,0x1a,0x91,0x4b,0x7e,0xef,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xd6,0x6e,0x12,0x93,0x3b,
-0x93,0x33,0xb3,0x3b,0xb3,0x33,0xd4,0x3b,0xb4,0x33,0x8f,0x12,0xef,0x2a,0x94,0x74,
-0x36,0x95,0x57,0x9d,0x36,0x95,0x57,0x9d,0x36,0x95,0x56,0x95,0x36,0x95,0x36,0x95,
-0x36,0x95,0x36,0x95,0x36,0x95,0x36,0x95,0x16,0x95,0x36,0x95,0x16,0x8d,0x36,0x95,
-0x16,0x95,0x36,0x95,0x16,0x95,0x36,0x95,0x16,0x95,0x36,0x95,0x36,0x95,0x36,0x95,
-0x36,0x95,0x36,0x95,0x36,0x95,0x57,0x9d,0x36,0x95,0x57,0x9d,0x56,0x95,0x57,0x9d,
-0x56,0x95,0x57,0x9d,0x56,0x95,0x57,0x9d,0x57,0x9d,0x77,0x9d,0x57,0x9d,0x77,0x9d,
-0x77,0x9d,0x57,0x95,0xbe,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb1,0x53,0x11,0x2b,
-0x93,0x3b,0x92,0x33,0xb3,0x3b,0xb3,0x33,0xd4,0x3b,0xf5,0x33,0x16,0x3c,0xd4,0x2b,
-0x94,0x2b,0x93,0x23,0xb4,0x2b,0xb4,0x2b,0xb5,0x2b,0xb4,0x2b,0xd5,0x33,0xd5,0x33,
-0xf5,0x3b,0xf5,0x33,0x15,0x3c,0x15,0x3c,0x35,0x44,0x35,0x44,0x56,0x4c,0x55,0x4c,
-0x76,0x4c,0x75,0x4c,0x96,0x54,0x76,0x54,0x96,0x54,0x76,0x54,0x76,0x54,0x56,0x4c,
-0x76,0x4c,0x55,0x44,0x56,0x4c,0x35,0x44,0x36,0x44,0x15,0x3c,0x15,0x3c,0xf5,0x33,
-0xf5,0x3b,0xf5,0x33,0xf5,0x33,0xd5,0x2b,0xd5,0x2b,0xb4,0x2b,0xb4,0x2b,0x93,0x2b,
-0x94,0x2b,0x32,0x1b,0xf6,0x84,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x30,0x33,
-0x52,0x2b,0x93,0x3b,0xb3,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x3b,0x16,0x3c,
-0x16,0x3c,0x57,0x3c,0x57,0x3c,0x78,0x44,0x77,0x3c,0x98,0x44,0x98,0x44,0xb8,0x4c,
-0xb8,0x4c,0xd9,0x54,0xd8,0x54,0xf9,0x5c,0xf8,0x5c,0x19,0x65,0x19,0x65,0x39,0x65,
-0x39,0x65,0x59,0x6d,0x59,0x6d,0x7a,0x75,0x59,0x6d,0x59,0x75,0x39,0x6d,0x39,0x6d,
-0x19,0x65,0x19,0x65,0xf8,0x5c,0xf9,0x5c,0xd8,0x54,0xd9,0x54,0xb8,0x54,0xb8,0x4c,
-0x98,0x4c,0x98,0x4c,0x77,0x44,0x78,0x44,0x57,0x3c,0x57,0x44,0x36,0x3c,0x36,0x3c,
-0x15,0x3c,0xf6,0x3b,0x72,0x33,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0x74,0x64,0x11,0x23,0x93,0x33,0xb3,0x33,0xd4,0x3b,0xd4,0x33,0xf5,0x3b,0xf5,0x33,
-0x16,0x3c,0x16,0x34,0x37,0x3c,0x57,0x3c,0x77,0x3c,0x57,0x3c,0x98,0x44,0x97,0x44,
-0x98,0x4c,0x98,0x4c,0xd8,0x54,0xd8,0x54,0xf8,0x5c,0xf8,0x5c,0x19,0x65,0x18,0x5d,
-0x39,0x65,0x39,0x6d,0x59,0x6d,0x59,0x6d,0x59,0x6d,0x39,0x6d,0x39,0x6d,0x18,0x65,
-0x19,0x65,0xf8,0x5c,0xf9,0x5c,0xd8,0x54,0xd8,0x54,0xb8,0x54,0xb8,0x4c,0x97,0x44,
-0x98,0x4c,0x77,0x44,0x78,0x44,0x57,0x3c,0x57,0x3c,0x16,0x3c,0x36,0x3c,0x15,0x34,
-0xf5,0x3b,0xd4,0x33,0xb4,0x33,0x7b,0xb6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xdc,0xce,0xb6,0x64,0x93,0x33,0x93,0x2b,0xb4,0x33,0xb4,0x33,0xd5,0x33,
-0xd4,0x33,0xf5,0x33,0xf5,0x33,0x16,0x34,0x16,0x34,0x36,0x3c,0x16,0x3c,0x36,0x3c,
-0x36,0x3c,0x56,0x44,0x56,0x44,0x77,0x4c,0x76,0x4c,0x97,0x4c,0x96,0x4c,0x97,0x54,
-0x97,0x54,0xb7,0x54,0xb7,0x54,0xd8,0x5c,0xb7,0x54,0xd7,0x5c,0xb7,0x54,0xb8,0x54,
-0x97,0x54,0x97,0x54,0x97,0x4c,0x97,0x4c,0x77,0x4c,0x97,0x4c,0x77,0x44,0x77,0x44,
-0x56,0x44,0x77,0x44,0x56,0x3c,0x57,0x3c,0x36,0x3c,0x36,0x3c,0x16,0x3c,0x36,0x3c,
-0x15,0x3c,0x15,0x3c,0xd4,0x33,0x18,0x6d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7e,0xef,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,
-0x5e,0xe7,0x3d,0xdf,0x5d,0xdf,0x3d,0xdf,0x3e,0xe7,0x3d,0xdf,0x3d,0xdf,0x3d,0xdf,
-0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,
-0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,0x5e,0xdf,0x3d,0xdf,
-0x5e,0xe7,0x5d,0xdf,0x5e,0xe7,0x5e,0xdf,0x5e,0xe7,0x5d,0xdf,0x5e,0xe7,0x5e,0xdf,
-0x7e,0xe7,0x5e,0xdf,0x7e,0xe7,0x5e,0xe7,0x7e,0xe7,0x7e,0xe7,0x7e,0xe7,0x7e,0xe7,
-0x7f,0xe7,0x7e,0xe7,0x7e,0xe7,0x7e,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
-0xff,0xff,0xff,0xff,0xff,0xff
-};
-
-
-#endif /* __STLOGO_H */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Inc/stm32f4xx_hal_conf.h b/Projects/STM32446E_EVAL/Examples/BSP/Inc/stm32f4xx_hal_conf.h
deleted file mode 100644
index 178ff2cfc4..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Inc/stm32f4xx_hal_conf.h
+++ /dev/null
@@ -1,396 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/inc/stm32f4xx_hal_conf.h
- * @author MCD Application Team
- * @brief HAL configuration template file.
- * This file should be copied to the application folder and renamed
- * to stm32f4xx_hal_conf.h.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F4xx_HAL_CONF_H
-#define __STM32F4xx_HAL_CONF_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-/* ########################## Module Selection ############################## */
-/**
- * @brief This is the list of modules to be used in the HAL driver
- */
-#define HAL_MODULE_ENABLED
-/* #define HAL_ADC_MODULE_ENABLED */
-/* #define HAL_CAN_MODULE_ENABLED */
-/* #define HAL_CAN_LEGACY_MODULE_ENABLED */
-/* #define HAL_CRC_MODULE_ENABLED */
-/* #define HAL_CRYP_MODULE_ENABLED */
-/* #define HAL_DAC_MODULE_ENABLED */
-#define HAL_DCMI_MODULE_ENABLED
-#define HAL_DMA_MODULE_ENABLED
-#define HAL_DMA2D_MODULE_ENABLED
-/* #define HAL_ETH_MODULE_ENABLED */
-#define HAL_FLASH_MODULE_ENABLED
-/* #define HAL_NAND_MODULE_ENABLED */
-#define HAL_NOR_MODULE_ENABLED
-/* #define HAL_PCCARD_MODULE_ENABLED */
-#define HAL_SRAM_MODULE_ENABLED
-#define HAL_SDRAM_MODULE_ENABLED
-/* #define HAL_HASH_MODULE_ENABLED */
-#define HAL_GPIO_MODULE_ENABLED
-/*#define HAL_I2C_MODULE_ENABLED */
-#define HAL_FMPI2C_MODULE_ENABLED
-#define HAL_I2S_MODULE_ENABLED
-/* #define HAL_IWDG_MODULE_ENABLED */
-/* #define HAL_LTDC_MODULE_ENABLED */
-#define HAL_PWR_MODULE_ENABLED
-#define HAL_RCC_MODULE_ENABLED
-/* #define HAL_RNG_MODULE_ENABLED */
-/* #define HAL_RTC_MODULE_ENABLED */
-#define HAL_SAI_MODULE_ENABLED
-#define HAL_SD_MODULE_ENABLED
-/* #define HAL_SPI_MODULE_ENABLED */
-#define HAL_TIM_MODULE_ENABLED
-#define HAL_UART_MODULE_ENABLED
-/* #define HAL_USART_MODULE_ENABLED */
-/* #define HAL_IRDA_MODULE_ENABLED */
-/* #define HAL_SMARTCARD_MODULE_ENABLED */
-/* #define HAL_WWDG_MODULE_ENABLED */
-#define HAL_CORTEX_MODULE_ENABLED
-/* #define HAL_PCD_MODULE_ENABLED */
-/* #define HAL_HCD_MODULE_ENABLED */
-#define HAL_QSPI_MODULE_ENABLED
-/* #define HAL_CEC_MODULE_ENABLED */
-/* #define HAL_SPDIFRX_MODULE_ENABLED */
-
-/* ########################## HSE/HSI Values adaptation ##################### */
-/**
- * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
- * This value is used by the RCC HAL module to compute the system frequency
- * (when HSE is used as system clock source, directly or through the PLL).
- */
-#if !defined (HSE_VALUE)
- #define HSE_VALUE (8000000U) /*!< Value of the External oscillator in Hz */
-#endif /* HSE_VALUE */
-
-#if !defined (HSE_STARTUP_TIMEOUT)
- #define HSE_STARTUP_TIMEOUT (100U) /*!< Time out for HSE start up, in ms */
-#endif /* HSE_STARTUP_TIMEOUT */
-
-/**
- * @brief Internal High Speed oscillator (HSI) value.
- * This value is used by the RCC HAL module to compute the system frequency
- * (when HSI is used as system clock source, directly or through the PLL).
- */
-#if !defined (HSI_VALUE)
- #define HSI_VALUE (16000000U) /*!< Value of the Internal oscillator in Hz*/
-#endif /* HSI_VALUE */
-
-/**
- * @brief Internal Low Speed oscillator (LSI) value.
- */
-#if !defined (LSI_VALUE)
- #define LSI_VALUE (32000U)
-#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
- The real value may vary depending on the variations
- in voltage and temperature. */
-/**
- * @brief External Low Speed oscillator (LSE) value.
- */
-#if !defined (LSE_VALUE)
- #define LSE_VALUE (32768U) /*!< Value of the External Low Speed oscillator in Hz */
-#endif /* LSE_VALUE */
-
-#if !defined (LSE_STARTUP_TIMEOUT)
- #define LSE_STARTUP_TIMEOUT (5000U) /*!< Time out for LSE start up, in ms */
-#endif /* LSE_STARTUP_TIMEOUT */
-
-/**
- * @brief External clock source for I2S peripheral
- * This value is used by the I2S HAL module to compute the I2S clock source
- * frequency, this source is inserted directly through I2S_CKIN pad.
- */
-#if !defined (EXTERNAL_CLOCK_VALUE)
- #define EXTERNAL_CLOCK_VALUE (12288000U) /*!< Value of the external oscillator in Hz*/
-#endif /* EXTERNAL_CLOCK_VALUE */
-
-/* Tip: To avoid modifying this file each time you need to use different HSE,
- === you can define the HSE value in your toolchain compiler preprocessor. */
-
-/* ########################### System Configuration ######################### */
-/**
- * @brief This is the HAL system configuration section
- */
-#define VDD_VALUE (3300U) /*!< Value of VDD in mv */
-#define TICK_INT_PRIORITY (0x0FU) /*!< tick interrupt priority */
-#define USE_RTOS 0
-#define PREFETCH_ENABLE 1
-#define INSTRUCTION_CACHE_ENABLE 1
-#define DATA_CACHE_ENABLE 1U
-
-#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */
-#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */
-#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */
-#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U /* CRYP register callback disabled */
-#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */
-#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U /* DCMI register callback disabled */
-#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U /* DFSDM register callback disabled */
-#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U /* DMA2D register callback disabled */
-#define USE_HAL_DSI_REGISTER_CALLBACKS 0U /* DSI register callback disabled */
-#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */
-#define USE_HAL_HASH_REGISTER_CALLBACKS 0U /* HASH register callback disabled */
-#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */
-#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */
-#define USE_HAL_FMPI2C_REGISTER_CALLBACKS 0U /* FMPI2C register callback disabled */
-#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */
-#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */
-#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U /* LPTIM register callback disabled */
-#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U /* LTDC register callback disabled */
-#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */
-#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */
-#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */
-#define USE_HAL_PCCARD_REGISTER_CALLBACKS 0U /* PCCARD register callback disabled */
-#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */
-#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U /* QSPI register callback disabled */
-#define USE_HAL_RNG_REGISTER_CALLBACKS 0U /* RNG register callback disabled */
-#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */
-#define USE_HAL_SAI_REGISTER_CALLBACKS 0U /* SAI register callback disabled */
-#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */
-#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */
-#define USE_HAL_SDRAM_REGISTER_CALLBACKS 0U /* SDRAM register callback disabled */
-#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */
-#define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */
-#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */
-#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */
-#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */
-#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */
-#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */
-#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */
-
-/* ########################## Assert Selection ############################## */
-/**
- * @brief Uncomment the line below to expanse the "assert_param" macro in the
- * HAL drivers code
- */
-/* #define USE_FULL_ASSERT 1 */
-
-
-/* ################## SPI peripheral configuration ########################## */
-
-/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
-* Activated: CRC code is present inside driver
-* Deactivated: CRC code cleaned from driver
-*/
-
-#define USE_SPI_CRC 1U
-
-/* Includes ------------------------------------------------------------------*/
-/**
- * @brief Include module's header file
- */
-
-#ifdef HAL_RCC_MODULE_ENABLED
- #include "stm32f4xx_hal_rcc.h"
-#endif /* HAL_RCC_MODULE_ENABLED */
-
-#ifdef HAL_GPIO_MODULE_ENABLED
- #include "stm32f4xx_hal_gpio.h"
-#endif /* HAL_GPIO_MODULE_ENABLED */
-
-#ifdef HAL_DMA_MODULE_ENABLED
- #include "stm32f4xx_hal_dma.h"
-#endif /* HAL_DMA_MODULE_ENABLED */
-
-#ifdef HAL_CORTEX_MODULE_ENABLED
- #include "stm32f4xx_hal_cortex.h"
-#endif /* HAL_CORTEX_MODULE_ENABLED */
-
-#ifdef HAL_ADC_MODULE_ENABLED
- #include "stm32f4xx_hal_adc.h"
-#endif /* HAL_ADC_MODULE_ENABLED */
-
-#ifdef HAL_CAN_MODULE_ENABLED
- #include "stm32f4xx_hal_can.h"
-#endif /* HAL_CAN_MODULE_ENABLED */
-
-#ifdef HAL_CAN_LEGACY_MODULE_ENABLED
- #include "stm32f4xx_hal_can_legacy.h"
-#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */
-
-#ifdef HAL_CRC_MODULE_ENABLED
- #include "stm32f4xx_hal_crc.h"
-#endif /* HAL_CRC_MODULE_ENABLED */
-
-#ifdef HAL_CRYP_MODULE_ENABLED
- #include "stm32f4xx_hal_cryp.h"
-#endif /* HAL_CRYP_MODULE_ENABLED */
-
-#ifdef HAL_DMA2D_MODULE_ENABLED
- #include "stm32f4xx_hal_dma2d.h"
-#endif /* HAL_DMA2D_MODULE_ENABLED */
-
-#ifdef HAL_DAC_MODULE_ENABLED
- #include "stm32f4xx_hal_dac.h"
-#endif /* HAL_DAC_MODULE_ENABLED */
-
-#ifdef HAL_DCMI_MODULE_ENABLED
- #include "stm32f4xx_hal_dcmi.h"
-#endif /* HAL_DCMI_MODULE_ENABLED */
-
-#ifdef HAL_ETH_MODULE_ENABLED
- #include "stm32f4xx_hal_eth.h"
-#endif /* HAL_ETH_MODULE_ENABLED */
-
-#ifdef HAL_FLASH_MODULE_ENABLED
- #include "stm32f4xx_hal_flash.h"
-#endif /* HAL_FLASH_MODULE_ENABLED */
-
-#ifdef HAL_SRAM_MODULE_ENABLED
- #include "stm32f4xx_hal_sram.h"
-#endif /* HAL_SRAM_MODULE_ENABLED */
-
-#ifdef HAL_NOR_MODULE_ENABLED
- #include "stm32f4xx_hal_nor.h"
-#endif /* HAL_NOR_MODULE_ENABLED */
-
-#ifdef HAL_NAND_MODULE_ENABLED
- #include "stm32f4xx_hal_nand.h"
-#endif /* HAL_NAND_MODULE_ENABLED */
-
-#ifdef HAL_PCCARD_MODULE_ENABLED
- #include "stm32f4xx_hal_pccard.h"
-#endif /* HAL_PCCARD_MODULE_ENABLED */
-
-#ifdef HAL_SDRAM_MODULE_ENABLED
- #include "stm32f4xx_hal_sdram.h"
-#endif /* HAL_SDRAM_MODULE_ENABLED */
-
-#ifdef HAL_HASH_MODULE_ENABLED
- #include "stm32f4xx_hal_hash.h"
-#endif /* HAL_HASH_MODULE_ENABLED */
-
-#ifdef HAL_I2C_MODULE_ENABLED
- #include "stm32f4xx_hal_i2c.h"
-#endif /* HAL_I2C_MODULE_ENABLED */
-
-#ifdef HAL_I2S_MODULE_ENABLED
- #include "stm32f4xx_hal_i2s.h"
-#endif /* HAL_I2S_MODULE_ENABLED */
-
-#ifdef HAL_IWDG_MODULE_ENABLED
- #include "stm32f4xx_hal_iwdg.h"
-#endif /* HAL_IWDG_MODULE_ENABLED */
-
-#ifdef HAL_LTDC_MODULE_ENABLED
- #include "stm32f4xx_hal_ltdc.h"
-#endif /* HAL_LTDC_MODULE_ENABLED */
-
-#ifdef HAL_PWR_MODULE_ENABLED
- #include "stm32f4xx_hal_pwr.h"
-#endif /* HAL_PWR_MODULE_ENABLED */
-
-#ifdef HAL_RNG_MODULE_ENABLED
- #include "stm32f4xx_hal_rng.h"
-#endif /* HAL_RNG_MODULE_ENABLED */
-
-#ifdef HAL_RTC_MODULE_ENABLED
- #include "stm32f4xx_hal_rtc.h"
-#endif /* HAL_RTC_MODULE_ENABLED */
-
-#ifdef HAL_SAI_MODULE_ENABLED
- #include "stm32f4xx_hal_sai.h"
-#endif /* HAL_SAI_MODULE_ENABLED */
-
-#ifdef HAL_SD_MODULE_ENABLED
- #include "stm32f4xx_hal_sd.h"
-#endif /* HAL_SD_MODULE_ENABLED */
-
-#ifdef HAL_SPI_MODULE_ENABLED
- #include "stm32f4xx_hal_spi.h"
-#endif /* HAL_SPI_MODULE_ENABLED */
-
-#ifdef HAL_TIM_MODULE_ENABLED
- #include "stm32f4xx_hal_tim.h"
-#endif /* HAL_TIM_MODULE_ENABLED */
-
-#ifdef HAL_UART_MODULE_ENABLED
- #include "stm32f4xx_hal_uart.h"
-#endif /* HAL_UART_MODULE_ENABLED */
-
-#ifdef HAL_USART_MODULE_ENABLED
- #include "stm32f4xx_hal_usart.h"
-#endif /* HAL_USART_MODULE_ENABLED */
-
-#ifdef HAL_IRDA_MODULE_ENABLED
- #include "stm32f4xx_hal_irda.h"
-#endif /* HAL_IRDA_MODULE_ENABLED */
-
-#ifdef HAL_SMARTCARD_MODULE_ENABLED
- #include "stm32f4xx_hal_smartcard.h"
-#endif /* HAL_SMARTCARD_MODULE_ENABLED */
-
-#ifdef HAL_WWDG_MODULE_ENABLED
- #include "stm32f4xx_hal_wwdg.h"
-#endif /* HAL_WWDG_MODULE_ENABLED */
-
-#ifdef HAL_PCD_MODULE_ENABLED
- #include "stm32f4xx_hal_pcd.h"
-#endif /* HAL_PCD_MODULE_ENABLED */
-
-#ifdef HAL_HCD_MODULE_ENABLED
- #include "stm32f4xx_hal_hcd.h"
-#endif /* HAL_HCD_MODULE_ENABLED */
-
-#ifdef HAL_QSPI_MODULE_ENABLED
- #include "stm32f4xx_hal_qspi.h"
-#endif /* HAL_QSPI_MODULE_ENABLED */
-
-#ifdef HAL_CEC_MODULE_ENABLED
- #include "stm32f4xx_hal_cec.h"
-#endif /* HAL_CEC_MODULE_ENABLED */
-
-#ifdef HAL_FMPI2C_MODULE_ENABLED
- #include "stm32f4xx_hal_fmpi2c.h"
-#endif /* HAL_FMPI2C1_MODULE_ENABLED */
-
-#ifdef HAL_SPDIFRX_MODULE_ENABLED
- #include "stm32f4xx_hal_spdifrx.h"
-#endif /* HAL_SPDIFRX_MODULE_ENABLED */
-
-/* Exported macro ------------------------------------------------------------*/
-#ifdef USE_FULL_ASSERT
-/**
- * @brief The assert_param macro is used for function's parameters check.
- * @param expr: If expr is false, it calls assert_failed function
- * which reports the name of the source file and the source
- * line number of the call that failed.
- * If expr is true, it returns no value.
- * @retval None
- */
- #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
-/* Exported functions ------------------------------------------------------- */
- void assert_failed(uint8_t* file, uint32_t line);
-#else
- #define assert_param(expr) ((void)0U)
-#endif /* USE_FULL_ASSERT */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F4xx_HAL_CONF_H */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Inc/stm32f4xx_it.h b/Projects/STM32446E_EVAL/Examples/BSP/Inc/stm32f4xx_it.h
deleted file mode 100644
index abfb759f07..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Inc/stm32f4xx_it.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Inc/stm32f4xx_it.h
- * @author MCD Application Team
- * @brief This file contains the headers of the interrupt handlers.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F4xx_IT_H
-#define __STM32F4xx_IT_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-
-void NMI_Handler(void);
-void HardFault_Handler(void);
-void MemManage_Handler(void);
-void BusFault_Handler(void);
-void UsageFault_Handler(void);
-void SVC_Handler(void);
-void DebugMon_Handler(void);
-void PendSV_Handler(void);
-void SysTick_Handler(void);
-void EXTI0_IRQHandler(void);
-void EXTI2_IRQHandler(void);
-void EXTI15_10_IRQHandler(void);
-void DMA2_Stream0_IRQHandler(void);
-void BSP_SD_DMA_Tx_IRQHandler(void);
-void DMA2_Stream1_IRQHandler(void);
-void DCMI_IRQHandler(void);
-void QUADSPI_IRQHandler(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __STM32F4xx_IT_H */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/MDK-ARM/Project.uvoptx b/Projects/STM32446E_EVAL/Examples/BSP/MDK-ARM/Project.uvoptx
deleted file mode 100644
index 023222a426..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/MDK-ARM/Project.uvoptx
+++ /dev/null
@@ -1,1049 +0,0 @@
-
-
-
- 1.0
-
- ### uVision Project, (C) Keil Software
-
-
- *.c
- *.s*; *.src; *.a*
- *.obj
- *.lib
- *.txt; *.h; *.inc
- *.plm
- *.cpp
- 0
-
-
-
- 0
- 0
-
-
-
- STM32446E_EVAL
- 0x4
- ARM-ADS
-
- 8000000
-
- 1
- 1
- 0
- 1
- 0
-
-
- 1
- 65535
- 0
- 0
- 0
-
-
- 79
- 66
- 8
-
-
-
- 1
- 1
- 1
- 0
- 1
- 1
- 0
- 1
- 0
- 0
- 0
- 0
-
-
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 0
- 0
-
-
- 1
- 0
- 1
-
- 18
-
- 0
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 0
- 0
- 11
-
-
-
-
-
-
-
-
-
-
- STLink\ST-LINKIII-KEIL_SWO.dll
-
-
-
- 0
- UL2CM3
- UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_512 -FS08000000 -FL080000 -FP0($$Device:STM32F446ZE$CMSIS\Flash\STM32F4xx_512.FLM))
-
-
- 0
- ST-LINKIII-KEIL_SWO
- -U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F446ZE$CMSIS\Flash\STM32F4xx_512.FLM)
-
-
-
-
- 0
-
-
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
-
-
-
-
-
-
-
- ::CMSIS
- 0
- 0
- 0
- 1
-
-
-
- Drivers/STM32F4xx_HAL_Driver
- 0
- 0
- 0
- 0
-
- 2
- 1
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c.c
- stm32f4xx_hal_fmpi2c.c
- 0
- 0
-
-
- 2
- 2
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c
- stm32f4xx_hal.c
- 0
- 0
-
-
- 2
- 3
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c
- stm32f4xx_hal_ltdc.c
- 0
- 0
-
-
- 2
- 4
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c
- stm32f4xx_hal_cortex.c
- 0
- 0
-
-
- 2
- 5
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c
- stm32f4xx_hal_dma_ex.c
- 0
- 0
-
-
- 2
- 6
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c
- stm32f4xx_hal_pwr.c
- 0
- 0
-
-
- 2
- 7
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c
- stm32f4xx_hal_sai_ex.c
- 0
- 0
-
-
- 2
- 8
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c
- stm32f4xx_hal_flash.c
- 0
- 0
-
-
- 2
- 9
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c
- stm32f4xx_hal_rcc_ex.c
- 0
- 0
-
-
- 2
- 10
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c
- stm32f4xx_hal_flash_ex.c
- 0
- 0
-
-
- 2
- 11
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c
- stm32f4xx_hal_pwr_ex.c
- 0
- 0
-
-
- 2
- 12
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c
- stm32f4xx_hal_rcc.c
- 0
- 0
-
-
- 2
- 13
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi.c
- stm32f4xx_hal_dcmi.c
- 0
- 0
-
-
- 2
- 14
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c
- stm32f4xx_hal_dma2d.c
- 0
- 0
-
-
- 2
- 15
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c_ex.c
- stm32f4xx_hal_fmpi2c_ex.c
- 0
- 0
-
-
- 2
- 16
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c
- stm32f4xx_hal_sdram.c
- 0
- 0
-
-
- 2
- 17
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c
- stm32f4xx_hal_qspi.c
- 0
- 0
-
-
- 2
- 18
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fsmc.c
- stm32f4xx_ll_fsmc.c
- 0
- 0
-
-
- 2
- 19
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c
- stm32f4xx_ll_fmc.c
- 0
- 0
-
-
- 2
- 20
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c
- stm32f4xx_hal_uart.c
- 0
- 0
-
-
- 2
- 21
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c
- stm32f4xx_hal_sram.c
- 0
- 0
-
-
- 2
- 22
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c
- stm32f4xx_ll_sdmmc.c
- 0
- 0
-
-
- 2
- 23
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c
- stm32f4xx_hal_dma.c
- 0
- 0
-
-
- 2
- 24
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c
- stm32f4xx_hal_sd.c
- 0
- 0
-
-
- 2
- 25
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c
- stm32f4xx_hal_gpio.c
- 0
- 0
-
-
- 2
- 26
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c
- stm32f4xx_hal_sai.c
- 0
- 0
-
-
- 2
- 27
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s.c
- stm32f4xx_hal_i2s.c
- 0
- 0
-
-
- 2
- 28
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s_ex.c
- stm32f4xx_hal_i2s_ex.c
- 0
- 0
-
-
- 2
- 29
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c
- stm32f4xx_hal_tim.c
- 0
- 0
-
-
- 2
- 30
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c
- stm32f4xx_hal_tim_ex.c
- 0
- 0
-
-
-
-
- Example/Utilities
- 0
- 0
- 0
- 0
-
- 3
- 31
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Utilities\Log\lcd_log.c
- lcd_log.c
- 0
- 0
-
-
-
-
- Example/MDK-ARM
- 0
- 0
- 0
- 0
-
- 4
- 32
- 2
- 0
- 0
- 0
- 0
- startup_stm32f446xx.s
- startup_stm32f446xx.s
- 0
- 0
-
-
-
-
- Example/User
- 0
- 0
- 0
- 0
-
- 5
- 33
- 1
- 0
- 0
- 0
- 0
- ..\Src\eeprom.c
- eeprom.c
- 0
- 0
-
-
- 5
- 34
- 1
- 0
- 0
- 0
- 0
- ..\Src\audio.c
- audio.c
- 0
- 0
-
-
- 5
- 35
- 1
- 0
- 0
- 0
- 0
- ..\Src\qspi.c
- qspi.c
- 0
- 0
-
-
- 5
- 36
- 1
- 0
- 0
- 0
- 0
- ..\Src\sd.c
- sd.c
- 0
- 0
-
-
- 5
- 37
- 1
- 0
- 0
- 0
- 0
- ..\Src\touchscreen.c
- touchscreen.c
- 0
- 0
-
-
- 5
- 38
- 1
- 0
- 0
- 0
- 0
- ..\Src\log.c
- log.c
- 0
- 0
-
-
- 5
- 39
- 1
- 0
- 0
- 0
- 0
- ..\Src\ts_calibration.c
- ts_calibration.c
- 0
- 0
-
-
- 5
- 40
- 1
- 0
- 0
- 0
- 0
- ..\Src\stm32f4xx_it.c
- stm32f4xx_it.c
- 0
- 0
-
-
- 5
- 41
- 1
- 0
- 0
- 0
- 0
- ..\Src\camera.c
- camera.c
- 0
- 0
-
-
- 5
- 42
- 1
- 0
- 0
- 0
- 0
- ..\Src\lcd.c
- lcd.c
- 0
- 0
-
-
- 5
- 43
- 1
- 0
- 0
- 0
- 0
- ..\Src\joystick.c
- joystick.c
- 0
- 0
-
-
- 5
- 44
- 1
- 0
- 0
- 0
- 0
- ..\Src\sdram.c
- sdram.c
- 0
- 0
-
-
- 5
- 45
- 1
- 0
- 0
- 0
- 0
- ..\Src\main.c
- main.c
- 0
- 0
-
-
-
-
- Drivers/BSP/STM32446E_EVAL
- 0
- 0
- 0
- 0
-
- 6
- 46
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_eeprom.c
- stm32446e_eval_eeprom.c
- 0
- 0
-
-
- 6
- 47
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_io.c
- stm32446e_eval_io.c
- 0
- 0
-
-
- 6
- 48
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval.c
- stm32446e_eval.c
- 0
- 0
-
-
- 6
- 49
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_sd.c
- stm32446e_eval_sd.c
- 0
- 0
-
-
- 6
- 50
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_sdram.c
- stm32446e_eval_sdram.c
- 0
- 0
-
-
- 6
- 51
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_audio.c
- stm32446e_eval_audio.c
- 0
- 0
-
-
- 6
- 52
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_qspi.c
- stm32446e_eval_qspi.c
- 0
- 0
-
-
- 6
- 53
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_camera.c
- stm32446e_eval_camera.c
- 0
- 0
-
-
- 6
- 54
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_lcd.c
- stm32446e_eval_lcd.c
- 0
- 0
-
-
- 6
- 55
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_ts.c
- stm32446e_eval_ts.c
- 0
- 0
-
-
-
-
- Drivers/CMSIS
- 0
- 0
- 0
- 0
-
- 7
- 56
- 1
- 0
- 0
- 0
- 0
- ..\Src\system_stm32f4xx.c
- system_stm32f4xx.c
- 0
- 0
-
-
-
-
- Drivers/BSP/Components
- 0
- 0
- 0
- 0
-
- 8
- 57
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\Components\wm8994\wm8994.c
- wm8994.c
- 0
- 0
-
-
- 8
- 58
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\Components\s5k5cag\s5k5cag.c
- s5k5cag.c
- 0
- 0
-
-
- 8
- 59
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\Components\mfxstm32l152\mfxstm32l152.c
- mfxstm32l152.c
- 0
- 0
-
-
- 8
- 60
- 1
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Drivers\BSP\Components\ili9325\ili9325.c
- ili9325.c
- 0
- 0
-
-
-
-
- Doc
- 0
- 0
- 0
- 0
-
- 9
- 61
- 5
- 0
- 0
- 0
- 0
- ..\readme.txt
- readme.txt
- 0
- 0
-
-
-
-
- Middlewares/PDM
- 0
- 0
- 0
- 0
-
- 10
- 62
- 4
- 0
- 0
- 0
- 0
- ..\..\..\..\..\Middlewares\ST\STM32_Audio\Addons\PDM\libPDMFilter_CM4_Keil_wc16.lib
- libPDMFilter_CM4_Keil_wc16.lib
- 0
- 0
-
-
-
-
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/MDK-ARM/Project.uvprojx b/Projects/STM32446E_EVAL/Examples/BSP/MDK-ARM/Project.uvprojx
deleted file mode 100644
index 49f2b2be20..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/MDK-ARM/Project.uvprojx
+++ /dev/null
@@ -1,788 +0,0 @@
-
-
-
- 2.1
-
- ### uVision Project, (C) Keil Software
-
-
-
- STM32446E_EVAL
- 0x4
- ARM-ADS
-
-
- STM32F446ZE
- STMicroelectronics
- Keil.STM32F4xx_DFP.2.3.6
- http://www.keil.com/pack
- IRAM(0x20000000-0x2001FFFF) IROM(0x8000000-0x807FFFF) CLOCK(25000000) CPUTYPE("Cortex-M4") FPU2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $$Device:STM32F446ZE$CMSIS\SVD\STM32F446x.svd
- 0
- 0
-
-
-
-
-
-
- 0
- 0
- 0
- 0
- 1
-
- STM32446E_EVAL\
- STM32446E_EVAL
- 1
- 0
- 0
- 1
- 1
-
- 1
- 0
- 0
-
- 0
- 0
-
-
- 0
- 0
- 0
- 0
-
-
- 0
- 0
-
-
- 0
- 0
- 0
- 0
-
-
- 0
- 0
-
-
- 0
- 0
-
- 0
-
-
-
- 0
- 0
- 0
- 0
- 0
- 1
- 0
- 0
- 0
- 0
- 3
-
-
- 0
-
-
- SARMCM3.DLL
- -REMAP
- DCM.DLL
- -pCM3
- SARMCM3.DLL
-
- TCM.DLL
- -pCM3
-
-
-
- 1
- 0
- 0
- 0
- 16
-
-
- 0
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 0
- 1
-
-
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
-
- 0
- 11
-
-
-
-
-
-
-
-
-
-
-
-
-
- STLink\ST-LINKIII-KEIL_SWO.dll
-
-
-
-
- 1
- 0
- 0
- 1
- 1
- 4107
-
- 1
- STLink\ST-LINKIII-KEIL_SWO.dll
-
-
-
-
-
- 0
-
-
-
- 0
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 0
- 1
- 1
- 0
- 1
- 1
- 0
- 0
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 0
- 0
- "Cortex-M4"
-
- 0
- 0
- 0
- 1
- 1
- 0
- 0
- 2
- 0
- 0
- 8
- 1
- 0
- 0
- 3
- 3
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 1
- 0
- 0
- 0
- 0
- 1
- 0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x20000000
- 0x20000
-
-
- 1
- 0x8000000
- 0x80000
-
-
- 0
- 0x0
- 0x0
-
-
- 1
- 0x0
- 0x0
-
-
- 1
- 0x0
- 0x0
-
-
- 1
- 0x0
- 0x0
-
-
- 1
- 0x8000000
- 0x80000
-
-
- 1
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x0
- 0x0
-
-
- 0
- 0x20000000
- 0x20000
-
-
- 0
- 0x0
- 0x0
-
-
-
-
-
- 1
- 4
- 0
- 0
- 1
- 0
- 0
- 0
- 0
- 0
- 2
- 0
- 0
- 0
- 0
-
- --C99
- USE_HAL_DRIVER,STM32F446xx,USE_STM32446E_EVAL,USE_IOEXPANDER
-
- ..\Inc;..\..\..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Inc;..\..\..\..\..\Drivers\BSP\STM32446E_EVAL;..\..\..\..\..\Drivers\BSP\Components\Common;..\..\..\..\..\Utilities\Log
-
-
-
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
-
-
-
-
-
-
-
-
- 1
- 0
- 0
- 0
- 1
- 0
- 0x08000000
- 0x20000000
-
-
-
-
- --diag_suppress=L6329
-
-
-
-
-
-
-
- ::CMSIS
-
-
- Drivers/STM32F4xx_HAL_Driver
-
-
- stm32f4xx_hal_fmpi2c.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c.c
-
-
- stm32f4xx_hal.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c
-
-
- stm32f4xx_hal_ltdc.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c
-
-
- stm32f4xx_hal_cortex.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c
-
-
- stm32f4xx_hal_dma_ex.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c
-
-
- stm32f4xx_hal_pwr.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c
-
-
- stm32f4xx_hal_sai_ex.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c
-
-
- stm32f4xx_hal_flash.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c
-
-
- stm32f4xx_hal_rcc_ex.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c
-
-
- stm32f4xx_hal_flash_ex.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c
-
-
- stm32f4xx_hal_pwr_ex.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c
-
-
- stm32f4xx_hal_rcc.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c
-
-
- stm32f4xx_hal_dcmi.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi.c
-
-
- stm32f4xx_hal_dma2d.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c
-
-
- stm32f4xx_hal_fmpi2c_ex.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c_ex.c
-
-
- stm32f4xx_hal_sdram.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c
-
-
- stm32f4xx_hal_qspi.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c
-
-
- stm32f4xx_ll_fsmc.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fsmc.c
-
-
- stm32f4xx_ll_fmc.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c
-
-
- stm32f4xx_hal_uart.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c
-
-
- stm32f4xx_hal_sram.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c
-
-
- stm32f4xx_ll_sdmmc.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c
-
-
- stm32f4xx_hal_dma.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c
-
-
- stm32f4xx_hal_sd.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c
-
-
- stm32f4xx_hal_gpio.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c
-
-
- stm32f4xx_hal_sai.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c
-
-
- stm32f4xx_hal_i2s.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s.c
-
-
- stm32f4xx_hal_i2s_ex.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s_ex.c
-
-
- stm32f4xx_hal_tim.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c
-
-
- stm32f4xx_hal_tim_ex.c
- 1
- ..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c
-
-
-
-
- Example/Utilities
-
-
- lcd_log.c
- 1
- ..\..\..\..\..\Utilities\Log\lcd_log.c
-
-
-
-
- Example/MDK-ARM
-
-
- startup_stm32f446xx.s
- 2
- startup_stm32f446xx.s
-
-
-
-
- Example/User
-
-
- eeprom.c
- 1
- ..\Src\eeprom.c
-
-
- audio.c
- 1
- ..\Src\audio.c
-
-
- qspi.c
- 1
- ..\Src\qspi.c
-
-
- sd.c
- 1
- ..\Src\sd.c
-
-
- touchscreen.c
- 1
- ..\Src\touchscreen.c
-
-
- log.c
- 1
- ..\Src\log.c
-
-
- ts_calibration.c
- 1
- ..\Src\ts_calibration.c
-
-
- stm32f4xx_it.c
- 1
- ..\Src\stm32f4xx_it.c
-
-
- camera.c
- 1
- ..\Src\camera.c
-
-
- lcd.c
- 1
- ..\Src\lcd.c
-
-
- joystick.c
- 1
- ..\Src\joystick.c
-
-
- sdram.c
- 1
- ..\Src\sdram.c
-
-
- main.c
- 1
- ..\Src\main.c
-
-
-
-
- Drivers/BSP/STM32446E_EVAL
-
-
- stm32446e_eval_eeprom.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_eeprom.c
-
-
- stm32446e_eval_io.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_io.c
-
-
- stm32446e_eval.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval.c
-
-
- stm32446e_eval_sd.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_sd.c
-
-
- stm32446e_eval_sdram.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_sdram.c
-
-
- stm32446e_eval_audio.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_audio.c
-
-
- stm32446e_eval_qspi.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_qspi.c
-
-
- stm32446e_eval_camera.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_camera.c
-
-
- stm32446e_eval_lcd.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_lcd.c
-
-
- stm32446e_eval_ts.c
- 1
- ..\..\..\..\..\Drivers\BSP\STM32446E_EVAL\stm32446e_eval_ts.c
-
-
-
-
- Drivers/CMSIS
-
-
- system_stm32f4xx.c
- 1
- ..\Src\system_stm32f4xx.c
-
-
-
-
- Drivers/BSP/Components
-
-
- wm8994.c
- 1
- ..\..\..\..\..\Drivers\BSP\Components\wm8994\wm8994.c
-
-
- s5k5cag.c
- 1
- ..\..\..\..\..\Drivers\BSP\Components\s5k5cag\s5k5cag.c
-
-
- ov5640.c
- 1
- ..\..\..\..\..\Drivers\BSP\Components\ov5640\ov5640.c
-
-
- mfxstm32l152.c
- 1
- ..\..\..\..\..\Drivers\BSP\Components\mfxstm32l152\mfxstm32l152.c
-
-
- ili9325.c
- 1
- ..\..\..\..\..\Drivers\BSP\Components\ili9325\ili9325.c
-
-
-
-
- Doc
-
-
- readme.txt
- 5
- ..\readme.txt
-
-
-
-
- Middlewares/PDM
-
-
- libPDMFilter_CM4_Keil_wc16.lib
- 4
- ..\..\..\..\..\Middlewares\ST\STM32_Audio\Addons\PDM\Lib\libPDMFilter_CM4_Keil_wc16.lib
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/MDK-ARM/startup_stm32f446xx.s b/Projects/STM32446E_EVAL/Examples/BSP/MDK-ARM/startup_stm32f446xx.s
deleted file mode 100644
index 4e397d7383..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/MDK-ARM/startup_stm32f446xx.s
+++ /dev/null
@@ -1,445 +0,0 @@
-;********************************************************************************
-;* File Name : startup_stm32f446xx.s
-;* Author : MCD Application Team
-;* Description : STM32F446x devices vector table for MDK-ARM toolchain.
-;* This module performs:
-;* - Set the initial SP
-;* - Set the initial PC == Reset_Handler
-;* - Set the vector table entries with the exceptions ISR address
-;* After Reset the CortexM4 processor is in Thread mode,
-;* priority is Privileged, and the Stack is set to Main.
-;* <<< Use Configuration Wizard in Context Menu >>>
-;*******************************************************************************
-;* @attention
-;*
-;* Copyright (c) 2017 STMicroelectronics.
-;* All rights reserved.
-;*
-;* This software is licensed under terms that can be found in the LICENSE file
-;* in the root directory of this software component.
-;* If no LICENSE file comes with this software, it is provided AS-IS.
-;*
-;*******************************************************************************
-
-; Amount of memory (in bytes) allocated for Stack
-; Tailor this value to your application needs
-; Stack Configuration
-; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-;
-
-Stack_Size EQU 0x400;
-
- AREA STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem SPACE Stack_Size
-__initial_sp
-
-
-; Heap Configuration
-; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-;
-
-Heap_Size EQU 0x200;
-
- AREA HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem SPACE Heap_Size
-__heap_limit
-
- PRESERVE8
- THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
- AREA RESET, DATA, READONLY
- EXPORT __Vectors
- EXPORT __Vectors_End
- EXPORT __Vectors_Size
-
-__Vectors DCD __initial_sp ; Top of Stack
- DCD Reset_Handler ; Reset Handler
- DCD NMI_Handler ; NMI Handler
- DCD HardFault_Handler ; Hard Fault Handler
- DCD MemManage_Handler ; MPU Fault Handler
- DCD BusFault_Handler ; Bus Fault Handler
- DCD UsageFault_Handler ; Usage Fault Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SVC_Handler ; SVCall Handler
- DCD DebugMon_Handler ; Debug Monitor Handler
- DCD 0 ; Reserved
- DCD PendSV_Handler ; PendSV Handler
- DCD SysTick_Handler ; SysTick Handler
-
- ; External Interrupts
- DCD WWDG_IRQHandler ; Window WatchDog
- DCD PVD_IRQHandler ; PVD through EXTI Line detection
- DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
- DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
- DCD FLASH_IRQHandler ; FLASH
- DCD RCC_IRQHandler ; RCC
- DCD EXTI0_IRQHandler ; EXTI Line0
- DCD EXTI1_IRQHandler ; EXTI Line1
- DCD EXTI2_IRQHandler ; EXTI Line2
- DCD EXTI3_IRQHandler ; EXTI Line3
- DCD EXTI4_IRQHandler ; EXTI Line4
- DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0
- DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1
- DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2
- DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3
- DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4
- DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5
- DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6
- DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s
- DCD CAN1_TX_IRQHandler ; CAN1 TX
- DCD CAN1_RX0_IRQHandler ; CAN1 RX0
- DCD CAN1_RX1_IRQHandler ; CAN1 RX1
- DCD CAN1_SCE_IRQHandler ; CAN1 SCE
- DCD EXTI9_5_IRQHandler ; External Line[9:5]s
- DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9
- DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10
- DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11
- DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
- DCD TIM2_IRQHandler ; TIM2
- DCD TIM3_IRQHandler ; TIM3
- DCD TIM4_IRQHandler ; TIM4
- DCD I2C1_EV_IRQHandler ; I2C1 Event
- DCD I2C1_ER_IRQHandler ; I2C1 Error
- DCD I2C2_EV_IRQHandler ; I2C2 Event
- DCD I2C2_ER_IRQHandler ; I2C2 Error
- DCD SPI1_IRQHandler ; SPI1
- DCD SPI2_IRQHandler ; SPI2
- DCD USART1_IRQHandler ; USART1
- DCD USART2_IRQHandler ; USART2
- DCD USART3_IRQHandler ; USART3
- DCD EXTI15_10_IRQHandler ; External Line[15:10]s
- DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
- DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line
- DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12
- DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13
- DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14
- DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare
- DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7
- DCD FMC_IRQHandler ; FMC
- DCD SDIO_IRQHandler ; SDIO
- DCD TIM5_IRQHandler ; TIM5
- DCD SPI3_IRQHandler ; SPI3
- DCD UART4_IRQHandler ; UART4
- DCD UART5_IRQHandler ; UART5
- DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
- DCD TIM7_IRQHandler ; TIM7
- DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0
- DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1
- DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2
- DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3
- DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD CAN2_TX_IRQHandler ; CAN2 TX
- DCD CAN2_RX0_IRQHandler ; CAN2 RX0
- DCD CAN2_RX1_IRQHandler ; CAN2 RX1
- DCD CAN2_SCE_IRQHandler ; CAN2 SCE
- DCD OTG_FS_IRQHandler ; USB OTG FS
- DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5
- DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6
- DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7
- DCD USART6_IRQHandler ; USART6
- DCD I2C3_EV_IRQHandler ; I2C3 event
- DCD I2C3_ER_IRQHandler ; I2C3 error
- DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out
- DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In
- DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI
- DCD OTG_HS_IRQHandler ; USB OTG HS
- DCD DCMI_IRQHandler ; DCMI
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD FPU_IRQHandler ; FPU
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SPI4_IRQHandler ; SPI4
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SAI1_IRQHandler ; SAI1
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SAI2_IRQHandler ; SAI2
- DCD QUADSPI_IRQHandler ; QuadSPI
- DCD CEC_IRQHandler ; CEC
- DCD SPDIF_RX_IRQHandler ; SPDIF RX
- DCD FMPI2C1_EV_IRQHandler ;FMPI2C Event
- DCD FMPI2C1_ER_IRQHandler ;FMPI2C Error
-__Vectors_End
-
-__Vectors_Size EQU __Vectors_End - __Vectors
-
- AREA |.text|, CODE, READONLY
-
-; Reset handler
-Reset_Handler PROC
- EXPORT Reset_Handler [WEAK]
- IMPORT SystemInit
- IMPORT __main
-
- LDR R0, =SystemInit
- BLX R0
- LDR R0, =__main
- BX R0
- ENDP
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-
-NMI_Handler PROC
- EXPORT NMI_Handler [WEAK]
- B .
- ENDP
-HardFault_Handler\
- PROC
- EXPORT HardFault_Handler [WEAK]
- B .
- ENDP
-MemManage_Handler\
- PROC
- EXPORT MemManage_Handler [WEAK]
- B .
- ENDP
-BusFault_Handler\
- PROC
- EXPORT BusFault_Handler [WEAK]
- B .
- ENDP
-UsageFault_Handler\
- PROC
- EXPORT UsageFault_Handler [WEAK]
- B .
- ENDP
-SVC_Handler PROC
- EXPORT SVC_Handler [WEAK]
- B .
- ENDP
-DebugMon_Handler\
- PROC
- EXPORT DebugMon_Handler [WEAK]
- B .
- ENDP
-PendSV_Handler PROC
- EXPORT PendSV_Handler [WEAK]
- B .
- ENDP
-SysTick_Handler PROC
- EXPORT SysTick_Handler [WEAK]
- B .
- ENDP
-
-Default_Handler PROC
-
- EXPORT WWDG_IRQHandler [WEAK]
- EXPORT PVD_IRQHandler [WEAK]
- EXPORT TAMP_STAMP_IRQHandler [WEAK]
- EXPORT RTC_WKUP_IRQHandler [WEAK]
- EXPORT FLASH_IRQHandler [WEAK]
- EXPORT RCC_IRQHandler [WEAK]
- EXPORT EXTI0_IRQHandler [WEAK]
- EXPORT EXTI1_IRQHandler [WEAK]
- EXPORT EXTI2_IRQHandler [WEAK]
- EXPORT EXTI3_IRQHandler [WEAK]
- EXPORT EXTI4_IRQHandler [WEAK]
- EXPORT DMA1_Stream0_IRQHandler [WEAK]
- EXPORT DMA1_Stream1_IRQHandler [WEAK]
- EXPORT DMA1_Stream2_IRQHandler [WEAK]
- EXPORT DMA1_Stream3_IRQHandler [WEAK]
- EXPORT DMA1_Stream4_IRQHandler [WEAK]
- EXPORT DMA1_Stream5_IRQHandler [WEAK]
- EXPORT DMA1_Stream6_IRQHandler [WEAK]
- EXPORT ADC_IRQHandler [WEAK]
- EXPORT CAN1_TX_IRQHandler [WEAK]
- EXPORT CAN1_RX0_IRQHandler [WEAK]
- EXPORT CAN1_RX1_IRQHandler [WEAK]
- EXPORT CAN1_SCE_IRQHandler [WEAK]
- EXPORT EXTI9_5_IRQHandler [WEAK]
- EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK]
- EXPORT TIM1_UP_TIM10_IRQHandler [WEAK]
- EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK]
- EXPORT TIM1_CC_IRQHandler [WEAK]
- EXPORT TIM2_IRQHandler [WEAK]
- EXPORT TIM3_IRQHandler [WEAK]
- EXPORT TIM4_IRQHandler [WEAK]
- EXPORT I2C1_EV_IRQHandler [WEAK]
- EXPORT I2C1_ER_IRQHandler [WEAK]
- EXPORT I2C2_EV_IRQHandler [WEAK]
- EXPORT I2C2_ER_IRQHandler [WEAK]
- EXPORT SPI1_IRQHandler [WEAK]
- EXPORT SPI2_IRQHandler [WEAK]
- EXPORT USART1_IRQHandler [WEAK]
- EXPORT USART2_IRQHandler [WEAK]
- EXPORT USART3_IRQHandler [WEAK]
- EXPORT EXTI15_10_IRQHandler [WEAK]
- EXPORT RTC_Alarm_IRQHandler [WEAK]
- EXPORT OTG_FS_WKUP_IRQHandler [WEAK]
- EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK]
- EXPORT TIM8_UP_TIM13_IRQHandler [WEAK]
- EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK]
- EXPORT TIM8_CC_IRQHandler [WEAK]
- EXPORT DMA1_Stream7_IRQHandler [WEAK]
- EXPORT FMC_IRQHandler [WEAK]
- EXPORT SDIO_IRQHandler [WEAK]
- EXPORT TIM5_IRQHandler [WEAK]
- EXPORT SPI3_IRQHandler [WEAK]
- EXPORT UART4_IRQHandler [WEAK]
- EXPORT UART5_IRQHandler [WEAK]
- EXPORT TIM6_DAC_IRQHandler [WEAK]
- EXPORT TIM7_IRQHandler [WEAK]
- EXPORT DMA2_Stream0_IRQHandler [WEAK]
- EXPORT DMA2_Stream1_IRQHandler [WEAK]
- EXPORT DMA2_Stream2_IRQHandler [WEAK]
- EXPORT DMA2_Stream3_IRQHandler [WEAK]
- EXPORT DMA2_Stream4_IRQHandler [WEAK]
- EXPORT CAN2_TX_IRQHandler [WEAK]
- EXPORT CAN2_RX0_IRQHandler [WEAK]
- EXPORT CAN2_RX1_IRQHandler [WEAK]
- EXPORT CAN2_SCE_IRQHandler [WEAK]
- EXPORT OTG_FS_IRQHandler [WEAK]
- EXPORT DMA2_Stream5_IRQHandler [WEAK]
- EXPORT DMA2_Stream6_IRQHandler [WEAK]
- EXPORT DMA2_Stream7_IRQHandler [WEAK]
- EXPORT USART6_IRQHandler [WEAK]
- EXPORT I2C3_EV_IRQHandler [WEAK]
- EXPORT I2C3_ER_IRQHandler [WEAK]
- EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK]
- EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK]
- EXPORT OTG_HS_WKUP_IRQHandler [WEAK]
- EXPORT OTG_HS_IRQHandler [WEAK]
- EXPORT DCMI_IRQHandler [WEAK]
- EXPORT FPU_IRQHandler [WEAK]
- EXPORT SPI4_IRQHandler [WEAK]
- EXPORT SAI1_IRQHandler [WEAK]
- EXPORT SPI4_IRQHandler [WEAK]
- EXPORT SAI1_IRQHandler [WEAK]
- EXPORT SAI2_IRQHandler [WEAK]
- EXPORT QUADSPI_IRQHandler [WEAK]
- EXPORT CEC_IRQHandler [WEAK]
- EXPORT SPDIF_RX_IRQHandler [WEAK]
- EXPORT FMPI2C1_EV_IRQHandler [WEAK]
- EXPORT FMPI2C1_ER_IRQHandler [WEAK]
-
-WWDG_IRQHandler
-PVD_IRQHandler
-TAMP_STAMP_IRQHandler
-RTC_WKUP_IRQHandler
-FLASH_IRQHandler
-RCC_IRQHandler
-EXTI0_IRQHandler
-EXTI1_IRQHandler
-EXTI2_IRQHandler
-EXTI3_IRQHandler
-EXTI4_IRQHandler
-DMA1_Stream0_IRQHandler
-DMA1_Stream1_IRQHandler
-DMA1_Stream2_IRQHandler
-DMA1_Stream3_IRQHandler
-DMA1_Stream4_IRQHandler
-DMA1_Stream5_IRQHandler
-DMA1_Stream6_IRQHandler
-ADC_IRQHandler
-CAN1_TX_IRQHandler
-CAN1_RX0_IRQHandler
-CAN1_RX1_IRQHandler
-CAN1_SCE_IRQHandler
-EXTI9_5_IRQHandler
-TIM1_BRK_TIM9_IRQHandler
-TIM1_UP_TIM10_IRQHandler
-TIM1_TRG_COM_TIM11_IRQHandler
-TIM1_CC_IRQHandler
-TIM2_IRQHandler
-TIM3_IRQHandler
-TIM4_IRQHandler
-I2C1_EV_IRQHandler
-I2C1_ER_IRQHandler
-I2C2_EV_IRQHandler
-I2C2_ER_IRQHandler
-SPI1_IRQHandler
-SPI2_IRQHandler
-USART1_IRQHandler
-USART2_IRQHandler
-USART3_IRQHandler
-EXTI15_10_IRQHandler
-RTC_Alarm_IRQHandler
-OTG_FS_WKUP_IRQHandler
-TIM8_BRK_TIM12_IRQHandler
-TIM8_UP_TIM13_IRQHandler
-TIM8_TRG_COM_TIM14_IRQHandler
-TIM8_CC_IRQHandler
-DMA1_Stream7_IRQHandler
-FMC_IRQHandler
-SDIO_IRQHandler
-TIM5_IRQHandler
-SPI3_IRQHandler
-UART4_IRQHandler
-UART5_IRQHandler
-TIM6_DAC_IRQHandler
-TIM7_IRQHandler
-DMA2_Stream0_IRQHandler
-DMA2_Stream1_IRQHandler
-DMA2_Stream2_IRQHandler
-DMA2_Stream3_IRQHandler
-DMA2_Stream4_IRQHandler
-CAN2_TX_IRQHandler
-CAN2_RX0_IRQHandler
-CAN2_RX1_IRQHandler
-CAN2_SCE_IRQHandler
-OTG_FS_IRQHandler
-DMA2_Stream5_IRQHandler
-DMA2_Stream6_IRQHandler
-DMA2_Stream7_IRQHandler
-USART6_IRQHandler
-I2C3_EV_IRQHandler
-I2C3_ER_IRQHandler
-OTG_HS_EP1_OUT_IRQHandler
-OTG_HS_EP1_IN_IRQHandler
-OTG_HS_WKUP_IRQHandler
-OTG_HS_IRQHandler
-DCMI_IRQHandler
-FPU_IRQHandler
-SPI4_IRQHandler
-SAI1_IRQHandler
-SAI2_IRQHandler
-QUADSPI_IRQHandler
-CEC_IRQHandler
-SPDIF_RX_IRQHandler
-FMPI2C1_EV_IRQHandler
-FMPI2C1_ER_IRQHandler
- B .
-
- ENDP
-
- ALIGN
-
-;*******************************************************************************
-; User Stack and Heap initialization
-;*******************************************************************************
- IF :DEF:__MICROLIB
-
- EXPORT __initial_sp
- EXPORT __heap_base
- EXPORT __heap_limit
-
- ELSE
-
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
-
-__user_initial_stackheap
-
- LDR R0, = Heap_Mem
- LDR R1, =(Stack_Mem + Stack_Size)
- LDR R2, = (Heap_Mem + Heap_Size)
- LDR R3, = Stack_Mem
- BX LR
-
- ALIGN
-
- ENDIF
-
- END
-
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/.cproject b/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/.cproject
deleted file mode 100644
index 6e0cbe9494..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/.cproject
+++ /dev/null
@@ -1,172 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/.project b/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/.project
deleted file mode 100644
index dfc36ec16f..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/.project
+++ /dev/null
@@ -1,339 +0,0 @@
-
-
- BSP
-
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.genmakebuilder
- clean,full,incremental,
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
- full,incremental,
-
-
-
-
-
- com.st.stm32cube.ide.mcu.MCUProjectNature
- org.eclipse.cdt.core.cnature
- com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature
- com.st.stm32cube.ide.mcu.MCUNonUnderRootProjectNature
- com.st.stm32cube.ide.mcu.MCUCubeExampleProjectNature
- com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature
- com.st.stm32cube.ide.mcu.MCURootProjectNature
- org.eclipse.cdt.managedbuilder.core.managedBuildNature
- org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
-
-
-
- Doc/readme.txt
- 1
- PARENT-1-PROJECT_LOC/readme.txt
-
-
- Drivers/CMSIS/system_stm32f4xx.c
- 1
- PARENT-1-PROJECT_LOC/Src/system_stm32f4xx.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_cortex.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_dcmi.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dcmi.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_dma.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_dma2d.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_dma_ex.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_flash.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_flash_ex.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_fmpi2c.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpi2c.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_fmpi2c_ex.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_fmpi2c_ex.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_gpio.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_i2s.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_i2s_ex.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_ltdc.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_pwr.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_pwr_ex.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_qspi.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_qspi.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_rcc.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_rcc_ex.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_sai.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sai.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_sai_ex.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sai_ex.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_sd.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_sdram.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_sram.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sram.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_tim.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_tim_ex.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_uart.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_ll_fmc.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_ll_fsmc.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fsmc.c
-
-
- Drivers/STM32F4xx_HAL_Driver/stm32f4xx_ll_sdmmc.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c
-
-
- Example/User/audio.c
- 1
- PARENT-1-PROJECT_LOC/Src/audio.c
-
-
- Example/User/camera.c
- 1
- PARENT-1-PROJECT_LOC/Src/camera.c
-
-
- Example/User/eeprom.c
- 1
- PARENT-1-PROJECT_LOC/Src/eeprom.c
-
-
- Example/User/joystick.c
- 1
- PARENT-1-PROJECT_LOC/Src/joystick.c
-
-
- Example/User/lcd.c
- 1
- PARENT-1-PROJECT_LOC/Src/lcd.c
-
-
- Example/User/log.c
- 1
- PARENT-1-PROJECT_LOC/Src/log.c
-
-
- Example/User/main.c
- 1
- PARENT-1-PROJECT_LOC/Src/main.c
-
-
- Example/User/qspi.c
- 1
- PARENT-1-PROJECT_LOC/Src/qspi.c
-
-
- Example/User/sd.c
- 1
- PARENT-1-PROJECT_LOC/Src/sd.c
-
-
- Example/User/sdram.c
- 1
- PARENT-1-PROJECT_LOC/Src/sdram.c
-
-
- Example/User/stm32f4xx_it.c
- 1
- PARENT-1-PROJECT_LOC/Src/stm32f4xx_it.c
-
-
- Example/User/touchscreen.c
- 1
- PARENT-1-PROJECT_LOC/Src/touchscreen.c
-
-
- Example/User/ts_calibration.c
- 1
- PARENT-1-PROJECT_LOC/Src/ts_calibration.c
-
-
- Example/Utilities/lcd_log.c
- 1
- PARENT-5-PROJECT_LOC/Utilities/Log/lcd_log.c
-
-
- Drivers/BSP/Components/ili9325.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/Components/ili9325/ili9325.c
-
-
- Drivers/BSP/Components/mfxstm32l152.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/Components/mfxstm32l152/mfxstm32l152.c
-
-
- Drivers/BSP/Components/ov5640.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/Components/ov5640/ov5640.c
-
-
- Drivers/BSP/Components/s5k5cag.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/Components/s5k5cag/s5k5cag.c
-
-
- Drivers/BSP/Components/wm8994.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/Components/wm8994/wm8994.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval_audio.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_audio.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval_camera.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_camera.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval_eeprom.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_eeprom.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval_io.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_io.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval_lcd.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_lcd.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval_qspi.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_qspi.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sd.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sd.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sdram.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_sdram.c
-
-
- Drivers/BSP/STM32446E_EVAL/stm32446e_eval_ts.c
- 1
- PARENT-5-PROJECT_LOC/Drivers/BSP/STM32446E_EVAL/stm32446e_eval_ts.c
-
-
-
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/Example/Startup/startup_stm32f446zetx.s b/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/Example/Startup/startup_stm32f446zetx.s
deleted file mode 100644
index 6d10b63c61..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/Example/Startup/startup_stm32f446zetx.s
+++ /dev/null
@@ -1,537 +0,0 @@
-/**
- ******************************************************************************
- * @file startup_stm32f446xx.s
- * @author MCD Application Team
- * @brief STM32F446xx Devices vector table for GCC based toolchains.
- * This module performs:
- * - Set the initial SP
- * - Set the initial PC == Reset_Handler,
- * - Set the vector table entries with the exceptions ISR address
- * - Branches to main in the C library (which eventually
- * calls main()).
- * After Reset the Cortex-M4 processor is in Thread mode,
- * priority is Privileged, and the Stack is set to Main.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
- .syntax unified
- .cpu cortex-m4
- .fpu softvfp
- .thumb
-
-.global g_pfnVectors
-.global Default_Handler
-
-/* start address for the initialization values of the .data section.
-defined in linker script */
-.word _sidata
-/* start address for the .data section. defined in linker script */
-.word _sdata
-/* end address for the .data section. defined in linker script */
-.word _edata
-/* start address for the .bss section. defined in linker script */
-.word _sbss
-/* end address for the .bss section. defined in linker script */
-.word _ebss
-/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
-
-/**
- * @brief This is the code that gets called when the processor first
- * starts execution following a reset event. Only the absolutely
- * necessary set is performed, after which the application
- * supplied main() routine is called.
- * @param None
- * @retval : None
-*/
-
- .section .text.Reset_Handler
- .weak Reset_Handler
- .type Reset_Handler, %function
-Reset_Handler:
- ldr sp, =_estack /* set stack pointer */
-
-/* Copy the data segment initializers from flash to SRAM */
- ldr r0, =_sdata
- ldr r1, =_edata
- ldr r2, =_sidata
- movs r3, #0
- b LoopCopyDataInit
-
-CopyDataInit:
- ldr r4, [r2, r3]
- str r4, [r0, r3]
- adds r3, r3, #4
-
-LoopCopyDataInit:
- adds r4, r0, r3
- cmp r4, r1
- bcc CopyDataInit
-
-/* Zero fill the bss segment. */
- ldr r2, =_sbss
- ldr r4, =_ebss
- movs r3, #0
- b LoopFillZerobss
-
-FillZerobss:
- str r3, [r2]
- adds r2, r2, #4
-
-LoopFillZerobss:
- cmp r2, r4
- bcc FillZerobss
-
-/* Call the clock system initialization function.*/
- bl SystemInit
-/* Call static constructors */
- bl __libc_init_array
-/* Call the application's entry point.*/
- bl main
- bx lr
-.size Reset_Handler, .-Reset_Handler
-
-/**
- * @brief This is the code that gets called when the processor receives an
- * unexpected interrupt. This simply enters an infinite loop, preserving
- * the system state for examination by a debugger.
- * @param None
- * @retval None
-*/
- .section .text.Default_Handler,"ax",%progbits
-Default_Handler:
-Infinite_Loop:
- b Infinite_Loop
- .size Default_Handler, .-Default_Handler
-/******************************************************************************
-*
-* The minimal vector table for a Cortex M3. Note that the proper constructs
-* must be placed on this to ensure that it ends up at physical address
-* 0x0000.0000.
-*
-*******************************************************************************/
- .section .isr_vector,"a",%progbits
- .type g_pfnVectors, %object
-
-
-g_pfnVectors:
- .word _estack
- .word Reset_Handler
-
- .word NMI_Handler
- .word HardFault_Handler
- .word MemManage_Handler
- .word BusFault_Handler
- .word UsageFault_Handler
- .word 0
- .word 0
- .word 0
- .word 0
- .word SVC_Handler
- .word DebugMon_Handler
- .word 0
- .word PendSV_Handler
- .word SysTick_Handler
-
- /* External Interrupts */
- .word WWDG_IRQHandler /* Window WatchDog */
- .word PVD_IRQHandler /* PVD through EXTI Line detection */
- .word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */
- .word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */
- .word FLASH_IRQHandler /* FLASH */
- .word RCC_IRQHandler /* RCC */
- .word EXTI0_IRQHandler /* EXTI Line0 */
- .word EXTI1_IRQHandler /* EXTI Line1 */
- .word EXTI2_IRQHandler /* EXTI Line2 */
- .word EXTI3_IRQHandler /* EXTI Line3 */
- .word EXTI4_IRQHandler /* EXTI Line4 */
- .word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */
- .word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */
- .word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */
- .word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */
- .word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */
- .word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */
- .word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */
- .word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */
- .word CAN1_TX_IRQHandler /* CAN1 TX */
- .word CAN1_RX0_IRQHandler /* CAN1 RX0 */
- .word CAN1_RX1_IRQHandler /* CAN1 RX1 */
- .word CAN1_SCE_IRQHandler /* CAN1 SCE */
- .word EXTI9_5_IRQHandler /* External Line[9:5]s */
- .word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */
- .word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */
- .word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */
- .word TIM1_CC_IRQHandler /* TIM1 Capture Compare */
- .word TIM2_IRQHandler /* TIM2 */
- .word TIM3_IRQHandler /* TIM3 */
- .word TIM4_IRQHandler /* TIM4 */
- .word I2C1_EV_IRQHandler /* I2C1 Event */
- .word I2C1_ER_IRQHandler /* I2C1 Error */
- .word I2C2_EV_IRQHandler /* I2C2 Event */
- .word I2C2_ER_IRQHandler /* I2C2 Error */
- .word SPI1_IRQHandler /* SPI1 */
- .word SPI2_IRQHandler /* SPI2 */
- .word USART1_IRQHandler /* USART1 */
- .word USART2_IRQHandler /* USART2 */
- .word USART3_IRQHandler /* USART3 */
- .word EXTI15_10_IRQHandler /* External Line[15:10]s */
- .word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */
- .word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */
- .word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */
- .word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */
- .word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */
- .word TIM8_CC_IRQHandler /* TIM8 Capture Compare */
- .word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */
- .word FMC_IRQHandler /* FMC */
- .word SDIO_IRQHandler /* SDIO */
- .word TIM5_IRQHandler /* TIM5 */
- .word SPI3_IRQHandler /* SPI3 */
- .word UART4_IRQHandler /* UART4 */
- .word UART5_IRQHandler /* UART5 */
- .word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */
- .word TIM7_IRQHandler /* TIM7 */
- .word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */
- .word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */
- .word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */
- .word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */
- .word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */
- .word 0 /* Reserved */
- .word 0 /* Reserved */
- .word CAN2_TX_IRQHandler /* CAN2 TX */
- .word CAN2_RX0_IRQHandler /* CAN2 RX0 */
- .word CAN2_RX1_IRQHandler /* CAN2 RX1 */
- .word CAN2_SCE_IRQHandler /* CAN2 SCE */
- .word OTG_FS_IRQHandler /* USB OTG FS */
- .word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */
- .word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */
- .word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */
- .word USART6_IRQHandler /* USART6 */
- .word I2C3_EV_IRQHandler /* I2C3 event */
- .word I2C3_ER_IRQHandler /* I2C3 error */
- .word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */
- .word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */
- .word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */
- .word OTG_HS_IRQHandler /* USB OTG HS */
- .word DCMI_IRQHandler /* DCMI */
- .word 0 /* Reserved */
- .word 0 /* Reserved */
- .word FPU_IRQHandler /* FPU */
- .word 0 /* Reserved */
- .word 0 /* Reserved */
- .word SPI4_IRQHandler /* SPI4 */
- .word 0 /* Reserved */
- .word 0 /* Reserved */
- .word SAI1_IRQHandler /* SAI1 */
- .word 0 /* Reserved */
- .word 0 /* Reserved */
- .word 0 /* Reserved */
- .word SAI2_IRQHandler /* SAI2 */
- .word QUADSPI_IRQHandler /* QuadSPI */
- .word CEC_IRQHandler /* CEC */
- .word SPDIF_RX_IRQHandler /* SPDIF RX */
- .word FMPI2C1_EV_IRQHandler /* FMPI2C 1 Event */
- .word FMPI2C1_ER_IRQHandler /* FMPI2C 1 Error */
-
-
- .size g_pfnVectors, .-g_pfnVectors
-
-/*******************************************************************************
-*
-* Provide weak aliases for each Exception handler to the Default_Handler.
-* As they are weak aliases, any function with the same name will override
-* this definition.
-*
-*******************************************************************************/
- .weak NMI_Handler
- .thumb_set NMI_Handler,Default_Handler
-
- .weak HardFault_Handler
- .thumb_set HardFault_Handler,Default_Handler
-
- .weak MemManage_Handler
- .thumb_set MemManage_Handler,Default_Handler
-
- .weak BusFault_Handler
- .thumb_set BusFault_Handler,Default_Handler
-
- .weak UsageFault_Handler
- .thumb_set UsageFault_Handler,Default_Handler
-
- .weak SVC_Handler
- .thumb_set SVC_Handler,Default_Handler
-
- .weak DebugMon_Handler
- .thumb_set DebugMon_Handler,Default_Handler
-
- .weak PendSV_Handler
- .thumb_set PendSV_Handler,Default_Handler
-
- .weak SysTick_Handler
- .thumb_set SysTick_Handler,Default_Handler
-
- .weak WWDG_IRQHandler
- .thumb_set WWDG_IRQHandler,Default_Handler
-
- .weak PVD_IRQHandler
- .thumb_set PVD_IRQHandler,Default_Handler
-
- .weak TAMP_STAMP_IRQHandler
- .thumb_set TAMP_STAMP_IRQHandler,Default_Handler
-
- .weak RTC_WKUP_IRQHandler
- .thumb_set RTC_WKUP_IRQHandler,Default_Handler
-
- .weak FLASH_IRQHandler
- .thumb_set FLASH_IRQHandler,Default_Handler
-
- .weak RCC_IRQHandler
- .thumb_set RCC_IRQHandler,Default_Handler
-
- .weak EXTI0_IRQHandler
- .thumb_set EXTI0_IRQHandler,Default_Handler
-
- .weak EXTI1_IRQHandler
- .thumb_set EXTI1_IRQHandler,Default_Handler
-
- .weak EXTI2_IRQHandler
- .thumb_set EXTI2_IRQHandler,Default_Handler
-
- .weak EXTI3_IRQHandler
- .thumb_set EXTI3_IRQHandler,Default_Handler
-
- .weak EXTI4_IRQHandler
- .thumb_set EXTI4_IRQHandler,Default_Handler
-
- .weak DMA1_Stream0_IRQHandler
- .thumb_set DMA1_Stream0_IRQHandler,Default_Handler
-
- .weak DMA1_Stream1_IRQHandler
- .thumb_set DMA1_Stream1_IRQHandler,Default_Handler
-
- .weak DMA1_Stream2_IRQHandler
- .thumb_set DMA1_Stream2_IRQHandler,Default_Handler
-
- .weak DMA1_Stream3_IRQHandler
- .thumb_set DMA1_Stream3_IRQHandler,Default_Handler
-
- .weak DMA1_Stream4_IRQHandler
- .thumb_set DMA1_Stream4_IRQHandler,Default_Handler
-
- .weak DMA1_Stream5_IRQHandler
- .thumb_set DMA1_Stream5_IRQHandler,Default_Handler
-
- .weak DMA1_Stream6_IRQHandler
- .thumb_set DMA1_Stream6_IRQHandler,Default_Handler
-
- .weak ADC_IRQHandler
- .thumb_set ADC_IRQHandler,Default_Handler
-
- .weak CAN1_TX_IRQHandler
- .thumb_set CAN1_TX_IRQHandler,Default_Handler
-
- .weak CAN1_RX0_IRQHandler
- .thumb_set CAN1_RX0_IRQHandler,Default_Handler
-
- .weak CAN1_RX1_IRQHandler
- .thumb_set CAN1_RX1_IRQHandler,Default_Handler
-
- .weak CAN1_SCE_IRQHandler
- .thumb_set CAN1_SCE_IRQHandler,Default_Handler
-
- .weak EXTI9_5_IRQHandler
- .thumb_set EXTI9_5_IRQHandler,Default_Handler
-
- .weak TIM1_BRK_TIM9_IRQHandler
- .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
-
- .weak TIM1_UP_TIM10_IRQHandler
- .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
-
- .weak TIM1_TRG_COM_TIM11_IRQHandler
- .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler
-
- .weak TIM1_CC_IRQHandler
- .thumb_set TIM1_CC_IRQHandler,Default_Handler
-
- .weak TIM2_IRQHandler
- .thumb_set TIM2_IRQHandler,Default_Handler
-
- .weak TIM3_IRQHandler
- .thumb_set TIM3_IRQHandler,Default_Handler
-
- .weak TIM4_IRQHandler
- .thumb_set TIM4_IRQHandler,Default_Handler
-
- .weak I2C1_EV_IRQHandler
- .thumb_set I2C1_EV_IRQHandler,Default_Handler
-
- .weak I2C1_ER_IRQHandler
- .thumb_set I2C1_ER_IRQHandler,Default_Handler
-
- .weak I2C2_EV_IRQHandler
- .thumb_set I2C2_EV_IRQHandler,Default_Handler
-
- .weak I2C2_ER_IRQHandler
- .thumb_set I2C2_ER_IRQHandler,Default_Handler
-
- .weak SPI1_IRQHandler
- .thumb_set SPI1_IRQHandler,Default_Handler
-
- .weak SPI2_IRQHandler
- .thumb_set SPI2_IRQHandler,Default_Handler
-
- .weak USART1_IRQHandler
- .thumb_set USART1_IRQHandler,Default_Handler
-
- .weak USART2_IRQHandler
- .thumb_set USART2_IRQHandler,Default_Handler
-
- .weak USART3_IRQHandler
- .thumb_set USART3_IRQHandler,Default_Handler
-
- .weak EXTI15_10_IRQHandler
- .thumb_set EXTI15_10_IRQHandler,Default_Handler
-
- .weak RTC_Alarm_IRQHandler
- .thumb_set RTC_Alarm_IRQHandler,Default_Handler
-
- .weak OTG_FS_WKUP_IRQHandler
- .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
-
- .weak TIM8_BRK_TIM12_IRQHandler
- .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler
-
- .weak TIM8_UP_TIM13_IRQHandler
- .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler
-
- .weak TIM8_TRG_COM_TIM14_IRQHandler
- .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler
-
- .weak TIM8_CC_IRQHandler
- .thumb_set TIM8_CC_IRQHandler,Default_Handler
-
- .weak DMA1_Stream7_IRQHandler
- .thumb_set DMA1_Stream7_IRQHandler,Default_Handler
-
- .weak FMC_IRQHandler
- .thumb_set FMC_IRQHandler,Default_Handler
-
- .weak SDIO_IRQHandler
- .thumb_set SDIO_IRQHandler,Default_Handler
-
- .weak TIM5_IRQHandler
- .thumb_set TIM5_IRQHandler,Default_Handler
-
- .weak SPI3_IRQHandler
- .thumb_set SPI3_IRQHandler,Default_Handler
-
- .weak UART4_IRQHandler
- .thumb_set UART4_IRQHandler,Default_Handler
-
- .weak UART5_IRQHandler
- .thumb_set UART5_IRQHandler,Default_Handler
-
- .weak TIM6_DAC_IRQHandler
- .thumb_set TIM6_DAC_IRQHandler,Default_Handler
-
- .weak TIM7_IRQHandler
- .thumb_set TIM7_IRQHandler,Default_Handler
-
- .weak DMA2_Stream0_IRQHandler
- .thumb_set DMA2_Stream0_IRQHandler,Default_Handler
-
- .weak DMA2_Stream1_IRQHandler
- .thumb_set DMA2_Stream1_IRQHandler,Default_Handler
-
- .weak DMA2_Stream2_IRQHandler
- .thumb_set DMA2_Stream2_IRQHandler,Default_Handler
-
- .weak DMA2_Stream3_IRQHandler
- .thumb_set DMA2_Stream3_IRQHandler,Default_Handler
-
- .weak DMA2_Stream4_IRQHandler
- .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
-
- .weak CAN2_TX_IRQHandler
- .thumb_set CAN2_TX_IRQHandler,Default_Handler
-
- .weak CAN2_RX0_IRQHandler
- .thumb_set CAN2_RX0_IRQHandler,Default_Handler
-
- .weak CAN2_RX1_IRQHandler
- .thumb_set CAN2_RX1_IRQHandler,Default_Handler
-
- .weak CAN2_SCE_IRQHandler
- .thumb_set CAN2_SCE_IRQHandler,Default_Handler
-
- .weak OTG_FS_IRQHandler
- .thumb_set OTG_FS_IRQHandler,Default_Handler
-
- .weak DMA2_Stream5_IRQHandler
- .thumb_set DMA2_Stream5_IRQHandler,Default_Handler
-
- .weak DMA2_Stream6_IRQHandler
- .thumb_set DMA2_Stream6_IRQHandler,Default_Handler
-
- .weak DMA2_Stream7_IRQHandler
- .thumb_set DMA2_Stream7_IRQHandler,Default_Handler
-
- .weak USART6_IRQHandler
- .thumb_set USART6_IRQHandler,Default_Handler
-
- .weak I2C3_EV_IRQHandler
- .thumb_set I2C3_EV_IRQHandler,Default_Handler
-
- .weak I2C3_ER_IRQHandler
- .thumb_set I2C3_ER_IRQHandler,Default_Handler
-
- .weak OTG_HS_EP1_OUT_IRQHandler
- .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler
-
- .weak OTG_HS_EP1_IN_IRQHandler
- .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler
-
- .weak OTG_HS_WKUP_IRQHandler
- .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler
-
- .weak OTG_HS_IRQHandler
- .thumb_set OTG_HS_IRQHandler,Default_Handler
-
- .weak DCMI_IRQHandler
- .thumb_set DCMI_IRQHandler,Default_Handler
-
- .weak FPU_IRQHandler
- .thumb_set FPU_IRQHandler,Default_Handler
-
- .weak SPI4_IRQHandler
- .thumb_set SPI4_IRQHandler,Default_Handler
-
- .weak SAI1_IRQHandler
- .thumb_set SAI1_IRQHandler,Default_Handler
-
- .weak SAI2_IRQHandler
- .thumb_set SAI2_IRQHandler,Default_Handler
-
- .weak QUADSPI_IRQHandler
- .thumb_set QUADSPI_IRQHandler,Default_Handler
-
- .weak CEC_IRQHandler
- .thumb_set CEC_IRQHandler,Default_Handler
-
- .weak SPDIF_RX_IRQHandler
- .thumb_set SPDIF_RX_IRQHandler,Default_Handler
-
- .weak FMPI2C1_EV_IRQHandler
- .thumb_set FMPI2C1_EV_IRQHandler,Default_Handler
-
- .weak FMPI2C1_ER_IRQHandler
- .thumb_set FMPI2C1_ER_IRQHandler,Default_Handler
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/Example/User/syscalls.c b/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/Example/User/syscalls.c
deleted file mode 100644
index d190edf31f..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/Example/User/syscalls.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- ******************************************************************************
- * @file syscalls.c
- * @author Auto-generated by STM32CubeIDE
- * @brief STM32CubeIDE Minimal System calls file
- *
- * For more information about which c-functions
- * need which of these lowlevel functions
- * please consult the Newlib libc-manual
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2020-2023 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes */
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-
-/* Variables */
-extern int __io_putchar(int ch) __attribute__((weak));
-extern int __io_getchar(void) __attribute__((weak));
-
-
-char *__env[1] = { 0 };
-char **environ = __env;
-
-
-/* Functions */
-void initialise_monitor_handles()
-{
-}
-
-int _getpid(void)
-{
- return 1;
-}
-
-int _kill(int pid, int sig)
-{
- (void)pid;
- (void)sig;
- errno = EINVAL;
- return -1;
-}
-
-void _exit (int status)
-{
- _kill(status, -1);
- while (1) {} /* Make sure we hang here */
-}
-
-__attribute__((weak)) int _read(int file, char *ptr, int len)
-{
- (void)file;
- int DataIdx;
-
- for (DataIdx = 0; DataIdx < len; DataIdx++)
- {
- *ptr++ = __io_getchar();
- }
-
- return len;
-}
-
-__attribute__((weak)) int _write(int file, char *ptr, int len)
-{
- (void)file;
- int DataIdx;
-
- for (DataIdx = 0; DataIdx < len; DataIdx++)
- {
- __io_putchar(*ptr++);
- }
- return len;
-}
-
-int _close(int file)
-{
- (void)file;
- return -1;
-}
-
-
-int _fstat(int file, struct stat *st)
-{
- (void)file;
- st->st_mode = S_IFCHR;
- return 0;
-}
-
-int _isatty(int file)
-{
- (void)file;
- return 1;
-}
-
-int _lseek(int file, int ptr, int dir)
-{
- (void)file;
- (void)ptr;
- (void)dir;
- return 0;
-}
-
-int _open(char *path, int flags, ...)
-{
- (void)path;
- (void)flags;
- /* Pretend like we always fail */
- return -1;
-}
-
-int _wait(int *status)
-{
- (void)status;
- errno = ECHILD;
- return -1;
-}
-
-int _unlink(char *name)
-{
- (void)name;
- errno = ENOENT;
- return -1;
-}
-
-int _times(struct tms *buf)
-{
- (void)buf;
- return -1;
-}
-
-int _stat(char *file, struct stat *st)
-{
- (void)file;
- st->st_mode = S_IFCHR;
- return 0;
-}
-
-int _link(char *old, char *new)
-{
- (void)old;
- (void)new;
- errno = EMLINK;
- return -1;
-}
-
-int _fork(void)
-{
- errno = EAGAIN;
- return -1;
-}
-
-int _execve(char *name, char **argv, char **env)
-{
- (void)name;
- (void)argv;
- (void)env;
- errno = ENOMEM;
- return -1;
-}
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/Example/User/sysmem.c b/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/Example/User/sysmem.c
deleted file mode 100644
index 921ecef9a2..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/Example/User/sysmem.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- ******************************************************************************
- * @file sysmem.c
- * @author Generated by STM32CubeIDE
- * @brief STM32CubeIDE System Memory calls file
- *
- * For more information about which C functions
- * need which of these lowlevel functions
- * please consult the newlib libc manual
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2023 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes */
-#include
-#include
-
-/**
- * Pointer to the current high watermark of the heap usage
- */
-static uint8_t *__sbrk_heap_end = NULL;
-
-/**
- * @brief _sbrk() allocates memory to the newlib heap and is used by malloc
- * and others from the C library
- *
- * @verbatim
- * ############################################################################
- * # .data # .bss # newlib heap # MSP stack #
- * # # # # Reserved by _Min_Stack_Size #
- * ############################################################################
- * ^-- RAM start ^-- _end _estack, RAM end --^
- * @endverbatim
- *
- * This implementation starts allocating at the '_end' linker symbol
- * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack
- * The implementation considers '_estack' linker symbol to be RAM end
- * NOTE: If the MSP stack, at any point during execution, grows larger than the
- * reserved size, please increase the '_Min_Stack_Size'.
- *
- * @param incr Memory size
- * @return Pointer to allocated memory
- */
-void *_sbrk(ptrdiff_t incr)
-{
- extern uint8_t _end; /* Symbol defined in the linker script */
- extern uint8_t _estack; /* Symbol defined in the linker script */
- extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */
- const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
- const uint8_t *max_heap = (uint8_t *)stack_limit;
- uint8_t *prev_heap_end;
-
- /* Initialize heap end at first call */
- if (NULL == __sbrk_heap_end)
- {
- __sbrk_heap_end = &_end;
- }
-
- /* Protect heap from growing into the reserved MSP stack */
- if (__sbrk_heap_end + incr > max_heap)
- {
- errno = ENOMEM;
- return (void *)-1;
- }
-
- prev_heap_end = __sbrk_heap_end;
- __sbrk_heap_end += incr;
-
- return (void *)prev_heap_end;
-}
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
deleted file mode 100644
index 19d2357415..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
-******************************************************************************
-**
-** @file : LinkerScript.ld
-**
-** @author : Auto-generated by STM32CubeIDE
-**
-** @brief : Linker script for STM32F446ZETx Device from STM32F4 series
-** 512Kbytes ROM
-** 128Kbytes RAM
-**
-** Set heap size, stack size and stack location according
-** to application requirements.
-**
-** Set memory bank area and size if external memory is used
-**
-** Target : STMicroelectronics STM32
-**
-** Distribution: The file is distributed as is, without any warranty
-** of any kind.
-**
-******************************************************************************
-** @attention
-**
-** Copyright (c) 2022 STMicroelectronics.
-** All rights reserved.
-**
-** This software is licensed under terms that can be found in the LICENSE file
-** in the root directory of this software component.
-** If no LICENSE file comes with this software, it is provided AS-IS.
-**
-******************************************************************************
-*/
-
-/* Entry Point */
-ENTRY(Reset_Handler)
-
-/* Highest address of the user mode stack */
-_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
-
-_Min_Heap_Size = 0x200; /* required amount of heap */
-_Min_Stack_Size = 0x400; /* required amount of stack */
-
-/* Memories definition */
-MEMORY
-{
- RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
- ROM (rx) : ORIGIN = 0x08000000, LENGTH = 512K
-}
-
-/* Sections */
-SECTIONS
-{
- /* The startup code into "ROM" Rom type memory */
- .isr_vector :
- {
- . = ALIGN(4);
- KEEP(*(.isr_vector)) /* Startup code */
- . = ALIGN(4);
- } >ROM
-
- /* The program code and other data into "ROM" Rom type memory */
- .text :
- {
- . = ALIGN(4);
- *(.text) /* .text sections (code) */
- *(.text*) /* .text* sections (code) */
- *(.glue_7) /* glue arm to thumb code */
- *(.glue_7t) /* glue thumb to arm code */
- *(.eh_frame)
-
- KEEP (*(.init))
- KEEP (*(.fini))
-
- . = ALIGN(4);
- _etext = .; /* define a global symbols at end of code */
- } >ROM
-
- /* Constant data into "ROM" Rom type memory */
- .rodata :
- {
- . = ALIGN(4);
- *(.rodata) /* .rodata sections (constants, strings, etc.) */
- *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
- . = ALIGN(4);
- } >ROM
-
- .ARM.extab : {
- . = ALIGN(4);
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- . = ALIGN(4);
- } >ROM
-
- .ARM : {
- . = ALIGN(4);
- __exidx_start = .;
- *(.ARM.exidx*)
- __exidx_end = .;
- . = ALIGN(4);
- } >ROM
-
- .preinit_array :
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP (*(.preinit_array*))
- PROVIDE_HIDDEN (__preinit_array_end = .);
- . = ALIGN(4);
- } >ROM
-
- .init_array :
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__init_array_start = .);
- KEEP (*(SORT(.init_array.*)))
- KEEP (*(.init_array*))
- PROVIDE_HIDDEN (__init_array_end = .);
- . = ALIGN(4);
- } >ROM
-
- .fini_array :
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP (*(SORT(.fini_array.*)))
- KEEP (*(.fini_array*))
- PROVIDE_HIDDEN (__fini_array_end = .);
- . = ALIGN(4);
- } >ROM
-
- /* Used by the startup to initialize data */
- _sidata = LOADADDR(.data);
-
- /* Initialized data sections into "RAM" Ram type memory */
- .data :
- {
- . = ALIGN(4);
- _sdata = .; /* create a global symbol at data start */
- *(.data) /* .data sections */
- *(.data*) /* .data* sections */
- *(.RamFunc) /* .RamFunc sections */
- *(.RamFunc*) /* .RamFunc* sections */
-
- . = ALIGN(4);
- _edata = .; /* define a global symbol at data end */
-
- } >RAM AT> ROM
-
- /* Uninitialized data section into "RAM" Ram type memory */
- . = ALIGN(4);
- .bss :
- {
- /* This is used by the startup in order to initialize the .bss section */
- _sbss = .; /* define a global symbol at bss start */
- __bss_start__ = _sbss;
- *(.bss)
- *(.bss*)
- *(COMMON)
-
- . = ALIGN(4);
- _ebss = .; /* define a global symbol at bss end */
- __bss_end__ = _ebss;
- } >RAM
-
- /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */
- ._user_heap_stack :
- {
- . = ALIGN(8);
- PROVIDE ( end = . );
- PROVIDE ( _end = . );
- . = . + _Min_Heap_Size;
- . = . + _Min_Stack_Size;
- . = ALIGN(8);
- } >RAM
-
- /* Remove information from the compiler libraries */
- /DISCARD/ :
- {
- libc.a ( * )
- libm.a ( * )
- libgcc.a ( * )
- }
-
- .ARM.attributes 0 : { *(.ARM.attributes) }
-}
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/audio.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/audio.c
deleted file mode 100644
index 08a146d24b..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/audio.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/audio.c
- * @author MCD Application Team
- * @brief This example code shows how to use the audio feature in the
- * stm32469i_eval driver
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-#include "stm32446e_eval_audio.h"
-#include
-
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-
-
-/* Private define ------------------------------------------------------------*/
-
-/*Since SysTick is set to 1ms (unless to set it quicker) */
-/* to run up to 48khz, a buffer around 1000 (or more) is requested*/
-/* to run up to 96khz, a buffer around 2000 (or more) is requested*/
-#define AUDIO_BUFFER_SIZE 2048
-#define AUDIO_DEFAULT_VOLUME 70
-
-/* Audio file size and start address are defined here since the audio file is
- stored in Flash memory as a constant table of 16-bit data */
-#define AUDIO_FILE_SIZE 0x3E000
-#define AUDIO_START_OFFSET_ADDRESS 0 /* Offset relative to audio file header size */
-#define AUDIO_FILE_ADDRESS FLASH_DATA_ADDRESS /* Audio file address */
-
-/* Private typedef -----------------------------------------------------------*/
-typedef enum {
- AUDIO_STATE_IDLE = 0,
- AUDIO_STATE_INIT,
- AUDIO_STATE_PLAYING,
-}AUDIO_PLAYBACK_StateTypeDef;
-
-typedef enum {
- AUDIO_ERROR_NONE = 0,
- AUDIO_ERROR_NOTREADY,
- AUDIO_ERROR_IO,
- AUDIO_ERROR_EOF,
-}AUDIO_ErrorTypeDef;
-
-typedef enum {
- BUFFER_OFFSET_NONE = 0,
- BUFFER_OFFSET_HALF,
- BUFFER_OFFSET_FULL,
-}BUFFER_StateTypeDef;
-
-typedef struct {
- uint8_t buff[AUDIO_BUFFER_SIZE];
- uint32_t fptr;
- BUFFER_StateTypeDef state;
-}AUDIO_BufferTypeDef;
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-static AUDIO_BufferTypeDef buffer_ctl;
-static AUDIO_PLAYBACK_StateTypeDef audio_state;
-__IO uint32_t uwVolume = 20;
-__IO uint32_t uwPauseEnabledStatus = 0;
-
-static uint32_t AudioFreq[9] = {8000 ,11025, 16000, 22050, 32000, 44100, 48000, 96000, 192000};
-static JOYState_TypeDef JoyState = JOY_NONE;
-
-/* Private function prototypes -----------------------------------------------*/
-static void Audio_SetHint(void);
-static uint32_t GetData(void *pdata, uint32_t offset, uint8_t *pbuf, uint32_t NbrOfData);
-AUDIO_ErrorTypeDef AUDIO_Start(void);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief Audio Play demo
- * @param None
- * @retval None
- */
-void AudioPlay_demo (void)
-{
- uint32_t *AudioFreq_ptr;
- uint8_t status = 0;
- uint8_t FreqStr[256] = {0};
-
- AudioFreq_ptr = AudioFreq+6; /*AF_48K*/
- uwPauseEnabledStatus = 1; /* 0 when audio is running, 1 when Pause is on */
- uwVolume = 50;
-
- Audio_SetHint();
-
- status = BSP_JOY_Init(JOY_MODE_GPIO);
-
- if (status != IO_OK)
- {
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 100, (uint8_t *)"ERROR", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 85, (uint8_t *)"Joystick cannot be initialized", CENTER_MODE);
- }
-
- if(BSP_AUDIO_OUT_Init(OUTPUT_DEVICE_BOTH, uwVolume, *AudioFreq_ptr) == 0)
- {
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 100, (uint8_t *)" AUDIO CODEC OK ", CENTER_MODE);
- }
- else
- {
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 100, (uint8_t *)" AUDIO CODEC FAIL ", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 85, (uint8_t *)" Try to reset board ", CENTER_MODE);
- }
-
- /*
- Start playing the file from a circular buffer, once the DMA is enabled, it is
- always in running state. Application has to fill the buffer with the audio data
- using Transfer complete and/or half transfer complete interrupts callbacks
- (EVAL_AUDIO_TransferComplete_CallBack() or EVAL_AUDIO_HalfTransfer_CallBack()...
- */
- AUDIO_Start();
-
- /* Display the state on the screen */
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 85, (uint8_t *)" PLAYING... ", CENTER_MODE);
-
- sprintf((char*)FreqStr," VOL: %lu ",uwVolume);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 55, (uint8_t *)FreqStr, CENTER_MODE);
-
- sprintf((char*)FreqStr," FREQ: %lu ",*AudioFreq_ptr);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 40, (uint8_t *)FreqStr, CENTER_MODE);
-
- /* IMPORTANT:
- AUDIO_Process() is called by the SysTick Handler, as it should be called
- within a periodic process */
-
- /* Infinite loop */
- while(1)
- {
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- /* Get the Joystick State */
- JoyState = BSP_JOY_GetState();
-
- switch(JoyState)
- {
- case JOY_UP:
- /* Increase volume by 5% */
- if (uwVolume < 95)
- {
- uwVolume += 5;
- }
- else
- {
- uwVolume = 100;
- }
- sprintf((char*)FreqStr," VOL: %lu ",uwVolume);
- BSP_AUDIO_OUT_SetVolume(uwVolume);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 55, (uint8_t *)FreqStr, CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)" ", CENTER_MODE);
-
- break;
-
- case JOY_DOWN:
- /* Decrease volume by 5% */
- if (uwVolume > 5)
- {
- uwVolume -= 5;
- }
- else
- {
- uwVolume = 0;
- }
- sprintf((char*)FreqStr," VOL: %lu ",uwVolume);
- BSP_AUDIO_OUT_SetVolume(uwVolume);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 55, (uint8_t *)FreqStr, CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)" ", CENTER_MODE);
-
- break;
-
- case JOY_LEFT:
- /*Decrease Frequency */
- if (*AudioFreq_ptr != 8000)
- {
- AudioFreq_ptr--;
- sprintf((char*)FreqStr," FREQ: %lu ", *AudioFreq_ptr);
- BSP_AUDIO_OUT_Pause();
- BSP_AUDIO_OUT_SetFrequency(*AudioFreq_ptr);
- BSP_AUDIO_OUT_Resume();
- }
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 40, (uint8_t *)FreqStr, CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)" ", CENTER_MODE);
- break;
-
- case JOY_RIGHT:
- /* Increase Frequency */
- if (*AudioFreq_ptr != 96000)
- {
- AudioFreq_ptr++;
- sprintf((char*)FreqStr," FREQ: %lu ",*AudioFreq_ptr);
- BSP_AUDIO_OUT_Pause();
- BSP_AUDIO_OUT_SetFrequency(*AudioFreq_ptr);
- BSP_AUDIO_OUT_Resume();
- }
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 40, (uint8_t *)FreqStr, CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)" ", CENTER_MODE);
- break;
-
- case JOY_SEL:
- /* Set Pause / Resume */
- if (uwPauseEnabledStatus == 1)
- { /* Pause is enabled, call Resume */
- BSP_AUDIO_OUT_Resume();
- uwPauseEnabledStatus = 0;
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 85, (uint8_t *)" PLAYING... ", CENTER_MODE);
- } else
- { /* Pause the playback */
- BSP_AUDIO_OUT_Pause();
- uwPauseEnabledStatus = 1;
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 85, (uint8_t *)" PAUSE ... ", CENTER_MODE);
- }
- BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)" ", CENTER_MODE);
- HAL_Delay(200);
- break;
-
- default:
- break;
- }
-
- /* Toggle LED3 */
- BSP_LED_Toggle(LED3);
-
- /* Insert 100 ms delay */
- HAL_Delay(100);
-
- /* Toggle LED2 */
- BSP_LED_Toggle(LED2);
-
- /* Insert 100 ms delay */
- HAL_Delay(100);
- if(CheckForUserInput() > 0)
- {
- BSP_AUDIO_OUT_Stop(CODEC_PDWN_SW);
- BSP_AUDIO_OUT_DeInit();
- return;
- }
- }
-}
-
-/**
- * @brief Display Audio demo hint
- * @param None
- * @retval None
- */
-static void Audio_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set Audio Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 90);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"AUDIO EXAMPLE", CENTER_MODE);
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"Press User button for next menu ", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"Use Joystick Up/Down to change Volume ", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"Use Joystick Left/Right to change Frequency", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 75, (uint8_t *)"Click on Joystick for Pause/Resume ", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 100, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 110);
- BSP_LCD_DrawRect(11, 101, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 112);
-
-}
-
-
-/**
- * @brief Starts Audio streaming.
- * @param None
- * @retval Audio error
- */
-AUDIO_ErrorTypeDef AUDIO_Start(void)
-{
- uint32_t bytesread;
-
- buffer_ctl.state = BUFFER_OFFSET_NONE;
- bytesread = GetData( (void *)AUDIO_FILE_ADDRESS,
- 0,
- &buffer_ctl.buff[0],
- AUDIO_BUFFER_SIZE);
- if(bytesread > 0)
- {
- BSP_AUDIO_OUT_Play((uint16_t*)&buffer_ctl.buff[0], AUDIO_BUFFER_SIZE);
- audio_state = AUDIO_STATE_PLAYING;
- buffer_ctl.fptr = bytesread;
- return AUDIO_ERROR_NONE;
- }
- return AUDIO_ERROR_IO;
-}
-
-/**
- * @brief Manages Audio process.
- * @param None
- * @retval Audio error
- */
-uint8_t AUDIO_Process(void)
-{
- uint32_t bytesread;
- AUDIO_ErrorTypeDef error_state = AUDIO_ERROR_NONE;
-
- switch(audio_state)
- {
- case AUDIO_STATE_PLAYING:
-
- if(buffer_ctl.fptr >= AUDIO_FILE_SIZE)
- {
- /* Play audio sample again ... */
- buffer_ctl.fptr = 0;
- error_state = AUDIO_ERROR_EOF;
- }
-
- /* 1st half buffer played; so fill it and continue playing from bottom*/
- if(buffer_ctl.state == BUFFER_OFFSET_HALF)
- {
- bytesread = GetData((void *)AUDIO_FILE_ADDRESS,
- buffer_ctl.fptr,
- &buffer_ctl.buff[0],
- AUDIO_BUFFER_SIZE /2);
-
- if( bytesread >0)
- {
- buffer_ctl.state = BUFFER_OFFSET_NONE;
- buffer_ctl.fptr += bytesread;
- }
- }
-
- /* 2nd half buffer played; so fill it and continue playing from top */
- if(buffer_ctl.state == BUFFER_OFFSET_FULL)
- {
- bytesread = GetData((void *)AUDIO_FILE_ADDRESS,
- buffer_ctl.fptr,
- &buffer_ctl.buff[AUDIO_BUFFER_SIZE /2],
- AUDIO_BUFFER_SIZE /2);
- if( bytesread > 0)
- {
- buffer_ctl.state = BUFFER_OFFSET_NONE;
- buffer_ctl.fptr += bytesread;
- }
- }
- break;
-
- default:
- error_state = AUDIO_ERROR_NOTREADY;
- break;
- }
-
- return (uint8_t) error_state;
-}
-
-/**
- * @brief Gets Data from storage unit.
- * @param None
- * @retval None
- */
-static uint32_t GetData(void *pdata, uint32_t offset, uint8_t *pbuf, uint32_t NbrOfData)
-{
- uint8_t *lptr = pdata;
- uint32_t ReadDataNbr;
-
- ReadDataNbr = 0;
- while(((offset + ReadDataNbr) < AUDIO_FILE_SIZE) && (ReadDataNbr < NbrOfData))
- {
- pbuf[ReadDataNbr]= lptr [offset + ReadDataNbr];
- ReadDataNbr++;
- }
- return ReadDataNbr;
-}
-
-/*------------------------------------------------------------------------------
- Callbacks implementation:
- the callbacks API are defined __weak in the stm32469i_eval_audio.c file
- and their implementation should be done the user code if they are needed.
- Below some examples of callback implementations.
- ----------------------------------------------------------------------------*/
-/**
- * @brief Manages the full Transfer complete event.
- * @param None
- * @retval None
- */
-void BSP_AUDIO_OUT_TransferComplete_CallBack(void)
-{
- if(audio_state == AUDIO_STATE_PLAYING)
- {
- /* allows AUDIO_Process() to refill 2nd part of the buffer */
- buffer_ctl.state = BUFFER_OFFSET_FULL;
- }
-}
-
-/**
- * @brief Manages the DMA Half Transfer complete event.
- * @param None
- * @retval None
- */
-void BSP_AUDIO_OUT_HalfTransfer_CallBack(void)
-{
- if(audio_state == AUDIO_STATE_PLAYING)
- {
- /* allows AUDIO_Process() to refill 1st part of the buffer */
- buffer_ctl.state = BUFFER_OFFSET_HALF;
- }
-}
-
-/**
- * @brief Manages the DMA FIFO error event.
- * @param None
- * @retval None
- */
-void BSP_AUDIO_OUT_Error_CallBack(void)
-{
- /* Display message on the LCD screen */
- BSP_LCD_SetBackColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)" DMA ERROR ", CENTER_MODE);
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
-
- /* Stop the program with an infinite loop */
- while (BSP_PB_GetState(BUTTON_KEY) != RESET)
- { return;}
-
- /* could also generate a system reset to recover from the error */
- /* .... */
-}
-
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/camera.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/camera.c
deleted file mode 100644
index 3f2f7a26d7..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/camera.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/camera.c
- * @author MCD Application Team
- * @brief This example code shows how to use the camera feature in the
- * stm32446e_eval driver
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-#include
-#include "stm32446e_eval_audio.h"
-
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-
-/* Private define ------------------------------------------------------------*/
-/* Camera Frame Buffer address */
-#define CAMERA_FRAME_BUFFER SDRAM_WRITE_READ_ADDR
-
-#define CAMERA_STATUS_TEXT_POS 30 /* Number of lines from bottom of screen */
-
-#define CAMERA_QVGA_RES_X 320
-#define CAMERA_QVGA_RES_Y 240
-#define CAMERA_QQVGA_RES_X 160
-#define CAMERA_QQVGA_RES_Y 120
-
-#define CAMERA_RES_INDEX_MIN CAMERA_R160x120
-#define CAMERA_RES_INDEX_MAX CAMERA_R320x240
-
-#define CAMERA_CONTRAST_MIN CAMERA_CONTRAST_LEVEL0
-#define CAMERA_CONTRAST_MAX CAMERA_CONTRAST_LEVEL4
-#define CAMERA_BRIGHTNESS_MIN CAMERA_BRIGHTNESS_LEVEL0
-#define CAMERA_BRIGHTNESS_MAX CAMERA_BRIGHTNESS_LEVEL4
-
-#define CAMERA_FRAME_BUFFER_CROP (SDRAM_WRITE_READ_ADDR + (CAMERA_QVGA_RES_X * CAMERA_QVGA_RES_Y * 2))
-
-/* Private macro -------------------------------------------------------------*/
-
-/* Private variables ---------------------------------------------------------*/
-static uint32_t CameraResIndex;
-static uint32_t CameraChangeResolutionAsked;
-
-
-/* Private function prototypes -----------------------------------------------*/
-static void Camera_SetHint(void);
-void BSP_CAMERA_FrameEventCallback(void);
-void Camera_DisplayFrame(void);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief Camera demo
- * @param None
- * @retval None
- */
-void Camera_demo (void)
-{
- uint8_t status = 0;
- uint16_t *ptrCamera;
- uint32_t i;
- uint32_t exit = 0;
-
- Camera_SetHint();
-
- status = BSP_JOY_Init(JOY_MODE_GPIO);
-
- /* Initialize the SDRAM for CAMERA_FRAME_BUFFER */
- BSP_SDRAM_Init();
-
- if (status != IO_OK)
- {
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- CAMERA_STATUS_TEXT_POS, (uint8_t *)"ERROR", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- CAMERA_STATUS_TEXT_POS - 15, (uint8_t *)"Joystick cannot be initialized", CENTER_MODE);
- status = 0;
- }
-
- /*## Camera Initialization and start capture ############################*/
-
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- CAMERA_STATUS_TEXT_POS, (uint8_t *)"Wait for camera initialization...", CENTER_MODE);
-
- /* Init Camera buffer */
- ptrCamera = (uint16_t*)(CAMERA_FRAME_BUFFER);
- CameraResIndex = CAMERA_R160x120; /* Set QQVGA default resolution */
- CameraChangeResolutionAsked = 1;
- for (i=0; i<(CAMERA_QVGA_RES_X * CAMERA_QVGA_RES_Y); i++) /* Camera buffer initialization */
- {
- ptrCamera[i]=0xFFFF;
- }
-
- /* Initialize IO */
- BSP_IO_Init();
-
- /* Infinite loop */
- while(exit == 0)
- {
- if (CameraChangeResolutionAsked) /* A camera change resolution has been asked */
- {
- CameraChangeResolutionAsked = 0;
- if (CameraResIndex > CAMERA_R160x120)
- { /* If camera stream already started, it has to be stopped before reconfiguration */
- /* Stop camera stream */
- status = BSP_CAMERA_Stop();
- ASSERT(status != CAMERA_OK);
-
- /* Clear screen */
- Camera_SetHint();
-
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- CAMERA_STATUS_TEXT_POS, (uint8_t *)"Wait for camera initialization...", CENTER_MODE);
- }
-
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
-
- status = 0;
-
- switch (CameraResIndex)
- {
- case CAMERA_R160x120:
- /* Initialize the Camera */
- status = BSP_CAMERA_Init(RESOLUTION_R160x120);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- CAMERA_STATUS_TEXT_POS, (uint8_t *)" QQVGA camera stream ", CENTER_MODE);
- break;
-
- case CAMERA_R320x240:
- /* Initialize the Camera */
- status = BSP_CAMERA_Init(RESOLUTION_R320x240);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- CAMERA_STATUS_TEXT_POS, (uint8_t *)" QVGA camera stream ", CENTER_MODE);
- break;
- }
-
- if (status != CAMERA_OK)
- {
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- CAMERA_STATUS_TEXT_POS - 15, (uint8_t *)" CAMERA INIT ERROR ", CENTER_MODE);
- }
-
-
- /* Start / Restart camera stream */
- BSP_CAMERA_ContinuousStart((uint8_t *)CAMERA_FRAME_BUFFER);
- } /* (CameraResIndex != CameraCurrentResIndex) */
-
-
- /* Toggle LED4 */
- BSP_LED_Toggle(LED3);
-
- /* Insert 100 ms delay */
- HAL_Delay(100);
-
- /* Toggle LED2 */
- BSP_LED_Toggle(LED2);
-
- /* Insert 100 ms delay */
- HAL_Delay(100);
- if(CheckForUserInput() > 0)
- {
- if (CameraResIndex < CAMERA_RES_INDEX_MAX)
- {
- CameraResIndex++; /* Switch to higher resolution */
- CameraChangeResolutionAsked = 1;
- }
- else
- {
- BSP_CAMERA_DeInit();
- exit = 1;
- }
- }
- }
-
- /* Stop camera stream */
- status = BSP_CAMERA_Stop();
- ASSERT(status != CAMERA_OK);
-
- /* End of camera demo */
-}
-
-/**
- * @brief Display Camera demo hint
- * @param None
- * @retval None
- */
-static void Camera_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set Camera Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 90);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"CAMERA EXAMPLE", CENTER_MODE);
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)" Press User button for next resolution ", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 100, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 110);
- BSP_LCD_DrawRect(11, 101, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 112);
-}
-
-/**
- * @brief Frame Event callback.
- * @param None
- * @retval None
-*/
-void BSP_CAMERA_FrameEventCallback(void)
-{
- uint32_t xsizeLCD, ysizeLCD;
- uint32_t xsizeCamera, ysizeCamera;
- uint32_t xoffset, yoffset;
- uint32_t line, column, i, j;
- uint16_t *ptrCamera, *ptrCameraCrop;
-
- xsizeLCD = BSP_LCD_GetXSize();
- ysizeLCD = BSP_LCD_GetYSize();
-
- BSP_CAMERA_Suspend();
- /* Display on LCD */
- switch (CameraResIndex)
- {
- case CAMERA_R160x120:
- xsizeCamera = CAMERA_QQVGA_RES_X;
- ysizeCamera = CAMERA_QQVGA_RES_Y;
- xoffset = 80;
- yoffset = 105;
- break;
-
- case CAMERA_R320x240:
- default:
- xsizeCamera = CAMERA_QVGA_RES_X;
- ysizeCamera = CAMERA_QVGA_RES_Y;
- xoffset = 0;
- yoffset = 0;
- break;
- }
-
- if ((xsizeCamera > xsizeLCD) || (ysizeCamera > ysizeLCD))
- {
- /* As the camera output resolution is greater than display resolution, a cropped image has to be generated */
- ptrCamera = (uint16_t *)(CAMERA_FRAME_BUFFER);
- ptrCameraCrop = (uint16_t *)(CAMERA_FRAME_BUFFER_CROP);
- xoffset = (xsizeCamera - xsizeLCD) / 2;
- yoffset = (ysizeCamera - ysizeLCD) / 2;
- i=0;
- j=xoffset;
- for (line = 0; line < ysizeLCD; line ++)
- {
- for (column = 0; column < xsizeLCD; column ++)
- {
- ptrCameraCrop[i++] = ptrCamera[j++];
- }
- j += xsizeCamera - xsizeLCD;
- }
- BSP_LCD_DrawRGBImage(0, 0, xsizeLCD , ysizeLCD, (uint8_t *)ptrCameraCrop);
- }
- else
- {
- BSP_LCD_DrawRGBImage(xoffset, yoffset, xsizeCamera , ysizeCamera, (uint8_t *)CAMERA_FRAME_BUFFER);
- }
- BSP_CAMERA_Resume();
-}
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/eeprom.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/eeprom.c
deleted file mode 100644
index 36098bcb10..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/eeprom.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/eeprom.c
- * @author MCD Application Team
- * @brief This example code shows how to manage an I2C M24LR64
- * EEPROM memory
- * ===================================================================
- * Notes:
- * - This driver is intended for STM32F4xx families devices only.
- * - The I2C EEPROM memory (M24LR64) is available on separate daughter
- * board ANT7-M24LR-A, which is not provided with the STM32F446E
- * EVAL board.
- * To use this driver you have to connect the ANT7-M24LR-A to CN1
- * connector of STM32F446E EVAL board.
- * Switch EE_M24LR64 needs to be enabled in your project.
- * ===================================================================
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-typedef enum {FAILED = 0, PASSED = !FAILED} TestStatus;
-/* Private define ------------------------------------------------------------*/
-#define EEPROM_FEATURES_NUM 2
-#define BUFFER_SIZE1 (countof(Tx1Buffer)-1 + 10)
-#define EEPROM_WRITE_ADDRESS1 0x49
-#define EEPROM_READ_ADDRESS1 0x49
-/* Private macro -------------------------------------------------------------*/
-#define countof(a) (sizeof(a) / sizeof(*(a)))
-/* Private variables ---------------------------------------------------------*/
-static uint8_t EEPROMFeature = 0;
-uint8_t EEPROMConnected =1;
-
-/*Due to big size we put it global to avoid saturating the memory stack */
-static uint8_t Tx1Buffer[] = "STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex. - STM32446E-EVAL EEPROM Ex.";
-static uint8_t Displayuffer[25] = {0};
-static uint8_t Rx1Buffer[BUFFER_SIZE1] = {0};
-static uint8_t Tx2Buffer[BUFFER_SIZE1] = {0};
-
-/* Private function prototypes -----------------------------------------------*/
-static void EEPROM_SetHint(void);
-static void EEPROM_Show_Feature(uint8_t Feature);
-static TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint16_t BufferLength);
-
-extern uint8_t NbLoop;
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief EEPROM Demo
- * @param None
- * @retval None
- */
-void EEPROM_demo (void)
-{
- EEPROM_SetHint();
- EEPROMFeature = 0;
-
- EEPROM_Show_Feature (EEPROMFeature);
-
- while (1)
- {
-
- if(CheckForUserInput() > 0)
- {
- if(++EEPROMFeature < EEPROM_FEATURES_NUM)
- {
- EEPROM_Show_Feature (EEPROMFeature);
- }
- else
- {
- return;
- }
- }
- HAL_Delay(100);
- }
-}
-
-/**
- * @brief Display EEPROM Demo Hint
- * @param None
- * @retval None
- */
-static void EEPROM_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set LCD Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"EEPROM", CENTER_MODE);
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"This example shows the different", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"EEPROM Features, use BUTTON", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"to start EEPROM data transfer", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
- BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
- }
-
-/**
- * @brief Show EEPROM Features
- * @param Feature : feature index
- * @retval None
- */
-static void EEPROM_Show_Feature(uint8_t Feature)
-{
- uint32_t i;
- __IO TestStatus TransferStatus1 = FAILED;
- __IO uint16_t NumDataRead = 0;
-
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_FillRect(12, 92, BSP_LCD_GetXSize() - 24, BSP_LCD_GetYSize()- 104);
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
-
- /* Initialize the I2C EEPROM driver ----------------------------------------*/
- if(BSP_EEPROM_Init() != EEPROM_OK)
- {
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"Initialization problem", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 130, (uint8_t *)"Check if HW connected or", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 145, (uint8_t *)"HW version not supported", CENTER_MODE);
- return;
- }
- EEPROMConnected = 1;
-
- /* Wait for EEPROM standby state */
- BSP_EEPROM_WaitEepromStandbyState();
-
- switch (Feature)
- {
- case 0:
- /* Read old parameter in EEPROM */
- if(EEPROMConnected == 1)
- {
- /* Set the Number of data to be read */
- NumDataRead = BUFFER_SIZE1;
-
- /* Read from I2C EEPROM from EEPROM_READ_ADDRESS1 */
- if(BSP_EEPROM_ReadBuffer(Rx1Buffer, EEPROM_READ_ADDRESS1, (uint16_t *)(&NumDataRead)) != EEPROM_OK)
- {
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"Init issue at read old data", CENTER_MODE);
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_DisplayStringAt(0, 145, (uint8_t *)"Press again USER key", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 160, (uint8_t *)"To write new data", CENTER_MODE);
- return;
- }
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"PASSED String read", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 130, (uint8_t *)"in EEPROM:", CENTER_MODE);
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- for (i=0; i<25; i++)
- Displayuffer[i] = Rx1Buffer[i];
- BSP_LCD_DisplayStringAt(0, 160, Displayuffer, CENTER_MODE);
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_DisplayStringAt(0, 190, (uint8_t *)"Press USER key", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 205, (uint8_t *)"To write new data", CENTER_MODE);
- }
- else
- {
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"Problem to communicate", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 130, (uint8_t *)"with EEPROM", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 145, (uint8_t *)"Press again USER key", CENTER_MODE);
- }
-
- break;
-
- case 1:
- /* Write new parameter in EEPROM */
-
- if(EEPROMConnected == 1)
- {
- snprintf((char*)Tx2Buffer, BUFFER_SIZE1, "%s Test %d", Tx1Buffer, NbLoop);
- /* First write in the memory followed by a read of the written data --------*/
- /* Write on I2C EEPROM to EEPROM_WRITE_ADDRESS1 */
- if(BSP_EEPROM_WriteBuffer(Tx2Buffer, EEPROM_WRITE_ADDRESS1, BUFFER_SIZE1) != EEPROM_OK)
- {
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"Init issue at write", CENTER_MODE);
- return;
- }
-
- /* Set the Number of data to be read */
- NumDataRead = BUFFER_SIZE1;
-
- /* Read from I2C EEPROM from EEPROM_READ_ADDRESS1 */
- if(BSP_EEPROM_ReadBuffer(Rx1Buffer, EEPROM_READ_ADDRESS1, (uint16_t *)(&NumDataRead)) != EEPROM_OK)
- {
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"Init issue at read", CENTER_MODE);
- return;
- }
-
- /* Check if the data written to the memory is read correctly */
- TransferStatus1 = Buffercmp(Tx2Buffer, Rx1Buffer, BUFFER_SIZE1);
- if(TransferStatus1 != FAILED)
- {
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"PASSED String writes", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 130, (uint8_t *)"in EEPROM:", CENTER_MODE);
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- for (i=0; i<25; i++)
- Displayuffer[i] = Tx2Buffer[i];
- BSP_LCD_DisplayStringAt(0, 160, Displayuffer, CENTER_MODE);
- }
- else
- {
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"FAILED to write!", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 130, (uint8_t *)"Press USER key to end test", CENTER_MODE);
- }
- }
- else
- {
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"Problem to communicate", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 130, (uint8_t *)"again with EEPROM", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 130, (uint8_t *)"Press USER key to end test", CENTER_MODE);
- }
- break;
- }
-}
-
-/**
- * @brief Basic management of the timeout situation.
- * @param None.
- * @retval 0.
- */
-void BSP_EEPROM_TIMEOUT_UserCallback(void)
-{
- EEPROMConnected = 0;
-}
-
-/**
- * @brief Compares two buffers.
- * @param pBuffer1, pBuffer2: buffers to be compared.
- * @param BufferLength: buffer's length
- * @retval PASSED: pBuffer1 identical to pBuffer2
- * FAILED: pBuffer1 differs from pBuffer2
- */
-static TestStatus Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint16_t BufferLength)
-{
- while(BufferLength--)
- {
- if(*pBuffer1 != *pBuffer2)
- {
- return FAILED;
- }
-
- pBuffer1++;
- pBuffer2++;
- }
-
- return PASSED;
-}
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/ioe_gpio.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/ioe_gpio.c
deleted file mode 100644
index fbccd81fe0..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/ioe_gpio.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/ioe_gpio.c
- * @author MCD Application Team
- * @brief This test check the IO and exti of the MFX expander Driver
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define MFX_CONNECTET_PIN IO_PIN_0
-#define MCU_GPIO_PORT GPIOB
-#define MCU_GPIO_PIN GPIO_PIN_4
-#define __MCU_GPIO_PORTCLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
-
-
-#define IOE_GPIO_TEST_PASSED 0
-#define IOE_GPIO_TEST_FAILED 1
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-static void IOE_GPIO_SetHint(void);
-static void SetMcuGpioToBeConnectedToMfxGPI(void);
-static void SetMcuGpioToBeConnectedToMfxGPO(void);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief SDRAM Demo
- * @param None
- * @retval None
- */
-void IOE_GPIO_demo (void)
-{
- uint32_t ioe_irq_pending_status, ioe_gpio_status;
- uint32_t lcd_line = 85;
- uint8_t test_result = IOE_GPIO_TEST_PASSED;
- uint8_t all_test_fail = 1;
- GPIO_PinState mcu_pin_state;
-
- IOE_GPIO_SetHint();
-
- /* Enable the Leds */
- BSP_IO_Init();
- BSP_LED_Init(LED1);
- BSP_LED_Init(LED2);
-
- BSP_LED_On(LED1);
- BSP_LED_On(LED2);
-
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_OFF);
-
- /* TEST IO_MODE_OUPUT mode */
- /* ---------------------------------- */
-
- /* SetUp a GPIO to be connected to one of the MFX GPIOS via a wire */
- SetMcuGpioToBeConnectedToMfxGPO();
- test_result = IOE_GPIO_TEST_PASSED;
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_OUTPUT);
-
- BSP_IO_WritePin(MFX_CONNECTET_PIN, BSP_IO_PIN_RESET);
- HAL_Delay(1);
- mcu_pin_state = HAL_GPIO_ReadPin (MCU_GPIO_PORT, MCU_GPIO_PIN);
- if (mcu_pin_state)
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- BSP_IO_WritePin(MFX_CONNECTET_PIN, BSP_IO_PIN_SET);
- HAL_Delay(1);
- mcu_pin_state = HAL_GPIO_ReadPin (MCU_GPIO_PORT, MCU_GPIO_PIN);
- if (mcu_pin_state)
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
-
- BSP_IO_WritePin(MFX_CONNECTET_PIN, BSP_IO_PIN_RESET);
- HAL_Delay(1);
- mcu_pin_state = HAL_GPIO_ReadPin (MCU_GPIO_PORT, MCU_GPIO_PIN);
- if (mcu_pin_state)
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- lcd_line += 15;
- if (test_result)
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_OUTPUT: FAILED", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_OUTPUT: PASSED", LEFT_MODE);
- all_test_fail = 0;
- }
-
-
- /* TEST IO_MODE_INPUT mode */
- /* ---------------------------------- */
-
- /* SetUp a GPIO to be connected to one of the MFX GPIOS via a wire */
- SetMcuGpioToBeConnectedToMfxGPI();
- test_result = IOE_GPIO_TEST_PASSED;
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_INPUT);
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
- HAL_Delay(1);
- ioe_gpio_status = BSP_IO_ReadPin (MFX_CONNECTET_PIN);
- if (ioe_gpio_status)
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_SET);
- HAL_Delay(1);
- ioe_gpio_status = BSP_IO_ReadPin (MFX_CONNECTET_PIN);
- if (ioe_gpio_status)
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
- HAL_Delay(1);
- ioe_gpio_status = BSP_IO_ReadPin (MFX_CONNECTET_PIN);
- if (ioe_gpio_status)
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- lcd_line += 15;
- if (test_result)
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_INPUT: FAILED", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_INPUT: PASSED", LEFT_MODE);
- all_test_fail = 0;
- }
-
- SetMcuGpioToBeConnectedToMfxGPI();
-
- /* TEST IO_MODE_IT_HIGH_LEVEL mode */
- /* ---------------------------------- */
- test_result = IOE_GPIO_TEST_PASSED;
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_OFF);
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
- BSP_IO_ITClear();
-
- /* BSP_IO_ConfigPin(MFXIO_PIN_6, IO_MODE_INPUT); */
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_IT_HIGH_LEVEL_PD);
- /* We just want to test the good functioning of pending bit and ack on the IOE */
- HAL_NVIC_DisableIRQ((IRQn_Type)(MFX_IRQOUT_EXTI_IRQn));
-
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_SET);
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_PASSED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- HAL_Delay(1);
-
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_PASSED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
-
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- lcd_line += 15;
- if (test_result)
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_IT_HIGH_LEVEL: FAILED", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_IT_HIGH_LEVEL: PASSED", LEFT_MODE);
- all_test_fail = 0;
- }
-
-
- /* TEST IO_MODE_IT_LOW_LEVEL mode */
- /* ---------------------------------- */
- test_result = IOE_GPIO_TEST_PASSED;
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_OFF);
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_SET);
- BSP_IO_ITClear();
-
- /* BSP_IO_ConfigPin(MFXIO_PIN_6, IO_MODE_INPUT); */
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_IT_LOW_LEVEL_PU);
- /* We just want to test the good functioning of pending bit and ack on the IOE */
- HAL_NVIC_DisableIRQ((IRQn_Type)(MFX_IRQOUT_EXTI_IRQn));
-
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
- HAL_Delay(1);
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_PASSED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- HAL_Delay(1);
-
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_SET);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_PASSED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
-
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- lcd_line += 15;
- if (test_result)
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_IT_LOW_LEVEL: FAILED", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_IT_LOW_LEVEL: PASSED", LEFT_MODE);
- all_test_fail = 0;
- }
-
- /* TEST IO_MODE_IT_RISING_EDGE mode */
- /* ---------------------------------- */
- test_result = IOE_GPIO_TEST_PASSED;
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_OFF);
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
- BSP_IO_ITClear();
-
- /* BSP_IO_ConfigPin(MFXIO_PIN_6, IO_MODE_INPUT); */
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_IT_RISING_EDGE_PD);
- /* We just want to test the good functioning of pending bit and ack on the IOE */
- HAL_NVIC_DisableIRQ((IRQn_Type)(MFX_IRQOUT_EXTI_IRQn));
-
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_SET);
- HAL_Delay(1);
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_PASSED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- HAL_Delay(1);
-
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- lcd_line += 15;
- if (test_result)
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_IT_RISING_EDGE: FAILED", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_IT_RISING_EDGE: PASSED", LEFT_MODE);
- all_test_fail = 0;
- }
-
- /* TEST IO_MODE_IT_FALLING_EDGE mode */
- /* ---------------------------------- */
- test_result = IOE_GPIO_TEST_PASSED;
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_OFF);
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
- BSP_IO_ITClear();
-
- /* BSP_IO_ConfigPin(MFXIO_PIN_6, IO_MODE_INPUT); */
- BSP_IO_ConfigPin(MFX_CONNECTET_PIN, IO_MODE_IT_FALLING_EDGE_PU);
- /* We just want to test the good functioning of pending bit and ack on the IOE */
- HAL_NVIC_DisableIRQ((IRQn_Type)(MFX_IRQOUT_EXTI_IRQn));
-
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_SET);
- HAL_Delay(1);
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_FAILED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_PASSED;
- }
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
- HAL_Delay(1);
- ioe_irq_pending_status = BSP_IO_ITGetStatus(MFX_CONNECTET_PIN);
- if (ioe_irq_pending_status)
- {
- BSP_IO_ITClear();
- test_result |= IOE_GPIO_TEST_PASSED;
- }
- else
- {
- test_result |= IOE_GPIO_TEST_FAILED;
- }
-
- lcd_line += 15;
- if (test_result)
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_IT_FALLING_EDGE: FAILED", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, lcd_line, (uint8_t *)"IOE IO_MODE_IT_FALLING_EDGE: PASSED", LEFT_MODE);
- all_test_fail = 0;
- }
-
- if (all_test_fail)
- {
- BSP_LCD_DisplayStringAt(20, lcd_line + 20, (uint8_t *)" all IOE tests FAILED !!!", LEFT_MODE);
- BSP_LCD_DisplayStringAt(15, lcd_line + 40, (uint8_t *)"Are you sure that MCU_PB4 pin is connected ", LEFT_MODE);
- BSP_LCD_DisplayStringAt(15, lcd_line + 55, (uint8_t *)"to TP9 probe with a wire on the board ??", LEFT_MODE);
- }
-
- /* We just want to test the good functioning of pending bit and ack on the IOE */
- HAL_NVIC_EnableIRQ((IRQn_Type)(MFX_IRQOUT_EXTI_IRQn));
-
- while (1)
- {
- if(CheckForUserInput() > 0)
- {
- return;
- }
- }
-}
-
-/**
- * @brief Set GPIO for receiving MFX IRQ_OUT.
- * @param None
- * @retval None
- */
-static void SetMcuGpioToBeConnectedToMfxGPO(void)
-{
- GPIO_InitTypeDef GPIO_Init_Structure;
-
- /* GPIO A4 configuration to receive IrqOutPin from MFX */
- __MCU_GPIO_PORTCLK_ENABLE();
- GPIO_Init_Structure.Pin = MCU_GPIO_PIN;
- GPIO_Init_Structure.Mode = GPIO_MODE_INPUT;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- HAL_GPIO_Init(MCU_GPIO_PORT, &GPIO_Init_Structure);
-}
-
-/**
- * @brief Set GPIO for receiving MFX IRQ_OUT.
- * @param None
- * @retval None
- */
-static void SetMcuGpioToBeConnectedToMfxGPI(void)
-{
- GPIO_InitTypeDef GPIO_Init_Structure;
-
- /* GPIO A4 configuration to receive IrqOutPin from MFX */
- __MCU_GPIO_PORTCLK_ENABLE();
- GPIO_Init_Structure.Pin = MCU_GPIO_PIN;
- GPIO_Init_Structure.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_Init_Structure.Pull = GPIO_PULLUP;
- GPIO_Init_Structure.Speed = GPIO_SPEED_HIGH;
- HAL_GPIO_Init(MCU_GPIO_PORT, &GPIO_Init_Structure);
-
- HAL_GPIO_WritePin(MCU_GPIO_PORT, MCU_GPIO_PIN, GPIO_PIN_RESET);
-}
-
-/**
- * @brief Display IOE_GPIO Demo Hint
- * @param None
- * @retval None
- */
-static void IOE_GPIO_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set LCD Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"IOE_GPIO", CENTER_MODE);
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"This test check the IO and exti ", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"of the MFX expander Driver", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"Connect the requested pins with a wire", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
- BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
-
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- }
-
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/joystick.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/joystick.c
deleted file mode 100644
index 51ca6c9324..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/joystick.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/joystick.c
- * @author MCD Application Team
- * @brief This example code shows how to use the joystick feature in the
- * stm32446e_eval driver
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-static JOYState_TypeDef JoyState = JOY_NONE;
-/* Private function prototypes -----------------------------------------------*/
-static void Joystick_SetHint(uint8_t exti_vs_polling);
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief Joystick Gpio demo
- * @param None
- * @retval None
- */
-void Joystick_polling_demo (void)
-{
-
- uint8_t status = 0;
-
- Joystick_SetHint(0);
-
- status = BSP_JOY_Init(JOY_MODE_GPIO);
-
- if (status != IO_OK)
- {
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 95, (uint8_t *)"ERROR", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 80, (uint8_t *)"Joystick cannot be initialized", CENTER_MODE);
- }
-
- while (1)
- {
- if (status == IO_OK)
- {
- /* Get the Joystick State */
- JoyState = BSP_JOY_GetState();
- Joystick_SetCursorPosition();
- }
- if(CheckForUserInput() > 0)
- {
- return;
- }
- HAL_Delay(6);
- }
-}
-
-/**
- * @brief Joystick Exti demo
- * @param None
- * @retval None
- */
-void Joystick_exti_demo (void)
-{
- uint8_t status = 0;
- uint32_t ITstatus = 0;
-
- Joystick_SetHint(1);
-
- status = BSP_JOY_Init(JOY_MODE_EXTI);
-
- if (status != IO_OK)
- {
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 95, (uint8_t *)"ERROR", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 80, (uint8_t *)"Joystick cannot be initialized", CENTER_MODE);
- }
-
- if (status == IO_OK)
- {
- Joystick_SetCursorPosition();
- }
-
- while (1) /* pull for USER button in GPIO mode */
- {
- if (status == IO_OK)
- {
- if (MfxExtiReceived == 1)
- {
- MfxExtiReceived = 0;
- ITstatus = BSP_IO_ITGetStatus(JOY_ALL_PINS);
- if (ITstatus)
- {
- /* Get the Joystick State */
- JoyState = BSP_JOY_GetState();
- Joystick_SetCursorPosition();
- }
- BSP_IO_ITClear();
- /* poll if joystick is still pressed until it is released*/
- while ( BSP_JOY_GetState() != JOY_NONE)
- {
- Joystick_SetCursorPosition();
- HAL_Delay(5);
- }
- }
- }
- if(CheckForUserInput() > 0)
- {
- return;
- }
- HAL_Delay(5);
- }
-}
-
-/**
- * @brief Joystick cursor position
- * @param None
- * @retval None
- */
-void Joystick_SetCursorPosition(void)
-{
- static uint16_t xPtr = 12;
- static uint16_t yPtr = 92;
- static uint16_t old_xPtr = 12;
- static uint16_t old_yPtr = 92;
-
-
- switch(JoyState)
- {
- case JOY_UP:
- if(yPtr > 92)
- {
- yPtr--;
- }
- break;
- case JOY_DOWN:
- if(yPtr < (BSP_LCD_GetYSize() - 12 - 11))
- {
- yPtr++;
- }
- break;
- case JOY_LEFT:
- if(xPtr > 12)
- {
- xPtr--;
- }
- break;
- case JOY_RIGHT:
- if(xPtr < (BSP_LCD_GetXSize() - 8 - 11))
- {
- xPtr++;
- }
- break;
- default:
- break;
- }
-
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
-
- if(JoyState == JOY_SEL)
- {
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayChar(xPtr, yPtr, 'X');
-
- }
- else if(JoyState == JOY_NONE)
- {
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DisplayChar(xPtr, yPtr, 'X');
- }
- else
- {
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_DisplayChar(old_xPtr, old_yPtr, 'X');
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DisplayChar(xPtr, yPtr, 'X');
-
- old_xPtr = xPtr;
- old_yPtr = yPtr;
- }
-}
-
-
-
-/**
- * @brief Display joystick demo hint
- * @param None
- * @retval None
- */
-static void Joystick_SetHint(uint8_t exti_vs_polling)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set Joystick Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- if (exti_vs_polling == 0)
- {
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"MFX Joystick", CENTER_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"MFX Joystick Exti", CENTER_MODE);
- }
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"Please use the joystick to", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"move the pointer inside the", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"rectangle", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
- BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
-}
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/lcd.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/lcd.c
deleted file mode 100644
index de0dc745dd..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/lcd.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/lcd.c
- * @author MCD Application Team
- * @brief This example code shows how to use LCD drawing features.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define LCD_FEATURES_NUM 3
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-static uint8_t LCD_Feature = 0;
-/* Private function prototypes -----------------------------------------------*/
-static void LCD_SetHint(void);
-static void LCD_Show_Feature(uint8_t feature);
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief LCD demo
- * @param None
- * @retval None
- */
-void LCD_demo (void)
-{
- LCD_SetHint();
- LCD_Feature = 0;
- LCD_Show_Feature (LCD_Feature);
-
- while (1)
- {
-
- if(CheckForUserInput() > 0)
- {
- if(++LCD_Feature < LCD_FEATURES_NUM)
- {
- LCD_Show_Feature (LCD_Feature);
- }
- else
- {
- return;
- }
- }
- HAL_Delay(100);
- }
-}
-
-/**
- * @brief Display LCD demo hint
- * @param None
- * @retval None
- */
-static void LCD_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set LCD Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"LCD", CENTER_MODE);
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"This example shows the different", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"LCD Features, use BUTTON to display", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"next page", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
- BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
- }
-
-/**
- * @brief Show LCD Features
- * @param feature : feature index
- * @retval None
- */
-static void LCD_Show_Feature(uint8_t feature)
-{
- Point Points[]= {{20, 150}, {80, 150}, {80, 200}};
- Point Points2[]= {{100, 150}, {160, 150}, {160, 200}};
-
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_FillRect(12, 92, BSP_LCD_GetXSize() - 24, BSP_LCD_GetYSize()- 104);
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
-
- switch (feature)
- {
- case 0:
- /* Text Feature */
-
- BSP_LCD_DisplayStringAt(14, 100, (uint8_t *)"Left aligned Text", LEFT_MODE);
- BSP_LCD_DisplayStringAt(0, 115, (uint8_t *)"Center aligned Text", CENTER_MODE);
- BSP_LCD_DisplayStringAt(14, 130, (uint8_t *)"Right aligned Text", RIGHT_MODE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(14, 180, (uint8_t *)"Font24", LEFT_MODE);
- BSP_LCD_SetFont(&Font20);
- BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize()/2 -20, 180, (uint8_t *)"Font20", LEFT_MODE);
- BSP_LCD_SetFont(&Font16);
- BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() - 80, 184, (uint8_t *)"Font16", LEFT_MODE);
- break;
-
- case 1:
-
- /* Draw misc. Shapes */
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_DrawRect(20, 100, 60 , 40);
- BSP_LCD_FillRect(100, 100, 60 , 40);
-
- BSP_LCD_SetTextColor(LCD_COLOR_GRAY);
- BSP_LCD_DrawCircle(BSP_LCD_GetXSize() - 120, 120, 20);
- BSP_LCD_FillCircle(BSP_LCD_GetXSize() - 40, 120, 20);
-
- BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
- BSP_LCD_DrawPolygon(Points, 3);
- BSP_LCD_FillPolygon(Points2, 3);
-
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DrawEllipse(BSP_LCD_GetXSize() - 120, 170, 30, 20);
- BSP_LCD_FillEllipse(BSP_LCD_GetXSize() - 50, 170, 30, 20);
-
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_DrawHLine(20, BSP_LCD_GetYSize() - 30, BSP_LCD_GetXSize() / 5);
- BSP_LCD_DrawLine (BSP_LCD_GetXSize() - 150, BSP_LCD_GetYSize()- 20, BSP_LCD_GetXSize()- 20, BSP_LCD_GetYSize()- 50);
- BSP_LCD_DrawLine (BSP_LCD_GetXSize() - 150, BSP_LCD_GetYSize()- 50, BSP_LCD_GetXSize()- 20, BSP_LCD_GetYSize()- 20);
- break;
-
- case 2:
- /* Draw Bitmap */
- BSP_LCD_DrawBitmap(20, 100, (uint8_t *)stlogo);
- HAL_Delay(200);
-
- BSP_LCD_DrawBitmap(BSP_LCD_GetXSize()/2 - 40, 100, (uint8_t *)stlogo);
- HAL_Delay(200);
-
- BSP_LCD_DrawBitmap(BSP_LCD_GetXSize()-100, 100, (uint8_t *)stlogo);
- HAL_Delay(200);
-
- BSP_LCD_DrawBitmap(20, BSP_LCD_GetYSize()- 80, (uint8_t *)stlogo);
- HAL_Delay(200);
-
- BSP_LCD_DrawBitmap(BSP_LCD_GetXSize()/2 - 40, BSP_LCD_GetYSize()- 80, (uint8_t *)stlogo);
- HAL_Delay(200);
-
- BSP_LCD_DrawBitmap(BSP_LCD_GetXSize()-100, BSP_LCD_GetYSize()- 80, (uint8_t *)stlogo);
- HAL_Delay(200);
- break;
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/log.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/log.c
deleted file mode 100644
index 0a3c9ffdcd..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/log.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/log.c
- * @author MCD Application Team
- * @brief This example code shows how to use the LCD Log firmware functions
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-#include "lcd_log.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief LCD Log demo
- * @param None
- * @retval None
- */
-void Log_demo(void)
-{
- JOYState_TypeDef JoyState = JOY_NONE;
- uint8_t i = 0;
-
- /* Wait For User inputs */
- while(CheckForUserInput() == 0);
-
- BSP_JOY_Init(JOY_MODE_GPIO);
-
- /* Initialize LCD Log module */
- LCD_LOG_Init();
-
- /* Show Header and Footer texts */
- LCD_LOG_SetHeader((uint8_t *)"Log Example");
- LCD_LOG_SetFooter((uint8_t *)"Use Joystick to scroll up/down");
-
- /* Output User logs */
- for (i = 0; i < 10; i++)
- {
- LCD_UsrLog ("This is Line %d \n", i);
- }
-
- HAL_Delay(2000);
-
- /* Clear Old logs */
- LCD_LOG_ClearTextZone();
-
- /* Output new user logs */
- for (i = 0; i < 30; i++)
- {
- LCD_UsrLog ("This is Line %d \n", i);
- }
-
- /* Check for joystick user input for scroll (back and forward) */
- while (1)
- {
- JoyState = BSP_JOY_GetState();
- switch(JoyState)
- {
- case JOY_UP:
- LCD_LOG_ScrollBack();
- break;
- case JOY_DOWN:
- LCD_LOG_ScrollForward();
- break;
-
- default:
- break;
- }
- if(CheckForUserInput() > 0)
- {
- return;
- }
- HAL_Delay (10);
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/main.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/main.c
deleted file mode 100644
index dcb56c0c70..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/main.c
+++ /dev/null
@@ -1,367 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/main.c
- * @author MCD Application Team
- * @brief This example code shows how to use the STM32446E BSP Drivers
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-#include "stlogo.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-uint8_t DemoIndex = 0;
-uint8_t NbLoop = 1;
-volatile uint8_t MfxToggleLed = 0;
-/* Global extern variables ---------------------------------------------------*/
-volatile uint8_t MfxExtiReceived = 0;
-#ifndef USE_FULL_ASSERT
-uint16_t ErrorCounter = 0;
-#endif
-
-/* Private function prototypes -----------------------------------------------*/
-static void SystemClock_Config(void);
-static void Display_DemoDescription(void);
-
-BSP_DemoTypedef BSP_examples[]=
-{
- {Joystick_polling_demo, "JOYSTICK", 0},
- {Touchscreen_polling_demo, "TOUCHSCREEN", 0},
- {LCD_demo, "LCD", 0},
- {SD_demo, "mSD", 0},
- {Log_demo, "LCD LOG", 0},
- {SDRAM_demo, "SDRAM", 0},
- {EEPROM_demo, "EEPROM", 0},
- {QSPI_demo, "QSPI", 0},
- {AudioPlay_demo, "AUDIO PLAY", 0},
- {Camera_demo, "CAMERA", 0},
-};
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief Main program
- * @param None
- * @retval None
- */
-int main(void)
-{
- /* STM32F4xx HAL library initialization:
- - Configure the Flash prefetch, instruction and Data caches
- - Configure the Systick to generate an interrupt each 1 msec
- - Set NVIC Group Priority to 4
- - Global MSP (MCU Support Package) initialization
- */
- HAL_Init();
-
- /* Configure the system clock to 180 Mhz */
- SystemClock_Config();
-
- BSP_IO_Init();
-
- /* Set camera sensor in Power Down mode */
- BSP_CAMERA_PwrDown();
-
- BSP_LED_Init(LED1);
- BSP_LED_Init(LED2);
- BSP_LED_Init(LED3);
- BSP_LED_Init(LED4);
-
- BSP_LED_Toggle(LED4);
-
- /* Configure the User Button in GPIO Mode */
- BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO);
-
- /* temporary for debugging MFX */
- /* BSP_MFX_reg_access_for_debug(); */
-
- /*##-1- Initialize the LCD #################################################*/
- /* Initialize the LCD */
- BSP_LCD_Init();
-
- Display_DemoDescription();
-
- /* Wait For User inputs */
- while (1)
- {
- if ( MfxToggleLed == 1)
- {
- BSP_LED_Toggle(LED4);
- MfxToggleLed = 0;
- }
- if(BSP_PB_GetState(BUTTON_KEY) != RESET)
- {
- HAL_Delay(10);
- while (BSP_PB_GetState(BUTTON_KEY) != RESET);
-
- BSP_examples[DemoIndex++].DemoFunc();
-
- if(DemoIndex >= COUNT_OF_EXAMPLE(BSP_examples))
- {
- /* Increment number of loops which be used by EEPROM example */
- NbLoop++;
- DemoIndex = 0;
- }
- Display_DemoDescription();
- }
- }
-}
-
-/**
- * @brief This function is executed in case of error occurrence.
- * @param None
- * @retval None
- */
-static void Error_Handler(void)
-{
- while(1)
- {
- /* Insert a delay */
- HAL_Delay(50);
- }
-}
-
-/**
- * @brief System Clock Configuration
- * The system Clock is configured as follow :
- * System Clock source = PLL (HSE)
- * SYSCLK(Hz) = 180000000
- * HCLK(Hz) = 180000000
- * AHB Prescaler = 1
- * APB1 Prescaler = 4
- * APB2 Prescaler = 2
- * HSE Frequency(Hz) = 8000000
- * PLL_M = 8
- * PLL_N = 360
- * PLL_P = 2
- * PLL_Q = 7
- * PLL_R = 2
- * VDD(V) = 3.3
- * Main regulator output voltage = Scale1 mode
- * Flash Latency(WS) = 5
- * @param None
- * @retval None
- */
-static void SystemClock_Config(void)
-{
- RCC_ClkInitTypeDef RCC_ClkInitStruct;
- RCC_OscInitTypeDef RCC_OscInitStruct;
- HAL_StatusTypeDef ret = HAL_OK;
-
- /* Enable Power Control clock */
- __HAL_RCC_PWR_CLK_ENABLE();
-
- /* The voltage scaling allows optimizing the power consumption when the device is
- clocked below the maximum system frequency, to update the voltage scaling value
- regarding system frequency refer to product datasheet. */
- __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
-
- /* Enable HSE Oscillator and activate PLL with HSE as source */
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
- RCC_OscInitStruct.HSEState = RCC_HSE_ON;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
- RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
- RCC_OscInitStruct.PLL.PLLM = 8;
- RCC_OscInitStruct.PLL.PLLN = 360;
- RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
- RCC_OscInitStruct.PLL.PLLQ = 7;
- RCC_OscInitStruct.PLL.PLLR = 2;
- ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
-
- if(ret != HAL_OK)
- {
- Error_Handler();
- }
- /* activate the OverDrive to reach the 180 Mhz Frequency */
- ret = HAL_PWREx_EnableOverDrive();
- if(ret != HAL_OK)
- {
- Error_Handler();
- }
-
- /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
- clocks dividers */
- RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
- ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
- if(ret != HAL_OK)
- {
- Error_Handler();
- }
-}
-
-
-/**
- * @brief Display main demo messages.
- * @param None
- * @retval None
- */
-static void Display_DemoDescription(void)
-{
- uint8_t desc[58];
-
- BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
-
- /* Clear the LCD */
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_DARKBLUE);
-
- /* Display LCD messages */
- BSP_LCD_DisplayStringAt(0, 10, (uint8_t *)"STM32F446E BSP", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 35, (uint8_t *)"Drivers examples", CENTER_MODE);
-
- /* Draw Bitmap */
- BSP_LCD_DrawBitmap((BSP_LCD_GetXSize() - 80)/2, 65, (uint8_t *)stlogo);
-
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 20, (uint8_t *)"Copyright (c) STMicroelectronics 2016", CENTER_MODE);
-
- BSP_LCD_SetFont(&Font16);
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, BSP_LCD_GetYSize()/2 + 15, BSP_LCD_GetXSize(), 60);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 + 30, (uint8_t *)"Press User Button to start :", CENTER_MODE);
- sprintf((char *)desc,"%s example", BSP_examples[DemoIndex].DemoName);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 + 45, (uint8_t *)desc, CENTER_MODE);
-}
-
-/**
- * @brief Check for user input.
- * @param None
- * @retval Input state (1 : active / 0 : Inactive)
- */
-uint8_t CheckForUserInput(void)
-{
- if(BSP_PB_GetState(BUTTON_KEY) != RESET)
- {
- HAL_Delay(10);
- while (BSP_PB_GetState(BUTTON_KEY) != RESET);
- return 1 ;
- }
- return 0;
-}
-
-/**
- * @brief Toggle Leds.
- * @param None
- * @retval None
- */
-void Toggle_Leds(void)
-{
- static uint32_t ticks = 0;
-
- if(ticks++ > 200)
- {
- /* Led2 and Led4 are on MFX (IO expander). Communication with Mfx is done by I2C.
- Often the sw requires ISRs (irq service routines) to be quick while communication
- with I2C can be considered relatively long (hundreds of usec depending on I2C clk).
- In order to avoid blocking I2C communication on interrupt service routines
- here we propose an example of implementation which is a mix between pooling and exit:
- On ISR a flag is set (MfxToggleLed), the main loop polls on the flag;
- Mcu communicates with Mfx only when the flag has been set. This is just an example:
- the users should choose they strategy depending on their application needs.*/
- /* NOTE: Led1 and Led3 can toggle on SysTick without performance drawback
- because they are on GPIO pins */
- MfxToggleLed = 1;
- ticks = 0;
- }
-}
-
-
-/**
- * @brief EXTI line detection callbacks.
- * @param GPIO_Pin: Specifies the pins connected EXTI line
- * @retval None
- */
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
-{
- static uint32_t debounce_time = 0;
-
- if(GPIO_Pin == KEY_BUTTON_PIN)
- {
- /* Prevent debounce effect for user key */
- if((HAL_GetTick() - debounce_time) > 50)
- {
- debounce_time = HAL_GetTick();
- }
- /*function to be completed by else {} */
- }
-
- if(GPIO_Pin == MFX_IRQOUT_PIN)
- {
- /* The different functionalities of MFX (TS, Joystick, SD detection, etc, ) can be
- configured in exti mode to generate an IRQ on given events.
- The MFX IRQ_OUT pin is unique and common to all functionalities, so if several
- functionalities are configured in exit mode, the MCU has to enquire MFX about the IRQ source
- (see function BSP_IO_ITGetStatus). Communication with Mfx is done by I2C.
- Often the sw requires ISRs (interrupt service routines) to be quick while communication
- with I2C can be considered relatively long (depending on SW requirements).
- Considering that the features for human interaction like TS, Joystick, SD detection
- don’t need immediate reaction, it is suggested to use polling mode instead of EXTI mode,
- in order to avoid blocking I2C communication on interrupt service routines */
-
- /* Here an example of implementation is proposed which is a mix between pooling and exit mode:
- On ISR a flag is set (MfxIrqReceived), the main loop polls on the flag rather then polling the Mfx;
- Mcu communicates with Mfx only when the flag has been set by ISR. This is just an example:
- the users should choose they strategy depending on their application needs.*/
- MfxExtiReceived = 1;
- }
-}
-
-#ifdef USE_FULL_ASSERT
-
-/**
- * @brief Reports the name of the source file and the source line number
- * where the assert_param error has occurred.
- * @param file: pointer to the source file name
- * @param line: assert_param error line source number
- * @retval None
- */
-void assert_failed(uint8_t* file, uint32_t line)
-{
- /* User can add his own implementation to report the file name and line number,
- ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
-
- /* Infinite loop */
- while (1)
- {
- }
-}
-#endif /* USE_FULL_ASSERT */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/qspi.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/qspi.c
deleted file mode 100644
index 7787ab8aac..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/qspi.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/qspi.c
- * @author MCD Application Team
- * @brief This example code shows how to use the QSPI Driver
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
-* @{
-*/
-
-/** @addtogroup BSP
-* @{
-*/
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define BUFFER_SIZE ((uint32_t)0x0200)
-#define WRITE_READ_ADDR ((uint32_t)0x0050)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-uint8_t qspi_aTxBuffer[BUFFER_SIZE];
-uint8_t qspi_aRxBuffer[BUFFER_SIZE];
-
-/* Private function prototypes -----------------------------------------------*/
-static void QSPI_SetHint(void);
-static void Fill_Buffer (uint8_t *pBuffer, uint32_t uwBufferLength, uint32_t uwOffset);
-static uint8_t Buffercmp (uint8_t* pBuffer1, uint8_t* pBuffer2, uint32_t BufferLength);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
-* @brief QSPI Demo
-* @param None
-* @retval None
-*/
-void QSPI_demo (void)
-{
- /* QSPI info structure */
- static QSPI_Info pQSPI_Info;
- uint8_t status;
-
- QSPI_SetHint();
-
- /*##-1- Configure the QSPI device ##########################################*/
- /* QSPI device configuration */
- status = BSP_QSPI_Init();
-
- if (status == QSPI_NOT_SUPPORTED)
- {
- BSP_LCD_DisplayStringAt(20, 100, (uint8_t*)"QSPI Initialization : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t*)"QSPI Test Aborted.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t*)"Check the hardware configuration :", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t*)" refer to the UM of the board", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 175, (uint8_t*)" for the hardware modifications", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 190, (uint8_t*)" to connect the QSPI memory", LEFT_MODE);
- }
- else if (status == QSPI_ERROR)
- {
- BSP_LCD_DisplayStringAt(20, 100, (uint8_t*)"QSPI Initialization : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t*)"QSPI Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 100, (uint8_t*)"QSPI Initialization : OK.", LEFT_MODE);
-
- /*##-2- Read & check the QSPI info #######################################*/
- /* Initialize the structure */
- pQSPI_Info.FlashSize = (uint32_t)0x00;
- pQSPI_Info.EraseSectorSize = (uint32_t)0x00;
- pQSPI_Info.EraseSectorsNumber = (uint32_t)0x00;
- pQSPI_Info.ProgPageSize = (uint32_t)0x00;
- pQSPI_Info.ProgPagesNumber = (uint32_t)0x00;
-
- /* Read the QSPI memory info */
- BSP_QSPI_GetInfo(&pQSPI_Info);
-
- /* Test the correctness */
- if((pQSPI_Info.FlashSize != 0x2000000) || (pQSPI_Info.EraseSectorSize != 0x1000) ||
- (pQSPI_Info.ProgPageSize != 0x100) || (pQSPI_Info.EraseSectorsNumber != 8192) ||
- (pQSPI_Info.ProgPagesNumber != 131072))
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t*)"QSPI GET INFO : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t*)"QSPI Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t*)"QSPI GET INFO : OK. ", LEFT_MODE);
-
- /*##-3- Erase QSPI memory ################################################*/
- if(BSP_QSPI_Erase_Block(WRITE_READ_ADDR) != QSPI_OK)
- {
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t*)"QSPI ERASE : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t*)"QSPI Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t*)"QSPI ERASE : OK. ", LEFT_MODE);
-
- /*##-4- QSPI memory read/write access #################################*/
- /* Fill the buffer to write */
- Fill_Buffer(qspi_aTxBuffer, BUFFER_SIZE, 0xD20F);
-
- /* Write data to the QSPI memory */
- if(BSP_QSPI_Write(qspi_aTxBuffer, WRITE_READ_ADDR, BUFFER_SIZE) != QSPI_OK)
- {
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t*)"QSPI WRITE : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t*)"QSPI Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t*)"QSPI WRITE : OK. ", LEFT_MODE);
-
- /* Read back data from the QSPI memory */
- if(BSP_QSPI_Read(qspi_aRxBuffer, WRITE_READ_ADDR, BUFFER_SIZE) != QSPI_OK)
- {
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t*)"QSPI READ : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 175, (uint8_t*)"QSPI Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t*)"QSPI READ : OK. ", LEFT_MODE);
-
- /*##-5- Checking data integrity ############################################*/
- if(Buffercmp(qspi_aRxBuffer, qspi_aTxBuffer, BUFFER_SIZE) > 0)
- {
- BSP_LCD_DisplayStringAt(20, 175, (uint8_t*)"QSPI COMPARE : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 190, (uint8_t*)"QSPI Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 175, (uint8_t*)"QSPI Test : OK. ", LEFT_MODE);
- }
- }
- }
- }
- }
- }
-
- while (1)
- {
- if(CheckForUserInput() > 0)
- {
- BSP_QSPI_DeInit();
- return;
- }
- }
-}
-
-/**
-* @brief Display QSPI Demo Hint
-* @param None
-* @retval None
-*/
-static void QSPI_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set LCD Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t*)"QSPI", CENTER_MODE);
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t*)"This example shows how to write", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t*)"and read data on QSPI memory", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 60, (uint8_t*)"(Hardware modifications needed)", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
- BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
-
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
-}
-
-/**
-* @brief Fills buffer with user predefined data.
-* @param pBuffer: pointer on the buffer to fill
-* @param uwBufferLenght: size of the buffer to fill
-* @param uwOffset: first value to fill on the buffer
-* @retval None
-*/
-static void Fill_Buffer(uint8_t *pBuffer, uint32_t uwBufferLenght, uint32_t uwOffset)
-{
- uint32_t tmpIndex = 0;
-
- /* Put in global buffer different values */
- for (tmpIndex = 0; tmpIndex < uwBufferLenght; tmpIndex++ )
- {
- pBuffer[tmpIndex] = tmpIndex + uwOffset;
- }
-}
-
-/**
-* @brief Compares two buffers.
-* @param pBuffer1, pBuffer2: buffers to be compared.
-* @param BufferLength: buffer's length
-* @retval 1: pBuffer identical to pBuffer1
-* 0: pBuffer differs from pBuffer1
-*/
-static uint8_t Buffercmp(uint8_t* pBuffer1, uint8_t* pBuffer2, uint32_t BufferLength)
-{
- while (BufferLength--)
- {
- if (*pBuffer1 != *pBuffer2)
- {
- return 1;
- }
-
- pBuffer1++;
- pBuffer2++;
- }
-
- return 0;
-}
-/**
-* @}
-*/
-
-/**
-* @}
-*/
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/sd.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/sd.c
deleted file mode 100644
index 25272fd13b..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/sd.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/sd.c
- * @author MCD Application Team
- * @brief This example code shows how to use the SD Driver
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define BLOCK_START_ADDR 0 /* Block start address */
-#define NUM_OF_BLOCKS 5 /* Total number of blocks */
-#define BUFFER_WORDS_SIZE ((BLOCKSIZE * NUM_OF_BLOCKS) >> 2) /* Total data size in bytes */
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-uint32_t aTxBuffer[BUFFER_WORDS_SIZE];
-uint32_t aRxBuffer[BUFFER_WORDS_SIZE];
-/* Private function prototypes -----------------------------------------------*/
-void SD_main_test(void);
-void SD_Detection(void);
-static void SD_SetHint(void);
-static void Fill_Buffer(uint32_t *pBuffer, uint32_t uwBufferLenght, uint32_t uwOffset);
-static uint8_t Buffercmp(uint32_t* pBuffer1, uint32_t* pBuffer2, uint16_t BufferLength);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief SD Demo
- * @param None
- * @retval None
- */
-void SD_demo (void)
-{
- SD_main_test();
-
- while (1)
- {
- SD_Detection();
-
- if(CheckForUserInput() > 0)
- {
- BSP_SD_DeInit();
- return;
- }
- }
-}
-
-
-
-/**
- * @brief SD Demo exti detection
- * @param None
- * @retval None
- */
-void SD_exti_demo (void)
-{
- uint32_t ITstatus = 0;
-
- SD_main_test();
-
- if(BSP_SD_IsDetected() != SD_PRESENT)
- {
- BSP_SD_Init();
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(20, BSP_LCD_GetYSize()-30, (uint8_t *)"SD Not Connected", LEFT_MODE);
- }
- else
- {
- BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
- BSP_LCD_DisplayStringAt(20, BSP_LCD_GetYSize()-30, (uint8_t *)"SD Connected ", LEFT_MODE);
- }
-
- BSP_SD_ITConfig();
-
- while (1)
- {
- if (MfxExtiReceived == 1)
- {
- MfxExtiReceived = 0;
- ITstatus = BSP_IO_ITGetStatus(SD_DETECT_PIN);
- if (ITstatus)
- {
- SD_Detection();
- }
- BSP_IO_ITClear();
- }
-
- if(CheckForUserInput() > 0)
- {
- BSP_SD_DeInit();
- return;
- }
- }
-}
-
-/**
- * @brief SD_Detection checks detection and writes msg on display
- * @param None
- * @retval None
- */
-void SD_Detection(void)
-{
- static uint8_t prev_status = 2;
-
- /* Check if the SD card is plugged in the slot */
- if(BSP_SD_IsDetected() != SD_PRESENT)
- {
- if(prev_status != SD_NOT_PRESENT)
- {
- //BSP_SD_Init();
- prev_status = SD_NOT_PRESENT;
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(20, BSP_LCD_GetYSize()-30, (uint8_t *)"SD Not Connected", LEFT_MODE);
- }
- }
- else if (prev_status != SD_PRESENT)
- {
- prev_status = SD_PRESENT;
- BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
- BSP_LCD_DisplayStringAt(20, BSP_LCD_GetYSize()-30, (uint8_t *)"SD Connected ", LEFT_MODE);
- }
-}
-
-/**
- * @brief Main part of SD Demo Test
- * @param None
- * @retval None
- */
-void SD_main_test (void)
-{
- uint8_t SD_state = MSD_OK;
-
- SD_SetHint();
- SD_state = BSP_SD_Init();
-
- if (SD_state != MSD_OK)
- {
- if(SD_state == MSD_ERROR_SD_NOT_PRESENT)
- {
- BSP_LCD_DisplayStringAt(20, 100, (uint8_t *)"SD shall be inserted before running test", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 100, (uint8_t *)"SD Initialization : FAIL.", LEFT_MODE);
- }
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"SD Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 100, (uint8_t *)"SD Initialization : OK.", LEFT_MODE);
-
- SD_state = BSP_SD_Erase(BLOCK_START_ADDR, NUM_OF_BLOCKS);
- /* Wait until SD cards are ready to use for new operation */
- while((BSP_SD_GetCardState() != SD_TRANSFER_OK))
- {
- }
-
- if (SD_state != MSD_OK)
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"SD ERASE : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SD Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"SD ERASE : OK.", LEFT_MODE);
-
- /* Fill the buffer to write */
- Fill_Buffer(aTxBuffer, BUFFER_WORDS_SIZE, 0x22FF);
- SD_state = BSP_SD_WriteBlocks(aTxBuffer, BLOCK_START_ADDR, NUM_OF_BLOCKS, SD_DATATIMEOUT);
- /* Wait until SD cards are ready to use for new operation */
- while((BSP_SD_GetCardState() != SD_TRANSFER_OK))
- {
- }
- if (SD_state != MSD_OK)
- {
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SD WRITE : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"SD Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SD WRITE : OK.", LEFT_MODE);
- SD_state = BSP_SD_ReadBlocks(aRxBuffer, BLOCK_START_ADDR, NUM_OF_BLOCKS, SD_DATATIMEOUT);
- if (SD_state != MSD_OK)
- {
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"SD READ : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t *)"SD Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"SD READ : OK.", LEFT_MODE);
- if (Buffercmp(aTxBuffer, aRxBuffer, BUFFER_WORDS_SIZE) > 0)
- {
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t *)"SD COMPARE : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 175, (uint8_t *)"SD Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t *)"SD Test : OK.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 175, (uint8_t *)"SD can be removed.", LEFT_MODE);
- }
- }
- }
- }
- }
-}
-
-
-/**
- * @brief Display SD Demo Hint
- * @param None
- * @retval None
- */
-static void SD_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set LCD Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"SD", CENTER_MODE);
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"This example shows how to write", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"and read data on the microSD and also", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"how to detect the presence of the card", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
- BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
-
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- }
-
-/**
- * @brief Fills buffer with user predefined data.
- * @param pBuffer: pointer on the buffer to fill
- * @param uwBufferLenght: size of the buffer to fill
- * @param uwOffset: first value to fill on the buffer
- * @retval None
- */
-static void Fill_Buffer(uint32_t *pBuffer, uint32_t uwBufferLenght, uint32_t uwOffset)
-{
- uint32_t tmpIndex = 0;
-
- /* Put in global buffer different values */
- for (tmpIndex = 0; tmpIndex < uwBufferLenght; tmpIndex++ )
- {
- pBuffer[tmpIndex] = tmpIndex + uwOffset;
- }
-}
-
-/**
- * @brief Compares two buffers.
- * @param pBuffer1, pBuffer2: buffers to be compared.
- * @param BufferLength: buffer's length
- * @retval 1: pBuffer identical to pBuffer1
- * 0: pBuffer differs from pBuffer1
- */
-static uint8_t Buffercmp(uint32_t* pBuffer1, uint32_t* pBuffer2, uint16_t BufferLength)
-{
- while (BufferLength--)
- {
- if (*pBuffer1 != *pBuffer2)
- {
- return 1;
- }
-
- pBuffer1++;
- pBuffer2++;
- }
-
- return 0;
-}
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/sdram.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/sdram.c
deleted file mode 100644
index 0300134fb6..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/sdram.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/sdram.c
- * @author MCD Application Team
- * @brief This example code shows how to use the SDRAM Driver
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define SDRAM_BUFFER_SIZE ((uint32_t)0x0100)
-#define WRITE_READ_ADDR_OFFSET ((uint32_t)0x0800)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-static uint32_t sdram_aTxBuffer[SDRAM_BUFFER_SIZE];
-static uint32_t sdram_aRxBuffer[SDRAM_BUFFER_SIZE];
-
-/* Private function prototypes -----------------------------------------------*/
-static void SDRAM_SetHint(void);
-static void Fill_Buffer(uint32_t *pBuffer, uint32_t uwBufferLenght, uint32_t uwOffset);
-static uint8_t Buffercmp(uint32_t* pBuffer1, uint32_t* pBuffer2, uint16_t BufferLength);
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief SDRAM Demo
- * @param None
- * @retval None
- */
-void SDRAM_demo (void)
-{
-
- SDRAM_SetHint();
-
- /* SDRAM device configuration */
- if(BSP_SDRAM_Init() != SDRAM_OK)
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"SDRAM Initialization : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SDRAM Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 100, (uint8_t *)"SDRAM Initialization : OK.", LEFT_MODE);
- }
- /* Fill the buffer to write */
- Fill_Buffer(sdram_aTxBuffer, SDRAM_BUFFER_SIZE, 0xA244250F);
-
- /* Write data to the SDRAM memory */
- if(BSP_SDRAM_WriteData(SDRAM_WRITE_READ_ADDR + WRITE_READ_ADDR_OFFSET, sdram_aTxBuffer, SDRAM_BUFFER_SIZE) != SDRAM_OK)
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"SDRAM WRITE : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SDRAM Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"SDRAM WRITE : OK.", LEFT_MODE);
- }
-
- /* Read back data from the SDRAM memory */
- if(BSP_SDRAM_ReadData(SDRAM_WRITE_READ_ADDR + WRITE_READ_ADDR_OFFSET, sdram_aRxBuffer, SDRAM_BUFFER_SIZE) != SDRAM_OK)
- {
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SDRAM READ : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"SDRAM Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SDRAM READ : OK.", LEFT_MODE);
- }
-
- if(Buffercmp(sdram_aTxBuffer, sdram_aRxBuffer, SDRAM_BUFFER_SIZE) > 0)
- {
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"SDRAM COMPARE : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t *)"SDRAM Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"SDRAM Test : OK.", LEFT_MODE);
- }
-
- while (1)
- {
- if(CheckForUserInput() > 0)
- {
- BSP_SDRAM_DeInit();
- return;
- }
- }
-}
-
-/**
- * @brief Display SDRAM Demo Hint
- * @param None
- * @retval None
- */
-static void SDRAM_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set LCD Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"SDRAM", CENTER_MODE);
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"This example shows how to write", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"and read data on SDRAM", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
- BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
-
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- }
-
-/**
- * @brief Fills buffer with user predefined data.
- * @param pBuffer: pointer on the buffer to fill
- * @param uwBufferLenght: size of the buffer to fill
- * @param uwOffset: first value to fill on the buffer
- * @retval None
- */
-static void Fill_Buffer(uint32_t *pBuffer, uint32_t uwBufferLenght, uint32_t uwOffset)
-{
- uint32_t tmpIndex = 0;
-
- /* Put in global buffer different values */
- for (tmpIndex = 0; tmpIndex < uwBufferLenght; tmpIndex++ )
- {
- pBuffer[tmpIndex] = tmpIndex + uwOffset;
- }
-}
-
-/**
- * @brief Compares two buffers.
- * @param pBuffer1, pBuffer2: buffers to be compared.
- * @param BufferLength: buffer's length
- * @retval 1: pBuffer identical to pBuffer1
- * 0: pBuffer differs from pBuffer1
- */
-static uint8_t Buffercmp(uint32_t* pBuffer1, uint32_t* pBuffer2, uint16_t BufferLength)
-{
- while (BufferLength--)
- {
- if (*pBuffer1 != *pBuffer2)
- {
- return 1;
- }
-
- pBuffer1++;
- pBuffer2++;
- }
-
- return 0;
-}
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/sdram_dma.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/sdram_dma.c
deleted file mode 100644
index 58a3d97865..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/sdram_dma.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/sdram_dma.c
- * @author MCD Application Team
- * @brief This example code shows how to use the SDRAM Driver
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define BUFFER_SIZE ((uint32_t)0x0100)
-#define WRITE_READ_ADDR_OFFSET ((uint32_t)0x0800)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-static uint32_t sdram_aTxBuffer[BUFFER_SIZE];
-static uint32_t sdram_aRxBuffer[BUFFER_SIZE];
-extern SDRAM_HandleTypeDef sdramHandle;
-//DMA_HandleTypeDef hdma;
-/* DMA transfer complete flag */
-__IO uint32_t uwDMA_Transfer_Complete = 0;
-
-/* Private function prototypes -----------------------------------------------*/
-static void SDRAM_DMA_SetHint(void);
-static void Fill_Buffer(uint32_t *pBuffer, uint32_t uwBufferLength, uint32_t uwOffset);
-static uint8_t Buffercmp(uint32_t* pBuffer1, uint32_t* pBuffer2, uint16_t BufferLength);
-
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief SDRAM Demo
- * @param None
- * @retval None
- */
-void SDRAM_DMA_demo (void)
-{
-
- SDRAM_DMA_SetHint();
-
- /* -1- SDRAM device configuration */
- if(BSP_SDRAM_Init() != SDRAM_OK)
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"SDRAM Initialization : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SDRAM Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 100, (uint8_t *)"SDRAM Initialization : OK.", LEFT_MODE);
- }
-
- /* -2- Fill the buffer to write */
- Fill_Buffer(sdram_aTxBuffer, BUFFER_SIZE, 0xA244250F);
-
- /* -3- Write data to the SDRAM memory using DMA */
- uwDMA_Transfer_Complete = 0;
- if(BSP_SDRAM_WriteData_DMA((SDRAM_WRITE_READ_ADDR + WRITE_READ_ADDR_OFFSET), sdram_aTxBuffer, BUFFER_SIZE) != SDRAM_OK)
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"SDRAM WRITE dma : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SDRAM Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"SDRAM WRITE DMA : REQUESTED", LEFT_MODE);
- }
-
- /* Wait until DMA transfer is complete */
- while (!uwDMA_Transfer_Complete)
- {
- }
- BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"SDRAM WRITE DMA : COMPLETED", LEFT_MODE);
-
- /* -4- Read back data from the SDRAM memory using DMA */
- uwDMA_Transfer_Complete = 0;
-
- if(BSP_SDRAM_ReadData_DMA(SDRAM_WRITE_READ_ADDR + WRITE_READ_ADDR_OFFSET, sdram_aRxBuffer, BUFFER_SIZE) != SDRAM_OK)
- {
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"SDRAM READ DMA : FAILED", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t *)"SDRAM Test Aborted", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"SDRAM READ DMA : REQUESTED", LEFT_MODE);
- }
-
- /* Wait until DMA transfer is complete */
- while (!uwDMA_Transfer_Complete)
- {
- }
-
- BSP_LCD_DisplayStringAt(20, 160, (uint8_t *)"SDRAM READ DMA : COMPLETED", LEFT_MODE);
-
- /* -5- Compare both buffers */
- if(Buffercmp(sdram_aTxBuffer, sdram_aRxBuffer, BUFFER_SIZE) > 0)
- {
- BSP_LCD_DisplayStringAt(20, 175, (uint8_t *)"SDRAM COMPARE : FAILED.", LEFT_MODE);
- BSP_LCD_DisplayStringAt(20, 190, (uint8_t *)"SDRAM Test Aborted.", LEFT_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(20, 175, (uint8_t *)"SDRAM TEST : SUCCESSFUL", LEFT_MODE);
- }
-
- while (1)
- {
- if(CheckForUserInput() > 0)
- {
- return;
- }
- }
-}
-
-/**
- * @brief DMA conversion complete callback
- * @note This function is executed when the transfer complete interrupt
- * is generated
- * @retval None
- */
-void HAL_SDRAM_DMA_XferCpltCallback(DMA_HandleTypeDef *hdma)
-{
- /* Set transfer complete flag */
- uwDMA_Transfer_Complete = 1;
-}
-
-/**
- * @brief DMA transfer complete error callback.
- * @param hdma: DMA handle
- * @retval None
- */
-
-void HAL_SDRAM_DMA_XferErrorCallback(DMA_HandleTypeDef *hdma)
-{
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(20, 215, (uint8_t *)"DMA ERROR", LEFT_MODE);
-}
-/**
- * @brief Display SDRAM Demo Hint
- * @param None
- * @retval None
- */
-static void SDRAM_DMA_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set LCD Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"SDRAM DMA", CENTER_MODE);
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"This example shows how to write", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"and read data on SDRAM", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
- BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
-
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- }
-
-/**
- * @brief Fills buffer with user predefined data.
- * @param pBuffer: pointer on the buffer to fill
- * @param uwBufferLength: size of the buffer to fill
- * @param uwOffset: first value to fill on the buffer
- * @retval None
- */
-static void Fill_Buffer(uint32_t *pBuffer, uint32_t uwBufferLength, uint32_t uwOffset)
-{
- uint32_t tmpIndex = 0;
-
- /* Put in global buffer different values */
- for (tmpIndex = 0; tmpIndex < uwBufferLength; tmpIndex++ )
- {
- pBuffer[tmpIndex] = tmpIndex + uwOffset;
- }
-}
-
-/**
- * @brief Compares two buffers.
- * @param pBuffer1, pBuffer2: buffers to be compared.
- * @param BufferLength: buffer's length
- * @retval 1: pBuffer identical to pBuffer1
- * 0: pBuffer differs from pBuffer1
- */
-static uint8_t Buffercmp(uint32_t* pBuffer1, uint32_t* pBuffer2, uint16_t BufferLength)
-{
- while (BufferLength--)
- {
- if (*pBuffer1 != *pBuffer2)
- {
- return 1;
- }
-
- pBuffer1++;
- pBuffer2++;
- }
-
- return 0;
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/stm32f4xx_it.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/stm32f4xx_it.c
deleted file mode 100644
index ab18c93594..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/stm32f4xx_it.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/stm32f4xx_it.c
- * @author MCD Application Team
- * @brief Main Interrupt Service Routines.
- * This file provides template for all exceptions handler and
- * peripherals interrupt service routine.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-#include "stm32f4xx_it.h"
-
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-extern DMA_HandleTypeDef hdma;
-extern QSPI_HandleTypeDef QSPIHandle;
-extern SD_HandleTypeDef uSdHandle;
-/*DMA status declared in "sdram_dma.c" file */
-extern uint32_t uwDMA_Transfer_Complete;
-/* SAI handler declared in "stm32446e_eval_audio.c" file */
-extern SAI_HandleTypeDef haudio_out_sai;
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-extern void BSP_SDRAM_DMA_IRQHandler(void);
-
-/******************************************************************************/
-/* Cortex-M4 Processor Exceptions Handlers */
-/******************************************************************************/
-
-/**
- * @brief This function handles NMI exception.
- * @param None
- * @retval None
- */
-void NMI_Handler(void)
-{
-}
-
-/**
- * @brief This function handles Hard Fault exception.
- * @param None
- * @retval None
- */
-void HardFault_Handler(void)
-{
- /* Go to infinite loop when Hard Fault exception occurs */
- while (1)
- {
- }
-}
-
-/**
- * @brief This function handles Memory Manage exception.
- * @param None
- * @retval None
- */
-void MemManage_Handler(void)
-{
- /* Go to infinite loop when Memory Manage exception occurs */
- while (1)
- {
- }
-}
-
-/**
- * @brief This function handles Bus Fault exception.
- * @param None
- * @retval None
- */
-void BusFault_Handler(void)
-{
- /* Go to infinite loop when Bus Fault exception occurs */
- while (1)
- {
- }
-}
-
-/**
- * @brief This function handles Usage Fault exception.
- * @param None
- * @retval None
- */
-void UsageFault_Handler(void)
-{
- /* Go to infinite loop when Usage Fault exception occurs */
- while (1)
- {
- }
-}
-
-/**
- * @brief This function handles SVCall exception.
- * @param None
- * @retval None
- */
-void SVC_Handler(void)
-{
-}
-
-/**
- * @brief This function handles Debug Monitor exception.
- * @param None
- * @retval None
- */
-void DebugMon_Handler(void)
-{
-}
-
-/**
- * @brief This function handles PendSVC exception.
- * @param None
- * @retval None
- */
-void PendSV_Handler(void)
-{
-}
-
-/**
- * @brief This function handles SysTick Handler.
- * @param None
- * @retval None
- */
-void SysTick_Handler(void)
-{
- HAL_IncTick();
- Toggle_Leds();
- /* Check periodically the buffer state and fill played buffer with new data
- following the state that has been updated by the BSP_AUDIO_OUT_TransferComplete_CallBack()
- and BSP_AUDIO_OUT_HalfTransfer_CallBack() */
- AUDIO_Process();
-}
-
-/******************************************************************************/
-/* STM32F4xx Peripherals Interrupt Handlers */
-/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
-/* available peripheral interrupt handler's name please refer to the startup */
-/* file (startup_stm32f4xx.s). */
-/******************************************************************************/
-
-/**
- * @brief This function handles DMA Stream interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream0_IRQHandler(void)
-{
- /* Check the interrupt and clear flag */
- BSP_SDRAM_DMA_IRQHandler();
-}
-
-/**
- * @brief This function handles External line 1 interrupt request.
- * @param None
- * @retval None
- */
-void EXTI0_IRQHandler(void)
-{
- HAL_GPIO_EXTI_IRQHandler(MFX_IRQOUT_PIN);
-}
-
-/**
- * @brief This function handles External line 2 interrupt request.
- * @param None
- * @retval None
- */
-void EXTI2_IRQHandler(void)
-{
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
-}
-
-/**
- * @brief This function handles External line 15_10 interrupt request.
- * @param None
- * @retval None
- */
-void EXTI15_10_IRQHandler(void)
-{
- HAL_GPIO_EXTI_IRQHandler(TAMPER_BUTTON_PIN | KEY_BUTTON_PIN);
-}
-
-/**
- * @brief This function handles DMA2 Stream 6 interrupt request.
- * @param None
- * @retval None
- */
-void BSP_SD_DMA_Tx_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(uSdHandle.hdmatx);
-}
-
-
-/**
- * @brief DMA interrupt handler.
- * @param None
- * @retval None
- */
-void DMA2_Stream1_IRQHandler(void)
-{
- BSP_CAMERA_DMA_IRQHandler();
-}
-
-/**
- * @brief DCMI interrupt handler.
- * @param None
- * @retval None
- */
-void DCMI_IRQHandler(void)
-{
- BSP_CAMERA_IRQHandler();
-}
-
-/**
- * @brief This function handles QUADSPI interrupt request.
- * @param None
- * @retval None
- */
-void QUADSPI_IRQHandler(void)
-{
- HAL_QSPI_IRQHandler(&QSPIHandle);
-}
-
-/**
- * @brief This function handles PPP interrupt request.
- * @param None
- * @retval None
- */
-/*void PPP_IRQHandler(void)
-{
-}*/
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/system_stm32f4xx.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/system_stm32f4xx.c
deleted file mode 100644
index 5f4215a4bd..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/system_stm32f4xx.c
+++ /dev/null
@@ -1,417 +0,0 @@
-/**
- ******************************************************************************
- * @file system_stm32f4xx.c
- * @author MCD Application Team
- * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
- *
- * This file provides two functions and one global variable to be called from
- * user application:
- * - SystemInit(): This function is called at startup just after reset and
- * before branch to main program. This call is made inside
- * the "startup_stm32f4xx.s" file.
- *
- * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
- * by the user application to setup the SysTick
- * timer or configure other parameters.
- *
- * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
- * be called whenever the core clock is changed
- * during program execution.
- *
- *
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/** @addtogroup CMSIS
- * @{
- */
-
-/** @addtogroup stm32f4xx_system
- * @{
- */
-
-/** @addtogroup STM32F4xx_System_Private_Includes
- * @{
- */
-
-
-#include "stm32f4xx.h"
-
-#if !defined (HSE_VALUE)
- #define HSE_VALUE ((uint32_t)8000000) /*!< Default value of the External oscillator in Hz */
-#endif /* HSE_VALUE */
-
-#if !defined (HSI_VALUE)
- #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
-#endif /* HSI_VALUE */
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F4xx_System_Private_TypesDefinitions
- * @{
- */
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F4xx_System_Private_Defines
- * @{
- */
-
-/************************* Miscellaneous Configuration ************************/
-/*!< Uncomment the following line if you need to use external SDRAM mounted
- on the EVAL as data memory */
-/* #define DATA_IN_ExtSDRAM */
-
-/*!< Uncomment the following line if you need to relocate your vector Table in
- Internal SRAM. */
-/* #define VECT_TAB_SRAM */
-#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
- This value must be a multiple of 0x200. */
-/******************************************************************************/
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F4xx_System_Private_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F4xx_System_Private_Variables
- * @{
- */
- /* This variable is updated in three ways:
- 1) by calling CMSIS function SystemCoreClockUpdate()
- 2) by calling HAL API function HAL_RCC_GetHCLKFreq()
- 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
- Note: If you use this function to configure the system clock; then there
- is no need to call the 2 first functions listed above, since SystemCoreClock
- variable is updated automatically.
- */
-uint32_t SystemCoreClock = 16000000;
-const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
-const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
-/**
- * @}
- */
-
-/** @addtogroup STM32F4xx_System_Private_FunctionPrototypes
- * @{
- */
-
-#if defined (DATA_IN_ExtSDRAM)
- static void SystemInit_ExtMemCtl(void);
-#endif /* DATA_IN_ExtSDRAM */
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F4xx_System_Private_Functions
- * @{
- */
-
-/**
- * @brief Setup the microcontroller system
- * Initialize the FPU setting, vector table location and External memory
- * configuration.
- * @param None
- * @retval None
- */
-void SystemInit(void)
-{
- /* FPU settings ------------------------------------------------------------*/
- #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
- SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
- #endif
- /* Reset the RCC clock configuration to the default reset state ------------*/
- /* Set HSION bit */
- RCC->CR |= (uint32_t)0x00000001;
-
- /* Reset CFGR register */
- RCC->CFGR = 0x00000000;
-
- /* Reset HSEON, CSSON and PLLON bits */
- RCC->CR &= (uint32_t)0xFEF6FFFF;
-
- /* Reset PLLCFGR register */
- RCC->PLLCFGR = 0x24003010;
-
- /* Reset HSEBYP bit */
- RCC->CR &= (uint32_t)0xFFFBFFFF;
-
- /* Disable all interrupts */
- RCC->CIR = 0x00000000;
-
-#if defined (DATA_IN_ExtSDRAM)
- SystemInit_ExtMemCtl();
-#endif /* DATA_IN_ExtSDRAM */
-
- /* Configure the Vector Table location add offset address ------------------*/
-#ifdef VECT_TAB_SRAM
- SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
-#else
- SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
-#endif
-}
-
-/**
- * @brief Update SystemCoreClock variable according to Clock Register Values.
- * The SystemCoreClock variable contains the core clock (HCLK), it can
- * be used by the user application to setup the SysTick timer or configure
- * other parameters.
- *
- * @note Each time the core clock (HCLK) changes, this function must be called
- * to update SystemCoreClock variable value. Otherwise, any configuration
- * based on this variable will be incorrect.
- *
- * @note - The system frequency computed by this function is not the real
- * frequency in the chip. It is calculated based on the predefined
- * constant and the selected clock source:
- *
- * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
- *
- * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
- *
- * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
- * or HSI_VALUE(*) multiplied/divided by the PLL factors.
- *
- * (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value
- * 16 MHz) but the real value may vary depending on the variations
- * in voltage and temperature.
- *
- * (**) HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (its value
- * depends on the application requirements), user has to ensure that HSE_VALUE
- * is same as the real frequency of the crystal used. Otherwise, this function
- * may have wrong result.
- *
- * - The result of this function could be not correct when using fractional
- * value for HSE crystal.
- *
- * @param None
- * @retval None
- */
-void SystemCoreClockUpdate(void)
-{
- uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
-
- /* Get SYSCLK source -------------------------------------------------------*/
- tmp = RCC->CFGR & RCC_CFGR_SWS;
-
- switch (tmp)
- {
- case 0x00: /* HSI used as system clock source */
- SystemCoreClock = HSI_VALUE;
- break;
- case 0x04: /* HSE used as system clock source */
- SystemCoreClock = HSE_VALUE;
- break;
- case 0x08: /* PLL used as system clock source */
-
- /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
- SYSCLK = PLL_VCO / PLL_P
- */
- pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
- pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
-
- if (pllsource != 0)
- {
- /* HSE used as PLL clock source */
- pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
- }
- else
- {
- /* HSI used as PLL clock source */
- pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
- }
-
- pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
- SystemCoreClock = pllvco/pllp;
- break;
- default:
- SystemCoreClock = HSI_VALUE;
- break;
- }
- /* Compute HCLK frequency --------------------------------------------------*/
- /* Get HCLK prescaler */
- tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
- /* HCLK frequency */
- SystemCoreClock >>= tmp;
-}
-
-#if defined (DATA_IN_ExtSDRAM)
-/**
- * @brief Setup the external memory controller.
- * Called in startup_stm32f4xx.s before jump to main.
- * This function configures the external memories (SDRAM)
- * This SDRAM will be used as program data memory (including heap and stack).
- * @param None
- * @retval None
- */
-void SystemInit_ExtMemCtl(void)
-{
- register uint32_t tmpreg = 0, timeout = 0xFFFF;
- register __IO uint32_t index;
-
- /* Enable GPIOA, GPIOC, GPIOD, GPIOE, GPIOF and GPIOG interface
- clock */
- RCC->AHB1ENR |= 0x0000007D;
-
- /* Connect PAx pins to FMC Alternate function */
- GPIOA->AFR[0] = 0xC0000000;
- GPIOA->AFR[1] = 0x00000000;
- /* Configure PAx pins in Alternate function mode */
- GPIOA->MODER = 0xA8008000;
- /* Configure PAx pins speed to 100 MHz */
- GPIOA->OSPEEDR = 0x0C00C000;
- /* Configure PAx pins Output type to push-pull */
- GPIOA->OTYPER = 0x00000000;
- /* No pull-up, pull-down for PAx pins */
- GPIOA->PUPDR = 0x64000000;
-
- /* Connect PCx pins to FMC Alternate function */
- GPIOC->AFR[0] = 0x00CC0000;
- GPIOC->AFR[1] = 0x00000000;
- /* Configure PCx pins in Alternate function mode */
- GPIOC->MODER = 0x00000A00;
- /* Configure PCx pins speed to 100 MHz */
- GPIOC->OSPEEDR = 0x00000F00;
- /* Configure PCx pins Output type to push-pull */
- GPIOC->OTYPER = 0x00000000;
- /* No pull-up, pull-down for PCx pins */
- GPIOC->PUPDR = 0x00000000;
-
- /* Connect PDx pins to FMC Alternate function */
- GPIOD->AFR[0] = 0x000000CC;
- GPIOD->AFR[1] = 0xCC000CCC;
- /* Configure PDx pins in Alternate function mode */
- GPIOD->MODER = 0xA02A000A;
- /* Configure PDx pins speed to 100 MHz */
- GPIOD->OSPEEDR = 0xF03F000F;
- /* Configure PDx pins Output type to push-pull */
- GPIOD->OTYPER = 0x00000000;
- /* No pull-up, pull-down for PDx pins */
- GPIOD->PUPDR = 0x00000000;
-
- /* Connect PEx pins to FMC Alternate function */
- GPIOE->AFR[0] = 0xC00000CC;
- GPIOE->AFR[1] = 0xCCCCCCCC;
- /* Configure PEx pins in Alternate function mode */
- GPIOE->MODER = 0xAAAA800A;
- /* Configure PEx pins speed to 100 MHz */
- GPIOE->OSPEEDR = 0xFFFFC00F;
- /* Configure PEx pins Output type to push-pull */
- GPIOE->OTYPER = 0x00000000;
- /* No pull-up, pull-down for PEx pins */
- GPIOE->PUPDR = 0x00000000;
-
- /* Connect PFx pins to FMC Alternate function */
- GPIOF->AFR[0] = 0x00CCCCCC;
- GPIOF->AFR[1] = 0xCCCCC000;
- /* Configure PFx pins in Alternate function mode */
- GPIOF->MODER = 0xAA800AAA;
- /* Configure PFx pins speed to 100 MHz */
- GPIOF->OSPEEDR = 0xFFC00FFF;
- /* Configure PFx pins Output type to push-pull */
- GPIOF->OTYPER = 0x00000000;
- /* No pull-up, pull-down for PFx pins */
- GPIOF->PUPDR = 0x00000000;
-
- /* Connect PGx pins to FMC Alternate function */
- GPIOG->AFR[0] = 0x00CC0CCC;
- GPIOG->AFR[1] = 0xC000000C;
- /* Configure PGx pins in Alternate function mode */
- GPIOG->MODER = 0x80020A2A;
- /* Configure PGx pins speed to 100 MHz */
- GPIOG->OSPEEDR = 0xC0030F3F;
- /* Configure PGx pins Output type to push-pull */
- GPIOG->OTYPER = 0x00000000;
- /* No pull-up, pull-down for PGx pins */
- GPIOG->PUPDR = 0x00000000;
-
- /* FMC Configuration */
- /* Enable the FMC interface clock */
- RCC->AHB3ENR |= 0x00000001;
-
- /* Configure and enable SDRAM bank2 */
- FMC_Bank5_6->SDCR[0] = 0x00001954;
- FMC_Bank5_6->SDTR[0] = 0x01115351;
-
- /* SDRAM initialization sequence */
- /* Clock enable command */
- FMC_Bank5_6->SDCMR = 0x00000011;
- tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
- while((tmpreg != 0) && (timeout-- > 0))
- {
- tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
- }
-
- /* Delay */
- for (index = 0; index<1000; index++);
-
- /* PALL command */
- FMC_Bank5_6->SDCMR = 0x00000012;
- tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
- timeout = 0xFFFF;
- while((tmpreg != 0) && (timeout-- > 0))
- {
- tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
- }
-
- /* Auto refresh command */
- FMC_Bank5_6->SDCMR = 0x000000F3;
- tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
- timeout = 0xFFFF;
- while((tmpreg != 0) && (timeout-- > 0))
- {
- tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
- }
-
- /* MRD register program */
- FMC_Bank5_6->SDCMR = 0x00044014;
- tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
- timeout = 0xFFFF;
- while((tmpreg != 0) && (timeout-- > 0))
- {
- tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
- }
-
- /* Set refresh count */
- tmpreg = FMC_Bank5_6->SDRTR;
- FMC_Bank5_6->SDRTR = (tmpreg | (0x0000056A<<1));
-
- /* Disable write protection */
- tmpreg = FMC_Bank5_6->SDCR[0];
- FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);
-}
-#endif /* DATA_IN_ExtSDRAM */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/touchscreen.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/touchscreen.c
deleted file mode 100644
index b5f91f4920..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/touchscreen.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/touchscreen.c
- * @author MCD Application Team
- * @brief This example code shows how to use the touchscreen driver.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define CIRCLE_RADIUS 30
-/* Private macro -------------------------------------------------------------*/
-#define CIRCLE_XPOS(i) ((i * BSP_LCD_GetXSize()) / 5)
-#define CIRCLE_YPOS(i) (BSP_LCD_GetYSize() - CIRCLE_RADIUS - 60)
-/* Private variables ---------------------------------------------------------*/
-static TS_StateTypeDef TS_State;
-/* Private function prototypes -----------------------------------------------*/
-static void Touchscreen_SetHint(uint8_t exti_vs_polling);
-static void Touchscreen_DrawBackground (uint8_t state);
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief Touchscreen Polling Demo
- * @param None
- * @retval None
- */
-void Touchscreen_polling_demo(void)
-{
- uint16_t x,y;
- uint8_t status = 0;
- uint8_t state = 0;
-
- if(IsCalibrationDone() == 0)
- {
- Touchscreen_Calibration();
- }
-
- Touchscreen_SetHint(0);
-
- status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
-
- if (status != TS_OK)
- {
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 95, (uint8_t *)"ERROR", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 80, (uint8_t *)"Touchscreen cannot be initialized", CENTER_MODE);
- }
- else
- {
- Touchscreen_DrawBackground(state);
- }
-
- while (1)
- {
- if (status == TS_OK)
- {
- BSP_TS_GetState(&TS_State);
-
- x = Calibration_GetX(TS_State.x);
- y = Calibration_GetY(TS_State.y);
-
- if((TS_State.TouchDetected) &&
- (y > (CIRCLE_YPOS(1) - CIRCLE_RADIUS))&&
- (y < (CIRCLE_YPOS(1) + CIRCLE_RADIUS)))
- {
-
- if((x > (CIRCLE_XPOS(1) - CIRCLE_RADIUS))&&
- (x < (CIRCLE_XPOS(1) + CIRCLE_RADIUS)))
- {
- if((state & 1) == 0)
- {
- Touchscreen_DrawBackground(state);
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillCircle(CIRCLE_XPOS(1), CIRCLE_YPOS(1), CIRCLE_RADIUS);
- state = 1;
- }
- }
- if((x > (CIRCLE_XPOS(2) - CIRCLE_RADIUS))&&
- (x < (CIRCLE_XPOS(2) + CIRCLE_RADIUS)))
- {
- if((state & 2) == 0)
- {
- Touchscreen_DrawBackground(state);
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_FillCircle(CIRCLE_XPOS(2), CIRCLE_YPOS(2), CIRCLE_RADIUS);
- state = 2;
- }
- }
-
- if((x > (CIRCLE_XPOS(3) - CIRCLE_RADIUS))&&
- (x < (CIRCLE_XPOS(3) + CIRCLE_RADIUS)))
- {
- if((state & 4) == 0)
- {
- Touchscreen_DrawBackground(state);
- BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
- BSP_LCD_FillCircle(CIRCLE_XPOS(3), CIRCLE_YPOS(3), CIRCLE_RADIUS);
- state = 4;
- }
- }
-
- if((x > (CIRCLE_XPOS(4) - CIRCLE_RADIUS))&&
- (x < (CIRCLE_XPOS(4) + CIRCLE_RADIUS)))
- {
- if((state & 8) == 0)
- {
- Touchscreen_DrawBackground(state);
- BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
- BSP_LCD_FillCircle(CIRCLE_XPOS(4), CIRCLE_YPOS(3), CIRCLE_RADIUS);
- state = 8;
- }
- }
- }
- }
-
- if(CheckForUserInput() > 0)
- {
- return;
- }
-
- HAL_Delay(50);
- }
-}
-
-/**
- * @brief Display TS Demo Hint
- * @param None
- * @retval None
- */
-static void Touchscreen_SetHint(uint8_t exti_vs_polling)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set Touchscreen Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
- BSP_LCD_SetFont(&Font24);
- if (exti_vs_polling == 0)
- {
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"Touchscreen", CENTER_MODE);
- }
- else
- {
- BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"Touchscreen Exti", CENTER_MODE);
- }
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"Please use the Touchscreen to", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"activate the colored circle", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"inside the rectangle", CENTER_MODE);
-
- /* Set the LCD Text Color */
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
- BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
-
-}
-
-/**
- * @brief Draw Touchscreen Background
- * @param state : touch zone state
- * @retval None
- */
-static void Touchscreen_DrawBackground (uint8_t state)
-{
-
- switch(state)
- {
-
- case 0:
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillCircle(CIRCLE_XPOS(1), CIRCLE_YPOS(1), CIRCLE_RADIUS);
-
-
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_FillCircle(CIRCLE_XPOS(2), CIRCLE_YPOS(2), CIRCLE_RADIUS);
-
-
- BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
- BSP_LCD_FillCircle(CIRCLE_XPOS(3), CIRCLE_YPOS(3), CIRCLE_RADIUS);
-
-
- BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
- BSP_LCD_FillCircle(CIRCLE_XPOS(4), CIRCLE_YPOS(3), CIRCLE_RADIUS);
-
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_FillCircle(CIRCLE_XPOS(1), CIRCLE_YPOS(1), CIRCLE_RADIUS - 2);
- BSP_LCD_FillCircle(CIRCLE_XPOS(2), CIRCLE_YPOS(2), CIRCLE_RADIUS - 2);
- BSP_LCD_FillCircle(CIRCLE_XPOS(3), CIRCLE_YPOS(3), CIRCLE_RADIUS - 2);
- BSP_LCD_FillCircle(CIRCLE_XPOS(4), CIRCLE_YPOS(3), CIRCLE_RADIUS - 2);
- break;
-
- case 1:
- BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
- BSP_LCD_FillCircle(CIRCLE_XPOS(1), CIRCLE_YPOS(1), CIRCLE_RADIUS);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_FillCircle(CIRCLE_XPOS(1), CIRCLE_YPOS(1), CIRCLE_RADIUS - 2);
- break;
-
- case 2:
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_FillCircle(CIRCLE_XPOS(2), CIRCLE_YPOS(2), CIRCLE_RADIUS);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_FillCircle(CIRCLE_XPOS(2), CIRCLE_YPOS(2), CIRCLE_RADIUS - 2);
- break;
-
- case 4:
- BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
- BSP_LCD_FillCircle(CIRCLE_XPOS(3), CIRCLE_YPOS(3), CIRCLE_RADIUS);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_FillCircle(CIRCLE_XPOS(3), CIRCLE_YPOS(3), CIRCLE_RADIUS - 2);
- break;
-
- case 8:
- BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
- BSP_LCD_FillCircle(CIRCLE_XPOS(4), CIRCLE_YPOS(4), CIRCLE_RADIUS);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_FillCircle(CIRCLE_XPOS(4), CIRCLE_YPOS(4), CIRCLE_RADIUS - 2);
- break;
-
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/Src/ts_calibration.c b/Projects/STM32446E_EVAL/Examples/BSP/Src/ts_calibration.c
deleted file mode 100644
index aec4f3ec25..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/Src/ts_calibration.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/**
- ******************************************************************************
- * @file BSP/Src/ts_calibration.c
- * @author MCD Application Team
- * @brief This example code shows how to calibrate the touchscreen.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "main.h"
-
-/** @addtogroup STM32F4xx_HAL_Examples
- * @{
- */
-
-/** @addtogroup BSP
- * @{
- */
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define TUNE_FACTOR_X 1000
-#define TUNE_FACTOR_Y 660
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-static TS_StateTypeDef TS_State;
-static uint8_t Calibration_Done = 0;
-static int16_t A1, A2, B1, B2;
-static int16_t aPhysX[2], aPhysY[2], aLogX[2], aLogY[2];
-/* Private function prototypes -----------------------------------------------*/
-static void TouchscreenCalibration_SetHint(void);
-static void GetPhysValues(int16_t LogX, int16_t LogY, int16_t * pPhysX, int16_t * pPhysY) ;
-static void WaitForPressedState(uint8_t Pressed) ;
-/* Private functions ---------------------------------------------------------*/
-
-
-/**
- * @brief Performs the TS calibration
- * @param None
- * @retval None
- */
-void Touchscreen_Calibration (void)
-{
- uint8_t status = 0;
- uint8_t i = 0;
-
- TouchscreenCalibration_SetHint();
-
- status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
-
- if (status != TS_OK)
- {
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
- BSP_LCD_SetTextColor(LCD_COLOR_RED);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 95, (uint8_t *)"ERROR", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 80, (uint8_t *)"Touchscreen cannot be initialized", CENTER_MODE);
- }
-
- while (1)
- {
- if (status == TS_OK)
- {
- aLogX[0] = 15;
- aLogY[0] = 15;
- aLogX[1] = BSP_LCD_GetXSize() - 15;
- aLogY[1] = BSP_LCD_GetYSize() - 15;
-
- for (i = 0; i < 2; i++)
- {
- GetPhysValues(aLogX[i], aLogY[i], &aPhysX[i], &aPhysY[i]);
- }
- A1 = (TUNE_FACTOR_X * ( aLogX[1] - aLogX[0]))/ ( aPhysX[1] - aPhysX[0]);
- B1 = (TUNE_FACTOR_X * aLogX[0]) - A1 * aPhysX[0];
-
- A2 = (TUNE_FACTOR_Y * ( aLogY[1] - aLogY[0]))/ ( aPhysY[1] - aPhysY[0]);
- B2 = (TUNE_FACTOR_Y * aLogY[0]) - A2 * aPhysY[0];
- if (B2 > 0)
- B2 = 0;
-
- Calibration_Done = 1;
- return;
- }
-
- HAL_Delay(5);
- }
-}
-
-/**
- * @brief Display calibration hint
- * @param None
- * @retval None
- */
-static void TouchscreenCalibration_SetHint(void)
-{
- /* Clear the LCD */
- BSP_LCD_Clear(LCD_COLOR_WHITE);
-
- /* Set Touchscreen Demo description */
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
-
- BSP_LCD_SetFont(&Font12);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 - 27, (uint8_t *)"Before using the Touchscreen", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 - 12, (uint8_t *)"you need to calibrate it.", CENTER_MODE);
- BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 + 3, (uint8_t *)"Press on the black circles", CENTER_MODE);
-}
-
-
-/**
- * @brief Get Physical position
- * @param LogX : logical X position
- * @param LogY : logical Y position
- * @param pPhysX : Physical X position
- * @param pPhysY : Physical Y position
- * @retval None
- */
-static void GetPhysValues(int16_t LogX, int16_t LogY, int16_t * pPhysX, int16_t * pPhysY)
-{
- /* Draw the ring */
- BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
- BSP_LCD_FillCircle(LogX, LogY, 5);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_FillCircle(LogX, LogY, 2);
-
- /* Wait until touch is pressed */
- WaitForPressedState(1);
-
- BSP_TS_GetState(&TS_State);
- *pPhysX = TS_State.x;
- *pPhysY = TS_State.y;
-
- /* Wait until touch is released */
- WaitForPressedState(0);
- BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
- BSP_LCD_FillCircle(LogX, LogY, 5);
-}
-
-/**
- * @brief Main program
- * @param None
- * @retval None
- */
-static void WaitForPressedState(uint8_t Pressed)
-{
- TS_StateTypeDef State;
-
- do
- {
- BSP_TS_GetState(&State);
- HAL_Delay(10);
- if (State.TouchDetected == Pressed)
- {
- uint16_t TimeStart = HAL_GetTick();
- do {
- BSP_TS_GetState(&State);
- HAL_Delay(10);
- if (State.TouchDetected != Pressed)
- {
- break;
- } else if ((HAL_GetTick() - 100) > TimeStart)
- {
- return;
- }
- } while (1);
- }
- } while (1);
-}
-
-/**
- * @brief Calibrate X position
- * @param x : X position
- * @retval calibrated x
- */
-uint16_t Calibration_GetX(uint16_t x)
-{
- return (((A1 * x) + B1)/TUNE_FACTOR_X) - 65;
-}
-
-/**
- * @brief Calibrate Y position
- * @param y : Y position
- * @retval calibrated y
- */
-uint16_t Calibration_GetY(uint16_t y)
-{
- return (((A2 * y) + B2)/TUNE_FACTOR_Y);
-}
-
-/**check if the TS is calibrated
- * @param None
-* @retval calibration state (1 : calibrated / 0: no)
- */
-uint8_t IsCalibrationDone(void)
-{
- return (Calibration_Done);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/Projects/STM32446E_EVAL/Examples/BSP/readme.txt b/Projects/STM32446E_EVAL/Examples/BSP/readme.txt
deleted file mode 100644
index 9b05d6efee..0000000000
--- a/Projects/STM32446E_EVAL/Examples/BSP/readme.txt
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- @page BSP Example on how to use the BSP drivers
-
- @verbatim
- ******************** (C) COPYRIGHT 2017 STMicroelectronics *******************
- * @file BSP/readme.txt
- * @author MCD Application Team
- * @brief Description of the BSP example.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2017 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- @endverbatim
-
-@par Example Description
-
-This example provides a description of how to use the different BSP drivers.
-
-At the beginning of the main program the HAL_Init() function is called to reset
-all the peripherals, initialize the Flash interface and the systick.
-Then the SystemClock_Config() function is used to configure the system clock
-(SYSCLK) to run at 180 MHz and provide 50 MHz at the output PLL divided by PLL_Q.
-This frequency permit to reach 25 Mhz clock needed for SD operation and in line
-with microSD specification.
-
-
-This example shows how to use the different functionalities of LCD, SD card,
-touchscreen, joystick and SDRAM external memory, audio playback by switching
-between all tests using key button.
-
-Firstly, use the joystick button to move a pointer inside a rectangle
-(up/down/right/left) and change the pointer color(select).
-
-Secondly, and after the touchscreen calibration, use the touchscreen
-functionality to select or activate colored circle inside a rectangle.
-
-Thirdly, this example shows how to use the different LCD features to display string
-with different fonts, to display different shapes and to draw a bitmap.
-
-Fourthly, this example shows how to erase, write and read the SD card and also
-how to detect the presence of the card.
-
-Fifthly, this example shows how to use the LCD log features.
-
-Sixthly, this example provides of how to write, read and buffers compare
-for different SDRAM external memory.
-
-Seventhly, this example shows how to read and write data in RF EEPROM. The I2C EEPROM
-memory (M24LR64) is available on separate daughter board ANT7-M24LR-A, which is not
-provided with the STM32446E-EVAL board. To use this driver you have to connect the
-ANT7-M24LR-A to CN1 connector of STM32446E-EVAL board.
-
-Eightly, this example shows how to use the QSPI features.
-
-Ninthly, this example shows how to play an audio file through the SAI peripheral
-using the external codec WM8994 implemented on the STM32446E-EVAL board. The SAI input
-clock, provided by a dedicated PLL (PLLI2S), is configured initially to have an audio
-sampling frequency at 48 KHz. The audio data is stored in the internal flash memory
-(4 channels, 16-bit, 48 KHz). Following the instruction on the display, stream can be
-paused and resumed, volume can be changed and sample frequency can be changed.
-Notice that changing sampling frequency might switch the channels on speakers with
-the channels on headset, resulting in a different music. This effect is kept to highlight
-that there are 4 channels and is out of the scope of this example to correct it.
-
-Tenthly, this example shows a camera sensor stream on screen.
-It is compatible with only Samsung S5K5CAG camera sensor. It displays streams for two
-resolutions : QQVGA (160x120) and QVGA (320x240).
-
-At the end of the nine examples when pushing the user button the application loops
-to the beginning (first examples).
-
-@note In case of camera fail, verify that camera sensor (U866 3M JS1434) connector
- located at the bottom side of MB1183 RevB Camera module is well connected.
-
-@note For a good calibration, touch the extreme TOP LEFT point and the extreme
- BOTTOM RIGHT point of LCD.
-@note Care must be taken when using HAL_Delay(), this function provides accurate delay (in milliseconds)
- based on variable incremented in SysTick ISR. This implies that if HAL_Delay() is called from
- a peripheral ISR process, then the SysTick interrupt must have higher priority (numerically lower)
- than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
- To change the SysTick interrupt priority you have to use HAL_NVIC_SetPriority() function.
-
-@note The application need to ensure that the SysTick time base is always set to 1 millisecond
- to have correct HAL operation.
-
-@par Keywords
-
-BSP, LCD, Touchscreen, PSRAM, DMA, QUADSPI, Erase, Read, Write, Audio play, Record, MEMS, Audio Codec, DFSDM,
-I2S, Microphone, Headphones
-
-@par Directory contents
-
- - BSP/Src/main.c Main program
- - BSP/Src/system_stm32f4xx.c STM32F4xx system clock configuration file
- - BSP/Src/stm32f4xx_it.c Interrupt handlers
- - BSP/Src/joystick.c Joystick feature
- - BSP/Src/lcd.c LCD drawing features
- - BSP/Src/log.c LCD Log firmware functions
- - BSP/Src/sd.c SD features
- - BSP/Src/sdram.c SDRAM features
- - BSP/Src/eeprom.c EEPROM features
- - BSP/Src/qspi.c QSPI features
- - BSP/Src/audio.c Audio features
- - BSP/Src/camera.c Camera features
- - BSP/Src/touchscreen.c Touchscreen feature
- - BSP/Src/ts_calibration.c Touchscreen calibration
- - BSP/Inc/main.h Main program header file
- - BSP/Inc/stm32f4xx_hal_conf.h HAL configuration file
- - BSP/Inc/stm32f4xx_it.h Interrupt handlers header file
- - BSP/Inc/lcd_log_conf.h lcd_log configuration template file
- - BSP/Inc/stlogo.h Image used for BSP example
-
-
-@par Hardware and Software environment
-
- - This example runs on STM32F446xx devices.
-
- - This example has been tested with STMicroelectronics STM32446E-EVAL
- evaluation boards and can be easily tailored to any other supported device
- and development board.
-
-
-@par How to use it ?
-
- - Use STLink utility, available on www.st.com or any other in system programming
- tool to load "BSP/Binary/audio_sample_tdm.bin" file to the STM32 internal flash
- at the address 0x08040000.
-
-In order to make the program work, you must do the following :
- - Open your preferred toolchain
- - Rebuild all files and load your image into target memory
- - Run the example
- @note Make sure that the tool flash loader does not erase or overwrite the
- loaded audio file at address 0x08040000 by limiting the application
- end address to 0x0803FFFF. This is already done for the example project
- - Connect a headphone and a speaker to the audio jack connectors (CN22/CN23).
-
-
- */
diff --git a/Projects/STM32446E_EVAL/Examples/CAN/CAN_Loopback/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/CAN/CAN_Loopback/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/CAN/CAN_Loopback/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/CAN/CAN_Loopback/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/CEC/CEC_DataExchange/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/CEC/CEC_DataExchange/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/CEC/CEC_DataExchange/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/CEC/CEC_DataExchange/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/CEC/CEC_ListenMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/CEC/CEC_ListenMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/CEC/CEC_ListenMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/CEC/CEC_ListenMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/CEC/CEC_MultiAddress/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/CEC/CEC_MultiAddress/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/CEC/CEC_MultiAddress/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/CEC/CEC_MultiAddress/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 51750473cc..bdbdb0022c 100644
--- a/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -86,13 +86,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -100,7 +102,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 2135ba0109..2f9fb55825 100644
--- a/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/I2C/FMPI2C_EEPROM/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/I2C/FMPI2C_EEPROM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/I2C/FMPI2C_EEPROM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/I2C/FMPI2C_EEPROM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/I2C/FMPI2C_EEPROM/Src/main.c b/Projects/STM32446E_EVAL/Examples/I2C/FMPI2C_EEPROM/Src/main.c
index 517a96457e..7da23aca04 100644
--- a/Projects/STM32446E_EVAL/Examples/I2C/FMPI2C_EEPROM/Src/main.c
+++ b/Projects/STM32446E_EVAL/Examples/I2C/FMPI2C_EEPROM/Src/main.c
@@ -138,7 +138,7 @@ int main(void)
}
/* Check if the EEPROM is ready for a new operation */
- while (HAL_FMPI2C_IsDeviceReady(&I2cHandle, EEPROM_ADDRESS, EEPROM_MAX_TRIALS, I2Cx_TIMEOUT_MAX) == HAL_TIMEOUT);
+ while (HAL_FMPI2C_IsDeviceReady(&I2cHandle, EEPROM_ADDRESS, EEPROM_MAX_TRIALS, I2Cx_TIMEOUT_MAX) != HAL_OK);
/* Wait for the end of the transfer */
while (HAL_FMPI2C_GetState(&I2cHandle) != HAL_FMPI2C_STATE_READY)
diff --git a/Projects/STM32446E_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index ca89ce8f60..0ed803cc34 100644
--- a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -100,27 +100,31 @@ SECTIONS
} >QSPI AT> FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 9061ac8de6..2f7a2bf3af 100644
--- a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -86,8 +86,12 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
@@ -104,20 +108,20 @@ SECTIONS
} >QSPI
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/SAI/SAI_AudioPlay/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/SAI/SAI_AudioPlay/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/SAI/SAI_AudioPlay/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/SAI/SAI_AudioPlay/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_PrescalerSelection/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_PrescalerSelection/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_PrescalerSelection/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_PrescalerSelection/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/UART/UART_HyperTerminal_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/UART/UART_HyperTerminal_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/UART/UART_HyperTerminal_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/UART/UART_HyperTerminal_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Templates/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Templates/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Templates/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Templates/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32446E_EVAL/Templates_LL/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32446E_EVAL/Templates_LL/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32446E_EVAL/Templates_LL/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32446E_EVAL/Templates_LL/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 478ac2803b..160f766ee1 100644
--- a/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/Src/main.c b/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/Src/main.c
index 1846b6970f..9ebf39f937 100644
--- a/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/Src/main.c
+++ b/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/Src/main.c
@@ -38,6 +38,7 @@ uint8_t ubNumberOfFiles = 0;
uint32_t uwBmplen = 0;
extern LTDC_HandleTypeDef hltdc_eval;
extern DSI_HandleTypeDef hdsi_eval;
+extern LCD_Driver_TypeDef Lcd_Driver_Type;
DSI_VidCfgTypeDef hdsivideo_handle;
/* Internal Buffer defined in SDRAM memory */
@@ -48,6 +49,7 @@ static void LCD_Config(void);
static void SystemClock_Config(void);
static void Error_Handler(void);
static uint8_t LCD_Init(void);
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type);
/* Private functions ---------------------------------------------------------*/
@@ -299,26 +301,38 @@ static uint8_t LCD_Init(void)
HAL_DSI_Init(&(hdsi_eval), &(dsiPllInit));
+ /* Start DSI */
+ HAL_DSI_Start(&(hdsi_eval));
+
+ /* Enable the DSI BTW for read operations */
+ HAL_DSI_ConfigFlowControl(&hdsi_eval, DSI_FLOW_CONTROL_BTA);
+ Lcd_Driver_Type = LCD_ReadType(Lcd_Driver_Type);
+
+ BSP_LCD_Reset();
+ HAL_DSI_Stop(&hdsi_eval);
/* The following values are same for portrait and landscape orientations */
-#if defined (USE_STM32469I_DISCO_REVC)
- VSA = NT35510_480X800_VSYNC;
- VBP = NT35510_480X800_VBP;
- VFP = NT35510_480X800_VFP;
- HSA = NT35510_480X800_HSYNC;
- HBP = NT35510_480X800_HBP;
- HFP = NT35510_480X800_HFP;
- HACT = NT35510_800X480_WIDTH;
- VACT = NT35510_800X480_HEIGHT;
-#else
- VSA = OTM8009A_480X800_VSYNC; /* 1 */
- VBP = OTM8009A_480X800_VBP; /* 15 */
- VFP = OTM8009A_480X800_VFP; /* 16 */
- HSA = OTM8009A_480X800_HSYNC; /* 2 */
- HBP = OTM8009A_480X800_HBP; /* 20 */
- HFP = OTM8009A_480X800_HFP; /* 20 */
- HACT = OTM8009A_800X480_WIDTH; /* 800 */
- VACT = OTM8009A_800X480_HEIGHT; /* 480 */
-#endif
+ if(Lcd_Driver_Type == LCD_CTRL_NT35510)
+ {
+ VSA = NT35510_480X800_VSYNC;
+ VBP = NT35510_480X800_VBP;
+ VFP = NT35510_480X800_VFP;
+ HSA = NT35510_480X800_HSYNC;
+ HBP = NT35510_480X800_HBP;
+ HFP = NT35510_480X800_HFP;
+ HACT = NT35510_800X480_WIDTH;
+ VACT = NT35510_800X480_HEIGHT;
+ }
+ else
+ {
+ VSA = OTM8009A_480X800_VSYNC; /* 1 */
+ VBP = OTM8009A_480X800_VBP; /* 15 */
+ VFP = OTM8009A_480X800_VFP; /* 16 */
+ HSA = OTM8009A_480X800_HSYNC; /* 2 */
+ HBP = OTM8009A_480X800_HBP; /* 20 */
+ HFP = OTM8009A_480X800_HFP; /* 20 */
+ HACT = OTM8009A_800X480_WIDTH; /* 800 */
+ VACT = OTM8009A_800X480_HEIGHT; /* 480 */
+ }
hdsivideo_handle.VirtualChannelID = LCD_OTM8009A_ID;
hdsivideo_handle.ColorCoding = LCD_DSI_PIXEL_DATA_FMT_RBG888;
@@ -426,27 +440,32 @@ static uint8_t LCD_Init(void)
/************************End LTDC Initialization*******************************/
-#if defined (USE_STM32469I_DISCO_REVC)
-/***********************NT35510 Initialization********************************/
-
- /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver)
- * depending on configuration set in 'hdsivideo_handle'.
- */
- NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ /* Checking the ID to determine the type of component */
+ if(Lcd_Driver_Type == LCD_CTRL_NT35510)
+ {
+ /***********************NT35510 Initialization********************************/
-/***********************End NT35510 Initialization****************************/
-#else
-/***********************OTM8009A Initialization********************************/
-
- /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver)
- * depending on configuration set in 'hdsivideo_handle'.
- */
- OTM8009A_Init(OTM8009A_FORMAT_RGB888, OTM8009A_ORIENTATION_LANDSCAPE);
+ /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver)
+ * depending on configuration set in 'hdsivideo_handle'.
+ */
+ NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
+ /***********************End NT35510 Initialization****************************/
+ else if(Lcd_Driver_Type == LCD_CTRL_OTM8009A)
+ {
+ /***********************OTM8009A Initialization********************************/
-/***********************End OTM8009A Initialization****************************/
-#endif
-
- return LCD_OK;
+ /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver)
+ * depending on configuration set in 'hdsivideo_handle'.
+ */
+ OTM8009A_Init(OTM8009A_FORMAT_RGB888, OTM8009A_ORIENTATION_LANDSCAPE);
+ }
+ /***********************End OTM8009A Initialization****************************/
+ else
+ {
+ return LCD_ERROR;
+ }
+ return LCD_OK;
}
/**
@@ -561,6 +580,36 @@ void assert_failed(uint8_t* file, uint32_t line)
}
#endif
+/**
+ * @brief Check if the component ID is correct.
+ * @param Lcd_type Driver Type Control NT35510 or OTM8009A
+ */
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type)
+{
+ uint16_t read_id;
+ /* Read the NT35510 ID */
+ read_id = NT35510_ReadID();
+ if(read_id == NT35510_ID)
+ {
+ Lcd_type= LCD_CTRL_NT35510;
+ }
+ else
+ {
+ /* Read the OTM8009A ID */
+ read_id = OTM8009A_ReadID();
+ if(read_id == OTM8009A_ID)
+ {
+ Lcd_type= LCD_CTRL_OTM8009A;
+ }
+ else
+ {
+ Lcd_type= LCD_CTRL_NONE;
+ }
+ }
+
+ return Lcd_type;
+}
+
/**
* @}
*/
diff --git a/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/Src/stm32f4xx_it.c b/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/Src/stm32f4xx_it.c
index fdecb160bb..b8cc6ae853 100644
--- a/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/Src/stm32f4xx_it.c
+++ b/Projects/STM32469I-Discovery/Applications/Display/LCD_AnimatedPictureFromSDCard/Src/stm32f4xx_it.c
@@ -140,17 +140,6 @@ void SysTick_Handler(void)
HAL_IncTick();
}
-/**
- * @brief This function handles SDIO global interrupt request.
- * @param None
- * @retval None
- */
-void SDIO_IRQHandler(void)
-{
- /* Process All SDIO Interrupt Sources */
- BSP_SD_IRQHandler();
-}
-
/**
* @brief This function handles DMA2 Stream 3 interrupt request.
* @param None
diff --git a/Projects/STM32469I-Discovery/Applications/Display/LCD_DSI_ImagesSlider/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/Display/LCD_DSI_ImagesSlider/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 7c3f686e3d..e7d70006d2 100644
--- a/Projects/STM32469I-Discovery/Applications/Display/LCD_DSI_ImagesSlider/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/Display/LCD_DSI_ImagesSlider/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -88,13 +88,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -102,7 +104,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -111,7 +113,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -121,7 +123,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/Display/LCD_DSI_ImagesSlider/Src/main.c b/Projects/STM32469I-Discovery/Applications/Display/LCD_DSI_ImagesSlider/Src/main.c
index dd771f06c9..58da3a2cda 100644
--- a/Projects/STM32469I-Discovery/Applications/Display/LCD_DSI_ImagesSlider/Src/main.c
+++ b/Projects/STM32469I-Discovery/Applications/Display/LCD_DSI_ImagesSlider/Src/main.c
@@ -43,6 +43,7 @@
extern LTDC_HandleTypeDef hltdc_eval;
static DMA2D_HandleTypeDef hdma2d;
extern DSI_HandleTypeDef hdsi_eval;
+extern LCD_Driver_TypeDef Lcd_Driver_Type;
//DSI_VidCfgTypeDef hdsivideo_handle;
@@ -103,6 +104,7 @@ static void LL_CopyPicture(uint32_t *pSrc, uint32_t *pDst);
static void LL_DrawPicture(uint32_t *pSrc, int32_t xyPos);
static void LCD_DSI_HorizontalSlider(void);
static void LCD_DSI_VerticalSlider(void);
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type);
/* Private functions ---------------------------------------------------------*/
@@ -166,11 +168,12 @@ int main(void)
BSP_TS_Init(800, 480);
BSP_TS_ITConfig();
-#if defined(USE_STM32469I_DISCO_REVC)
- /* Refresh the DSI is needed after the touch screen initialize for the NT3550
- LCD controller */
- HAL_DSI_Refresh(&hdsi_eval);
-#endif
+ if(Lcd_Driver_Type == LCD_CTRL_NT35510)
+ {
+ /* Refresh the DSI is needed after the touch screen initialize for the NT3550
+ LCD controller */
+ HAL_DSI_Refresh(&hdsi_eval);
+ }
/* Set active display window */
HAL_DSI_LongWrite(&hdsi_eval, 0, DSI_DCS_LONG_PKT_WRITE, 4, OTM8009A_CMD_CASET, pColLeft);
@@ -941,15 +944,25 @@ static uint8_t LCD_Init(void)
/* Start DSI */
HAL_DSI_Start(&(hdsi_eval));
-
-#if defined (USE_STM32469I_DISCO_REVC)
- /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
- NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#else
- /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver) */
- OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#endif
+ /* Enable the DSI BTW for read operations */
+ HAL_DSI_ConfigFlowControl(&hdsi_eval, DSI_FLOW_CONTROL_BTA);
+ Lcd_Driver_Type = LCD_ReadType(Lcd_Driver_Type);
+ HAL_DSI_Stop(&hdsi_eval);
+
+ BSP_LCD_Reset();
+ HAL_DSI_Start(&hdsi_eval);
+ /* Check the type of component */
+ if(Lcd_Driver_Type == LCD_CTRL_NT35510)
+ {
+ /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
+ NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
+ else
+ {
+ /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver) */
+ OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
/* Reconfigure the DSI for HS Command mode */
LPCmd.LPGenShortWriteNoP = DSI_LP_GSW0P_DISABLE;
LPCmd.LPGenShortWriteOneP = DSI_LP_GSW1P_DISABLE;
@@ -1208,6 +1221,36 @@ void assert_failed(uint8_t *file, uint32_t line)
}
#endif
+/**
+ * @brief Check if the component ID is correct.
+ * @param Lcd_type Driver Type Control NT35510 or OTM8009A
+ */
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type)
+{
+ uint16_t read_id;
+ /* Read the NT35510 ID */
+ read_id = NT35510_ReadID();
+ if(read_id == NT35510_ID)
+ {
+ Lcd_type= LCD_CTRL_NT35510;
+ }
+ else
+ {
+ /* Read the OTM8009A ID */
+ read_id = OTM8009A_ReadID();
+ if(read_id == OTM8009A_ID)
+ {
+ Lcd_type= LCD_CTRL_OTM8009A;
+ }
+ else
+ {
+ Lcd_type= LCD_CTRL_NONE;
+ }
+ }
+
+ return Lcd_type;
+}
+
/**
* @}
*/
diff --git a/Projects/STM32469I-Discovery/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 5593662ebb..f7df4a4da1 100644
--- a/Projects/STM32469I-Discovery/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject b/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
index 1497ef6958..2d16c37975 100644
--- a/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
+++ b/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
@@ -17,13 +17,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,14 +37,14 @@
-
-
-
+
+
-
-
-
+
+
@@ -101,30 +101,30 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -161,8 +161,17 @@
+
+
+
+
+
+
+
@@ -179,4 +188,6 @@
+
+
\ No newline at end of file
diff --git a/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F469ZITX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F469ZITX_FLASH.ld
index 9ee06b5f78..98a853b536 100644
--- a/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F469ZITX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F469ZITX_FLASH.ld
@@ -119,13 +119,15 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -133,7 +135,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -142,7 +144,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -152,7 +154,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 478ac2803b..160f766ee1 100644
--- a/Projects/STM32469I-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 478ac2803b..160f766ee1 100644
--- a/Projects/STM32469I-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 8a30cecfed..2c891d9bcb 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 8a30cecfed..2c891d9bcb 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 1ec4e95bc1..d6ebd49950 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 4ce7da12af..a711d9fd97 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c9d3e4e2c9..7297135898 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 6ee52ae7ff..3f404757bd 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 6ee52ae7ff..3f404757bd 100644
--- a/Projects/STM32469I-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 9ce9f79b7f..cd80dde452 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/Src/main.c b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/Src/main.c
index 410e440cfc..0e51f43784 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/Src/main.c
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/Src/main.c
@@ -36,6 +36,7 @@
extern LTDC_HandleTypeDef hltdc_eval;
static DMA2D_HandleTypeDef hdma2d;
extern DSI_HandleTypeDef hdsi_eval;
+extern LCD_Driver_TypeDef Lcd_Driver_Type;
/* Private define ------------------------------------------------------------*/
#define VSYNC 1
@@ -76,7 +77,7 @@ static void CopyBuffer(uint32_t *pSrc,
static uint8_t LCD_Init(void);
void LTDC_Init(void);
static void LCD_BriefDisplay(void);
-
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type);
/* Private functions ---------------------------------------------------------*/
/**
@@ -364,15 +365,25 @@ static uint8_t LCD_Init(void)
/* Start DSI */
HAL_DSI_Start(&(hdsi_eval));
-
-#if defined (USE_STM32469I_DISCO_REVC)
- /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
- NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#else
- /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver) */
- OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#endif
+ /* Enable the DSI BTW for read operations */
+ HAL_DSI_ConfigFlowControl(&hdsi_eval, DSI_FLOW_CONTROL_BTA);
+ Lcd_Driver_Type = LCD_ReadType(Lcd_Driver_Type);
+ HAL_DSI_Stop(&hdsi_eval);
+
+ BSP_LCD_Reset();
+ HAL_DSI_Start(&hdsi_eval);
+ /* Check the type of component */
+ if(Lcd_Driver_Type == LCD_CTRL_NT35510)
+ {
+ /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
+ NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
+ else
+ {
+ /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver) */
+ OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
LPCmd.LPGenShortWriteNoP = DSI_LP_GSW0P_DISABLE;
LPCmd.LPGenShortWriteOneP = DSI_LP_GSW1P_DISABLE;
LPCmd.LPGenShortWriteTwoP = DSI_LP_GSW2P_DISABLE;
@@ -514,6 +525,35 @@ void assert_failed(uint8_t *file, uint32_t line)
}
#endif
+/**
+ * @brief Check if the component ID is correct.
+ * @param Lcd_type Driver Type Control NT35510 or OTM8009A
+ */
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type)
+{
+ uint16_t read_id;
+ /* Read the NT35510 ID */
+ read_id = NT35510_ReadID();
+ if(read_id == NT35510_ID)
+ {
+ Lcd_type= LCD_CTRL_NT35510;
+ }
+ else
+ {
+ /* Read the OTM8009A ID */
+ read_id = OTM8009A_ReadID();
+ if(read_id == OTM8009A_ID)
+ {
+ Lcd_type= LCD_CTRL_OTM8009A;
+ }
+ else
+ {
+ Lcd_type= LCD_CTRL_NONE;
+ }
+ }
+
+ return Lcd_type;
+}
/**
* @}
*/
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 9ce9f79b7f..cd80dde452 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/Src/main.c b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/Src/main.c
index 46c4f521a8..e6440e322d 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/Src/main.c
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/Src/main.c
@@ -36,6 +36,7 @@
extern LTDC_HandleTypeDef hltdc_eval;
static DMA2D_HandleTypeDef hdma2d;
extern DSI_HandleTypeDef hdsi_eval;
+extern LCD_Driver_TypeDef Lcd_Driver_Type;
/* Private define ------------------------------------------------------------*/
#define VSYNC 1
@@ -81,6 +82,7 @@ static uint8_t LCD_Init(void);
void LCD_LayertInit(uint16_t LayerIndex, uint32_t Address);
void LTDC_Init(void);
static void LCD_BriefDisplay(void);
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type);
/* Private functions ---------------------------------------------------------*/
@@ -394,13 +396,24 @@ static uint8_t LCD_Init(void)
/* Start DSI */
HAL_DSI_Start(&(hdsi_eval));
-#if defined (USE_STM32469I_DISCO_REVC)
- /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
- NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#else
- /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver)*/
- OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#endif
+ /* Enable the DSI BTW for read operations */
+ HAL_DSI_ConfigFlowControl(&hdsi_eval, DSI_FLOW_CONTROL_BTA);
+ Lcd_Driver_Type = LCD_ReadType(Lcd_Driver_Type);
+ HAL_DSI_Stop(&hdsi_eval);
+
+ BSP_LCD_Reset();
+ HAL_DSI_Start(&hdsi_eval);
+ /* Check the type of component */
+ if(Lcd_Driver_Type == LCD_CTRL_NT35510)
+ {
+ /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
+ NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
+ else
+ {
+ /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver)*/
+ OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
/* Reconfigure the DSI for HS Command mode */
LPCmd.LPGenShortWriteNoP = DSI_LP_GSW0P_DISABLE;
@@ -577,6 +590,35 @@ void assert_failed(uint8_t *file, uint32_t line)
}
#endif
+/**
+ * @brief Check if the component ID is correct.
+ * @param Lcd_type Driver Type Control NT35510 or OTM8009A
+ */
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type)
+{
+ uint16_t read_id;
+ /* Read the NT35510 ID */
+ read_id = NT35510_ReadID();
+ if(read_id == NT35510_ID)
+ {
+ Lcd_type= LCD_CTRL_NT35510;
+ }
+ else
+ {
+ /* Read the OTM8009A ID */
+ read_id = OTM8009A_ReadID();
+ if(read_id == OTM8009A_ID)
+ {
+ Lcd_type= LCD_CTRL_OTM8009A;
+ }
+ else
+ {
+ Lcd_type= LCD_CTRL_NONE;
+ }
+ }
+
+ return Lcd_type;
+}
/**
* @}
*/
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index f3859345e6..47ae56891a 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/Src/main.c b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/Src/main.c
index a907696c2f..2169322353 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/Src/main.c
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/Src/main.c
@@ -36,6 +36,7 @@
extern LTDC_HandleTypeDef hltdc_eval;
static DMA2D_HandleTypeDef hdma2d;
extern DSI_HandleTypeDef hdsi_eval;
+extern LCD_Driver_TypeDef Lcd_Driver_Type;
/* Private define ------------------------------------------------------------*/
#define VSYNC 1
@@ -72,7 +73,7 @@ static void CopyBuffer(uint32_t *pSrc,
static uint8_t LCD_Init(void);
void LTDC_Init(void);
static void LCD_BriefDisplay(void);
-
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type);
/* Private functions ---------------------------------------------------------*/
/**
@@ -345,15 +346,25 @@ static uint8_t LCD_Init(void)
/* Start DSI */
HAL_DSI_Start(&(hdsi_eval));
-
-#if defined (USE_STM32469I_DISCO_REVC)
- /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
- NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#else
- /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver) */
- OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#endif
+ /* Enable the DSI BTW for read operations */
+ HAL_DSI_ConfigFlowControl(&hdsi_eval, DSI_FLOW_CONTROL_BTA);
+ Lcd_Driver_Type = LCD_ReadType(Lcd_Driver_Type);
+ HAL_DSI_Stop(&hdsi_eval);
+
+ BSP_LCD_Reset();
+ HAL_DSI_Start(&hdsi_eval);
+ /* Check the type of component */
+ if(Lcd_Driver_Type == LCD_CTRL_NT35510)
+ {
+ /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
+ NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
+ else
+ {
+ /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver)*/
+ OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
LPCmd.LPGenShortWriteNoP = DSI_LP_GSW0P_DISABLE;
LPCmd.LPGenShortWriteOneP = DSI_LP_GSW1P_DISABLE;
LPCmd.LPGenShortWriteTwoP = DSI_LP_GSW2P_DISABLE;
@@ -495,6 +506,35 @@ void assert_failed(uint8_t *file, uint32_t line)
}
#endif
+/**
+ * @brief Check if the component ID is correct.
+ * @param Lcd_type Driver Type Control NT35510 or OTM8009A
+ */
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type)
+{
+ uint16_t read_id;
+ /* Read the NT35510 ID */
+ read_id = NT35510_ReadID();
+ if(read_id == NT35510_ID)
+ {
+ Lcd_type= LCD_CTRL_NT35510;
+ }
+ else
+ {
+ /* Read the OTM8009A ID */
+ read_id = OTM8009A_ReadID();
+ if(read_id == OTM8009A_ID)
+ {
+ Lcd_type= LCD_CTRL_OTM8009A;
+ }
+ else
+ {
+ Lcd_type= LCD_CTRL_NONE;
+ }
+ }
+
+ return Lcd_type;
+}
/**
* @}
*/
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 9ce9f79b7f..cd80dde452 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/Src/main.c b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/Src/main.c
index bf7ff8403c..54ad8b7301 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/Src/main.c
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/Src/main.c
@@ -36,6 +36,7 @@
extern LTDC_HandleTypeDef hltdc_eval;
static DMA2D_HandleTypeDef hdma2d;
extern DSI_HandleTypeDef hdsi_eval;
+extern LCD_Driver_TypeDef Lcd_Driver_Type;
/* Private define ------------------------------------------------------------*/
#define VSYNC 1
@@ -80,6 +81,7 @@ static uint8_t LCD_Init(void);
void LCD_LayertInit(uint16_t LayerIndex, uint32_t Address);
void LTDC_Init(void);
static void LCD_BriefDisplay(void);
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type);
/* Private functions ---------------------------------------------------------*/
@@ -404,14 +406,25 @@ static uint8_t LCD_Init(void)
/* Start DSI */
HAL_DSI_Start(&(hdsi_eval));
-
-#if defined (USE_STM32469I_DISCO_REVC)
- /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
- NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#else
- /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver) */
- OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#endif
+
+ /* Enable the DSI BTW for read operations */
+ HAL_DSI_ConfigFlowControl(&hdsi_eval, DSI_FLOW_CONTROL_BTA);
+ Lcd_Driver_Type = LCD_ReadType(Lcd_Driver_Type);
+ HAL_DSI_Stop(&hdsi_eval);
+
+ BSP_LCD_Reset();
+ HAL_DSI_Start(&hdsi_eval);
+ /* Check the type of component */
+ if(Lcd_Driver_Type == LCD_CTRL_NT35510)
+ {
+ /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
+ NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
+ else
+ {
+ /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver) */
+ OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
LPCmd.LPGenShortWriteNoP = DSI_LP_GSW0P_DISABLE;
LPCmd.LPGenShortWriteOneP = DSI_LP_GSW1P_DISABLE;
@@ -586,6 +599,35 @@ void assert_failed(uint8_t *file, uint32_t line)
}
#endif
+/**
+ * @brief Check if the component ID is correct.
+ * @param Lcd_type Driver Type Control NT35510 or OTM8009A
+ */
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type)
+{
+ uint16_t read_id;
+ /* Read the NT35510 ID */
+ read_id = NT35510_ReadID();
+ if(read_id == NT35510_ID)
+ {
+ Lcd_type= LCD_CTRL_NT35510;
+ }
+ else
+ {
+ /* Read the OTM8009A ID */
+ read_id = OTM8009A_ReadID();
+ if(read_id == OTM8009A_ID)
+ {
+ Lcd_type= LCD_CTRL_OTM8009A;
+ }
+ else
+ {
+ Lcd_type= LCD_CTRL_NONE;
+ }
+ }
+
+ return Lcd_type;
+}
/**
* @}
*/
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 370ac03860..fbaacebd88 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/Src/main.c b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/Src/main.c
index 336d6ed6ff..9fcbe1480e 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/Src/main.c
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/Src/main.c
@@ -36,6 +36,7 @@
extern LTDC_HandleTypeDef hltdc_eval;
static DMA2D_HandleTypeDef hdma2d;
extern DSI_HandleTypeDef hdsi_eval;
+extern LCD_Driver_TypeDef Lcd_Driver_Type;
/* Private define ------------------------------------------------------------*/
#define VSYNC 1
@@ -83,6 +84,7 @@ static uint8_t LCD_Init(void);
void LCD_LayertInit(uint16_t LayerIndex, uint32_t Address);
void LTDC_Init(void);
static void LCD_BriefDisplay(void);
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type);
/* Private functions ---------------------------------------------------------*/
@@ -147,9 +149,10 @@ int main(void)
/* Show first image */
CopyPicture((uint32_t *)Images[ImageIndex++], (uint32_t *)LAYER0_ADDRESS, 240, 160, 320, 240);
-#if !defined(USE_STM32469I_DISCO_REVC)
- pending_buffer = 0;
-#endif
+ if(Lcd_Driver_Type != LCD_CTRL_NT35510)
+ {
+ pending_buffer = 0;
+ }
active_area = LEFT_AREA;
HAL_DSI_LongWrite(&hdsi_eval, 0, DSI_DCS_LONG_PKT_WRITE, 2, OTM8009A_CMD_WRTESCN, pScanCol);
@@ -411,15 +414,25 @@ static uint8_t LCD_Init(void)
/* Start DSI */
HAL_DSI_Start(&(hdsi_eval));
-
-#if defined (USE_STM32469I_DISCO_REVC)
- /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
- NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#else
- /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver) */
- OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
-#endif
+ /* Enable the DSI BTW for read operations */
+ HAL_DSI_ConfigFlowControl(&hdsi_eval, DSI_FLOW_CONTROL_BTA);
+ Lcd_Driver_Type = LCD_ReadType(Lcd_Driver_Type);
+ HAL_DSI_Stop(&hdsi_eval);
+
+ BSP_LCD_Reset();
+ HAL_DSI_Start(&hdsi_eval);
+
+ if(Lcd_Driver_Type == LCD_CTRL_NT35510)
+ {
+ /* Initialize the NT35510 LCD Display IC Driver (3K138 LCD IC Driver) */
+ NT35510_Init(NT35510_FORMAT_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
+ else
+ {
+ /* Initialize the OTM8009A LCD Display IC Driver (KoD LCD IC Driver) */
+ OTM8009A_Init(OTM8009A_COLMOD_RGB888, LCD_ORIENTATION_LANDSCAPE);
+ }
LPCmd.LPGenShortWriteNoP = DSI_LP_GSW0P_DISABLE;
LPCmd.LPGenShortWriteOneP = DSI_LP_GSW1P_DISABLE;
LPCmd.LPGenShortWriteTwoP = DSI_LP_GSW2P_DISABLE;
@@ -608,6 +621,36 @@ void assert_failed(uint8_t *file, uint32_t line)
}
#endif
+/**
+ * @brief Check if the component ID is correct.
+ * @param Lcd_type Driver Type Control NT35510 or OTM8009A
+ */
+static LCD_Driver_TypeDef LCD_ReadType(LCD_Driver_TypeDef Lcd_type)
+{
+ uint16_t read_id;
+ /* Read the NT35510 ID */
+ read_id = NT35510_ReadID();
+ if(read_id == NT35510_ID)
+ {
+ Lcd_type= LCD_CTRL_NT35510;
+ }
+ else
+ {
+ /* Read the OTM8009A ID */
+ read_id = OTM8009A_ReadID();
+ if(read_id == OTM8009A_ID)
+ {
+ Lcd_type= LCD_CTRL_OTM8009A;
+ }
+ else
+ {
+ Lcd_type= LCD_CTRL_NONE;
+ }
+ }
+
+ return Lcd_type;
+}
+
/**
* @}
*/
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_ULPM_Data/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_ULPM_Data/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_ULPM_Data/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_ULPM_Data/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_ULPM_DataClock/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_ULPM_DataClock/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_ULPM_DataClock/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_ULPM_DataClock/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 9ce9f79b7f..cd80dde452 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_VideoMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_VideoMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 4f4fd24ac6..812a137458 100644
--- a/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_VideoMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/LCD_DSI/LCD_DSI_VideoMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index f3e7ee1ad7..414bcc0979 100644
--- a/Projects/STM32469I-Discovery/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -88,8 +88,12 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
@@ -109,20 +113,20 @@ SECTIONS
} >QSPI AT> FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I-Discovery/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 17bbd81c07..ea6ef29153 100644
--- a/Projects/STM32469I-Discovery/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -88,8 +88,12 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
@@ -106,20 +110,20 @@ SECTIONS
} >QSPI
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I-Discovery/Templates_LL/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I-Discovery/Templates_LL/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I-Discovery/Templates_LL/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I-Discovery/Templates_LL/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 4a32c4521c..7e93d46ad2 100644
--- a/Projects/STM32469I_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/Display/LCD_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/Display/LCD_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 478ac2803b..160f766ee1 100644
--- a/Projects/STM32469I_EVAL/Applications/Display/LCD_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/Display/LCD_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/Display/LCD_DSI_ImagesSlider/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/Display/LCD_DSI_ImagesSlider/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 9be3ebd967..2c712e16a2 100644
--- a/Projects/STM32469I_EVAL/Applications/Display/LCD_DSI_ImagesSlider/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/Display/LCD_DSI_ImagesSlider/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -88,13 +88,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -102,7 +104,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -111,7 +113,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -121,7 +123,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 5593662ebb..f7df4a4da1 100644
--- a/Projects/STM32469I_EVAL/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 478ac2803b..160f766ee1 100644
--- a/Projects/STM32469I_EVAL/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
index 736ec101cc..e96bb94ea2 100644
--- a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
+++ b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
@@ -17,13 +17,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,14 +37,14 @@
-
-
-
+
+
-
-
-
+
+
@@ -101,30 +101,30 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -161,6 +161,14 @@
+
+
+
+
+
+
diff --git a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F469IGTX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F469IGTX_FLASH.ld
index 20a945f775..19947c2f53 100644
--- a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F469IGTX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F469IGTX_FLASH.ld
@@ -119,13 +119,15 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -133,7 +135,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -142,7 +144,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -152,7 +154,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c b/Projects/STM32469I_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c
index 9faaa32939..c946bb48e9 100644
--- a/Projects/STM32469I_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c
+++ b/Projects/STM32469I_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c
@@ -355,7 +355,7 @@ COM_StatusTypeDef Ymodem_Receive ( uint32_t *p_size )
/* Test the size of the image to be sent */
/* Image size is greater than Flash size */
- if (*p_size > (USER_FLASH_SIZE + 1))
+ if (filesize > (USER_FLASH_SIZE + 1))
{
/* End session */
tmp = CA;
diff --git a/Projects/STM32469I_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index e15e9a42e2..510584bd5c 100644
--- a/Projects/STM32469I_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 478ac2803b..160f766ee1 100644
--- a/Projects/STM32469I_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 478ac2803b..160f766ee1 100644
--- a/Projects/STM32469I_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
index 5a1d390ab8..223a0a7671 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
@@ -49,7 +49,7 @@ a lot of data that needs to be copied, this should be set high. */
#define MEMP_NUM_TCP_PCB_LISTEN 5
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
segments. */
-#define MEMP_NUM_TCP_SEG 8
+#define MEMP_NUM_TCP_SEG TCP_SND_QUEUELEN
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
timeouts. */
#define MEMP_NUM_SYS_TIMEOUT 10
@@ -76,11 +76,6 @@ a lot of data that needs to be copied, this should be set high. */
/* TCP sender buffer space (bytes). */
#define TCP_SND_BUF (4*TCP_MSS)
-/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
- as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
-
-#define TCP_SND_QUEUELEN (2* TCP_SND_BUF/TCP_MSS)
-
/* TCP receive window. */
#define TCP_WND (2*TCP_MSS)
@@ -174,6 +169,16 @@ The STM32F4xx allows computing and verifying the IP, UDP, TCP and ICMP checksums
*/
#define LWIP_SOCKET 0
+/*
+ ------------------------------------
+ ---------- LWIP_NETIF_API options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_NETIF_API==1: Enable NETIF API
+ */
+#define LWIP_NETIF_API 1
+
/*
------------------------------------
---------- httpd options ----------
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
index 193e6312c4..2f2553e788 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
@@ -26,6 +26,7 @@
#ifdef USE_LCD
#include "lcd_log.h"
#endif
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
@@ -106,7 +107,7 @@ void DHCP_Thread(void const * argument)
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
#endif
- dhcp_start(netif);
+ netifapi_dhcp_start(netif);
}
break;
case DHCP_WAIT_ADDRESS:
@@ -136,7 +137,7 @@ void DHCP_Thread(void const * argument)
IP_ADDR4(&ipaddr, IP_ADDR0 ,IP_ADDR1 , IP_ADDR2 , IP_ADDR3 );
IP_ADDR4(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP_ADDR4(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
+ netifapi_netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
#ifdef USE_LCD
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
index 9858d7e7ab..eec88bef62 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
@@ -26,11 +26,14 @@
#include "ethernetif.h"
#include "../Components/dp83848/dp83848.h"
#include
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
#define TIME_WAITING_FOR_INPUT ( osWaitForever )
+/* Time to block waiting for transmissions to finish */
+#define ETHIF_TX_TIMEOUT (2000U)
/* Stack size of the interface thread */
#define INTERFACE_THREAD_STACK_SIZE ( 512 )
@@ -47,7 +50,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -181,7 +184,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
PHYLinkState = DP83848_GetLinkState(&DP83848);
@@ -276,13 +284,29 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
- HAL_ETH_Transmit_IT(&EthHandle, &TxConfig);
-
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ do
{
- }
-
- HAL_ETH_ReleaseTxPacket(&EthHandle);
+ if(HAL_ETH_Transmit_IT(&EthHandle, &TxConfig) == HAL_OK)
+ {
+ errval = ERR_OK;
+ }
+ else
+ {
+ if(HAL_ETH_GetError(&EthHandle) & HAL_ETH_ERROR_BUSY)
+ {
+ /* Wait for descriptors to become available */
+ osSemaphoreWait( TxPktSemaphore, ETHIF_TX_TIMEOUT);
+ HAL_ETH_ReleaseTxPacket(&EthHandle);
+ errval = ERR_BUF;
+ }
+ else
+ {
+ /* Other error */
+ pbuf_free(p);
+ errval = ERR_IF;
+ }
+ }
+ }while(errval == ERR_BUF);
return errval;
}
@@ -652,8 +676,8 @@ void ethernet_link_thread( void const * argument )
if(netif_is_link_up(netif) && (PHYLinkState <= DP83848_STATUS_LINK_DOWN))
{
HAL_ETH_Stop_IT(&EthHandle);
- netif_set_down(netif);
- netif_set_link_down(netif);
+ netifapi_netif_set_down(netif);
+ netifapi_netif_set_link_down(netif);
}
else if(!netif_is_link_up(netif) && (PHYLinkState > DP83848_STATUS_LINK_DOWN))
{
@@ -691,8 +715,8 @@ void ethernet_link_thread( void const * argument )
MACConf.Speed = speed;
HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
HAL_ETH_Start_IT(&EthHandle);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ netifapi_netif_set_up(netif);
+ netifapi_netif_set_link_up(netif);
}
}
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c
index b79be52471..246b120dc7 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c
index 0cceedacbf..72d24ecd26 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c
index 9bb151beae..ef32033f4e 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c
index 962268134b..7ba57de0ae 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c
@@ -145,37 +145,6 @@ void SysTick_Handler(void)
/* file (startup_stm32f4xx.s). */
/******************************************************************************/
-/**
- * @brief This function handles DMA2 Stream 3 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream3_IRQHandler(void)
-{
- BSP_SD_DMA_Rx_IRQHandler();
-}
-
-/**
- * @brief This function handles DMA2 Stream 6 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream6_IRQHandler(void)
-{
- BSP_SD_DMA_Tx_IRQHandler();
-}
-
-/**
- * @brief This function handles SDIO interrupt request.
- * @param None
- * @retval None
- */
-void SDIO_IRQHandler(void)
-{
- BSP_SD_IRQHandler();
-}
-
-
/**
* @}
*/
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h
index 280167d5c4..d2a5953a4e 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h
@@ -176,6 +176,16 @@ The STM32F4xx allows computing and verifying the IP, UDP, TCP and ICMP checksums
/*
---------------------------------
+ ---------- LWIP_NETIF_API options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_NETIF_API==1: Enable NETIF API
+ */
+#define LWIP_NETIF_API 1
+
+/*
+ ------------------------------------
---------- OS options ----------
---------------------------------
*/
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c
index c49b5b6dd7..beb5b80da7 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c
@@ -26,6 +26,7 @@
#ifdef USE_LCD
#include "lcd_log.h"
#endif
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
@@ -106,7 +107,7 @@ void DHCP_Thread(void const * argument)
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
#endif
- dhcp_start(netif);
+ netifapi_dhcp_start(netif);
}
break;
case DHCP_WAIT_ADDRESS:
@@ -136,7 +137,7 @@ void DHCP_Thread(void const * argument)
IP_ADDR4(&ipaddr, IP_ADDR0 ,IP_ADDR1 , IP_ADDR2 , IP_ADDR3 );
IP_ADDR4(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP_ADDR4(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
+ netifapi_netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
#ifdef USE_LCD
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c
index 360b9050c9..3ae49f55d7 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c
@@ -26,11 +26,14 @@
#include "ethernetif.h"
#include "../Components/dp83848/dp83848.h"
#include
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
#define TIME_WAITING_FOR_INPUT ( osWaitForever )
+/* Time to block waiting for transmissions to finish */
+#define ETHIF_TX_TIMEOUT (2000U)
/* Stack size of the interface thread */
#define INTERFACE_THREAD_STACK_SIZE ( 512 )
@@ -47,7 +50,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -181,7 +184,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
PHYLinkState = DP83848_GetLinkState(&DP83848);
@@ -276,13 +284,29 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
- HAL_ETH_Transmit_IT(&EthHandle, &TxConfig);
-
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ do
{
- }
-
- HAL_ETH_ReleaseTxPacket(&EthHandle);
+ if(HAL_ETH_Transmit_IT(&EthHandle, &TxConfig) == HAL_OK)
+ {
+ errval = ERR_OK;
+ }
+ else
+ {
+ if(HAL_ETH_GetError(&EthHandle) & HAL_ETH_ERROR_BUSY)
+ {
+ /* Wait for descriptors to become available */
+ osSemaphoreWait( TxPktSemaphore, ETHIF_TX_TIMEOUT);
+ HAL_ETH_ReleaseTxPacket(&EthHandle);
+ errval = ERR_BUF;
+ }
+ else
+ {
+ /* Other error */
+ pbuf_free(p);
+ errval = ERR_IF;
+ }
+ }
+ }while(errval == ERR_BUF);
return errval;
}
@@ -652,8 +676,8 @@ void ethernet_link_thread( void const * argument )
if(netif_is_link_up(netif) && (PHYLinkState <= DP83848_STATUS_LINK_DOWN))
{
HAL_ETH_Stop_IT(&EthHandle);
- netif_set_down(netif);
- netif_set_link_down(netif);
+ netifapi_netif_set_down(netif);
+ netifapi_netif_set_link_down(netif);
}
else if(!netif_is_link_up(netif) && (PHYLinkState > DP83848_STATUS_LINK_DOWN))
{
@@ -691,8 +715,8 @@ void ethernet_link_thread( void const * argument )
MACConf.Speed = speed;
HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
HAL_ETH_Start_IT(&EthHandle);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ netifapi_netif_set_up(netif);
+ netifapi_netif_set_link_up(netif);
}
}
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c
index 990551cf06..ca7c956609 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/main.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/main.c
index c546706d44..ae54fab548 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/main.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/main.c
@@ -109,6 +109,8 @@ static void BSP_Config(void)
/* Set Systick Interrupt to the highest priority */
HAL_NVIC_SetPriority(SysTick_IRQn, 0x0, 0x0);
+ /* Configure Key Button */
+ BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_EXTI);
#ifdef USE_LCD
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index def3a091ec..fdcf146a6e 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c
index efdd92541b..43d02f7e9c 100644
--- a/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c
+++ b/Projects/STM32469I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c9d3e4e2c9..7297135898 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 8a30cecfed..2c891d9bcb 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 8a30cecfed..2c891d9bcb 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Device/HID_LPM_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 8a30cecfed..2c891d9bcb 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index a9ff2fb4e5..d77233a669 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index fab045aa2c..583e0590be 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 59da729dd7..2dbeaa873a 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 058e349306..491a709786 100644
--- a/Projects/STM32469I_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index b1d823edfe..dd565901d4 100644
--- a/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c b/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c
index 2ce355c850..17d972585e 100644
--- a/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c
+++ b/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c
@@ -23,30 +23,72 @@
#include "main.h"
#include
+#include "mbedtls/entropy.h"
#include "mbedtls/entropy_poll.h"
-extern RNG_HandleTypeDef RngHandle;
+static __IO uint32_t isInitialized = 0;
-int mbedtls_hardware_poll( void *Data, unsigned char *Output, size_t Len, size_t *oLen )
+static RNG_HandleTypeDef RNG_Handle;
+
+static void RNG_Init(void);
+/* RNG init function */
+static void RNG_Init(void)
{
- uint32_t index;
- uint32_t randomValue;
-
- for (index = 0; index < Len/4; index++)
+ if (isInitialized == 0)
{
- if (HAL_RNG_GenerateRandomNumber(&RngHandle, &randomValue) == HAL_OK)
+ RNG_Handle.Instance = RNG;
+ /* DeInitialize the RNG peripheral */
+ if (HAL_RNG_DeInit(&RNG_Handle) != HAL_OK)
{
- *oLen += 4;
- memset(&(Output[index * 4]), (int)randomValue, 4);
+ return;
}
- else
+ /* Initialize the RNG peripheral */
+ if (HAL_RNG_Init(&RNG_Handle) != HAL_OK)
{
- Error_Handler();
+ return;
}
+ isInitialized = 1;
}
-
- return 0;
}
+int mbedtls_hardware_poll(void *Data, unsigned char *Output, size_t Len, size_t *oLen)
+{
+ __IO uint8_t random_value[4];
+ int ret = 0;
+
+ RNG_Init();
+
+ if (isInitialized == 0)
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ else
+ {
+ *oLen = 0;
+ while ((*oLen < Len) && (ret == 0))
+ {
+ if (HAL_RNG_GenerateRandomNumber(&RNG_Handle, (uint32_t *)random_value) == HAL_OK)
+ {
+ for (uint8_t i = 0; (i < sizeof(uint32_t)) && (*oLen < Len) ; i++)
+ {
+ Output[*oLen] = random_value[i];
+ *oLen += 1;
+ }
+ }
+ else
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ }
+
+ /* Just be extra sure that we didn't do it wrong */
+ if (__HAL_RNG_GET_FLAG(&RNG_Handle, (RNG_FLAG_CECS | RNG_FLAG_SECS)) != 0)
+ {
+ *oLen = 0;
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ }
+ return ret;
+}
#endif /*MBEDTLS_ENTROPY_HARDWARE_ALT*/
diff --git a/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index b1d823edfe..dd565901d4 100644
--- a/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c b/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c
index 4493758d4f..17d972585e 100644
--- a/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c
+++ b/Projects/STM32469I_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c
@@ -15,6 +15,7 @@
*
******************************************************************************
*/
+
#include "mbedtls_config.h"
#ifdef MBEDTLS_ENTROPY_HARDWARE_ALT
@@ -22,30 +23,72 @@
#include "main.h"
#include
+#include "mbedtls/entropy.h"
#include "mbedtls/entropy_poll.h"
-extern RNG_HandleTypeDef RngHandle;
+static __IO uint32_t isInitialized = 0;
+
+static RNG_HandleTypeDef RNG_Handle;
-int mbedtls_hardware_poll( void *Data, unsigned char *Output, size_t Len, size_t *oLen )
+static void RNG_Init(void);
+/* RNG init function */
+static void RNG_Init(void)
{
- uint32_t index;
- uint32_t randomValue;
-
- for (index = 0; index < Len/4; index++)
+ if (isInitialized == 0)
{
- if (HAL_RNG_GenerateRandomNumber(&RngHandle, &randomValue) == HAL_OK)
+ RNG_Handle.Instance = RNG;
+ /* DeInitialize the RNG peripheral */
+ if (HAL_RNG_DeInit(&RNG_Handle) != HAL_OK)
{
- *oLen += 4;
- memset(&(Output[index * 4]), (int)randomValue, 4);
+ return;
}
- else
+ /* Initialize the RNG peripheral */
+ if (HAL_RNG_Init(&RNG_Handle) != HAL_OK)
{
- Error_Handler();
+ return;
}
+ isInitialized = 1;
}
-
- return 0;
}
+int mbedtls_hardware_poll(void *Data, unsigned char *Output, size_t Len, size_t *oLen)
+{
+ __IO uint8_t random_value[4];
+ int ret = 0;
+
+ RNG_Init();
+ if (isInitialized == 0)
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ else
+ {
+ *oLen = 0;
+ while ((*oLen < Len) && (ret == 0))
+ {
+ if (HAL_RNG_GenerateRandomNumber(&RNG_Handle, (uint32_t *)random_value) == HAL_OK)
+ {
+ for (uint8_t i = 0; (i < sizeof(uint32_t)) && (*oLen < Len) ; i++)
+ {
+ Output[*oLen] = random_value[i];
+ *oLen += 1;
+ }
+ }
+ else
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ }
+
+ /* Just be extra sure that we didn't do it wrong */
+ if (__HAL_RNG_GET_FLAG(&RNG_Handle, (RNG_FLAG_CECS | RNG_FLAG_SECS)) != 0)
+ {
+ *oLen = 0;
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ }
+
+ return ret;
+}
#endif /*MBEDTLS_ENTROPY_HARDWARE_ALT*/
diff --git a/Projects/STM32469I_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/CAN/CAN_Loopback/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/CAN/CAN_Loopback/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/CAN/CAN_Loopback/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/CAN/CAN_Loopback/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESCCM_IT/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESCCM_IT/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index c9667cc6bb..88eadc97c3 100644
--- a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESCCM_IT/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESCCM_IT/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESGCM/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESGCM/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index c9667cc6bb..88eadc97c3 100644
--- a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESGCM/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESGCM/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index c9667cc6bb..88eadc97c3 100644
--- a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index c9667cc6bb..88eadc97c3 100644
--- a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 985afd6e26..ba67d13e0b 100644
--- a/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -88,13 +88,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -102,7 +104,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -111,7 +113,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -121,7 +123,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_RegToMemWithLCD/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_RegToMemWithLCD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_RegToMemWithLCD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/DMA2D/DMA2D_RegToMemWithLCD/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/FMC/FMC_NOR/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/FMC/FMC_NOR/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/FMC/FMC_NOR/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/FMC/FMC_NOR/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 887ceaffdd..a9183dbb76 100644
--- a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SRAM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SRAM_DataMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SRAM_DataMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 0a2a4356f3..9144844e99 100644
--- a/Projects/STM32469I_EVAL/Examples/FMC/FMC_SRAM_DataMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/FMC/FMC_SRAM_DataMemory/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index c9667cc6bb..88eadc97c3 100644
--- a/Projects/STM32469I_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index c9667cc6bb..88eadc97c3 100644
--- a/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index c9667cc6bb..88eadc97c3 100644
--- a/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA224SHA256_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA224SHA256_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld
index c9667cc6bb..88eadc97c3 100644
--- a/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA224SHA256_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/HASH/HASH_SHA224SHA256_DMA/STM32CubeIDE/STM32F479NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/I2C/I2C_EEPROM/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/I2C/I2C_EEPROM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/I2C/I2C_EEPROM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/I2C/I2C_EEPROM/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/I2C/I2C_EEPROM/Src/main.c b/Projects/STM32469I_EVAL/Examples/I2C/I2C_EEPROM/Src/main.c
index 70d24ed993..1412f66adc 100644
--- a/Projects/STM32469I_EVAL/Examples/I2C/I2C_EEPROM/Src/main.c
+++ b/Projects/STM32469I_EVAL/Examples/I2C/I2C_EEPROM/Src/main.c
@@ -138,7 +138,7 @@ int main(void)
}
/* Check if the EEPROM is ready for a new operation */
- while (HAL_I2C_IsDeviceReady(&I2cHandle, EEPROM_ADDRESS, EEPROM_MAX_TRIALS, I2Cx_TIMEOUT_MAX) == HAL_TIMEOUT);
+ while (HAL_I2C_IsDeviceReady(&I2cHandle, EEPROM_ADDRESS, EEPROM_MAX_TRIALS, I2Cx_TIMEOUT_MAX) != HAL_OK);
/* Wait for the end of the transfer */
while (HAL_I2C_GetState(&I2cHandle) != HAL_I2C_STATE_READY)
diff --git a/Projects/STM32469I_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index a0128872e8..af6bd078c2 100644
--- a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 370ac03860..fbaacebd88 100644
--- a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_PartialRefresh/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 9ce9f79b7f..cd80dde452 100644
--- a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 9ce9f79b7f..cd80dde452 100644
--- a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index a0128872e8..af6bd078c2 100644
--- a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_CmdMode_TearingEffect_ExtPin/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_ULPM_Data/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_ULPM_Data/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_ULPM_Data/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_ULPM_Data/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_ULPM_DataClock/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_ULPM_DataClock/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_ULPM_DataClock/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_ULPM_DataClock/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index f3859345e6..47ae56891a 100644
--- a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_VideoMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_VideoMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index f3859345e6..47ae56891a 100644
--- a/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_VideoMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/LCD_DSI/LCD_DSI_VideoMode_SingleBuffer/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 88e3fda3bc..6a9a8da6f6 100644
--- a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -88,8 +88,12 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
@@ -109,20 +113,20 @@ SECTIONS
} >QSPI AT> FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 17bbd81c07..ea6ef29153 100644
--- a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -88,8 +88,12 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
@@ -106,20 +110,20 @@ SECTIONS
} >QSPI
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/SAI/SAI_AudioPlay/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/SAI/SAI_AudioPlay/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/SAI/SAI_AudioPlay/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/SAI/SAI_AudioPlay/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_PrescalerSelection/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_PrescalerSelection/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_PrescalerSelection/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_PrescalerSelection/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/UART/UART_HyperTerminal_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/UART/UART_HyperTerminal_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/UART/UART_HyperTerminal_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/UART/UART_HyperTerminal_DMA/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index c8d912ee16..d3ccd6d92e 100644
--- a/Projects/STM32469I_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Templates_LL/STM32CubeIDE/STM32F469NIHX_FLASH.ld b/Projects/STM32469I_EVAL/Templates_LL/STM32CubeIDE/STM32F469NIHX_FLASH.ld
index 59da729dd7..2dbeaa873a 100644
--- a/Projects/STM32469I_EVAL/Templates_LL/STM32CubeIDE/STM32F469NIHX_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Templates_LL/STM32CubeIDE/STM32F469NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32469I_EVAL/Templates_LL/STM32CubeIDE/STM32F479NIHx_FLASH.ld b/Projects/STM32469I_EVAL/Templates_LL/STM32CubeIDE/STM32F479NIHx_FLASH.ld
index a4bf9d3e05..1596d36017 100644
--- a/Projects/STM32469I_EVAL/Templates_LL/STM32CubeIDE/STM32F479NIHx_FLASH.ld
+++ b/Projects/STM32469I_EVAL/Templates_LL/STM32CubeIDE/STM32F479NIHx_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM324x9I_EVAL/Applications/Display/LTDC_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/Display/LTDC_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index f159e59db6..847af0e6ac 100644
--- a/Projects/STM324x9I_EVAL/Applications/Display/LTDC_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/Display/LTDC_AnimatedPictureFromSDCard/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/Display/LTDC_Paint/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/Display/LTDC_Paint/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 4aac8e2ad8..3a23843bfa 100644
--- a/Projects/STM324x9I_EVAL/Applications/Display/LTDC_Paint/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/Display/LTDC_Paint/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/Display/LTDC_PicturesFromSDCard/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/Display/LTDC_PicturesFromSDCard/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index f34237cfdb..e8009f601d 100644
--- a/Projects/STM324x9I_EVAL/Applications/Display/LTDC_PicturesFromSDCard/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/Display/LTDC_PicturesFromSDCard/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index dd7e851e95..be04c997a5 100644
--- a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_MultiDrives/Src/stm32f4xx_it.c b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_MultiDrives/Src/stm32f4xx_it.c
index 8132df1995..c2204c3a1e 100644
--- a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_MultiDrives/Src/stm32f4xx_it.c
+++ b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_MultiDrives/Src/stm32f4xx_it.c
@@ -138,36 +138,6 @@ void SysTick_Handler(void)
/* file (startup_stm32f4xx.s). */
/******************************************************************************/
-/**
- * @brief This function handles DMA2 Stream 3 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream3_IRQHandler(void)
-{
- BSP_SD_DMA_Rx_IRQHandler();
-}
-
-/**
- * @brief This function handles DMA2 Stream 6 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream6_IRQHandler(void)
-{
- BSP_SD_DMA_Tx_IRQHandler();
-}
-
-/**
- * @brief This function handles SDIO interrupt request.
- * @param None
- * @retval None
- */
-void SDIO_IRQHandler(void)
-{
- BSP_SD_IRQHandler();
-}
-
/**
* @brief This function handles PPP interrupt request.
* @param None
diff --git a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index a89388c949..5005e38286 100644
--- a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 83ecd12f1e..0a245ec303 100644
--- a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 2e27ab6b90..e0ef00dede 100644
--- a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 2e27ab6b90..e0ef00dede 100644
--- a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index dd7e851e95..be04c997a5 100644
--- a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index a89388c949..5005e38286 100644
--- a/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
index df101aca35..e23674cb8d 100644
--- a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
+++ b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
@@ -17,13 +17,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,15 +37,15 @@
-
-
-
+
+
-
-
-
+
+
@@ -102,31 +102,31 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -163,8 +163,17 @@
+
+
+
+
+
+
+
@@ -181,4 +190,5 @@
+
\ No newline at end of file
diff --git a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 3530bb88ed..b1013b79fd 100644
--- a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -119,13 +119,15 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -133,7 +135,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -142,7 +144,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -152,7 +154,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c b/Projects/STM324x9I_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c
index 097fdbd815..6e3dc3262a 100644
--- a/Projects/STM324x9I_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c
+++ b/Projects/STM324x9I_EVAL/Applications/IAP/IAP_Main/Src/ymodem.c
@@ -355,7 +355,7 @@ COM_StatusTypeDef Ymodem_Receive ( uint32_t *p_size )
/* Test the size of the image to be sent */
/* Image size is greater than Flash size */
- if (*p_size > (USER_FLASH_SIZE + 1))
+ if (filesize > (USER_FLASH_SIZE + 1))
{
/* End session */
tmp = CA;
diff --git a/Projects/STM324x9I_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index f71176f70d..87c82c801f 100644
--- a/Projects/STM324x9I_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 4437d3efcd..716f2961ea 100644
--- a/Projects/STM324x9I_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index c603e1afcc..fa38d82306 100644
--- a/Projects/STM324x9I_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
index 38dd787306..1ac86088db 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
@@ -49,7 +49,7 @@ a lot of data that needs to be copied, this should be set high. */
#define MEMP_NUM_TCP_PCB_LISTEN 5
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
segments. */
-#define MEMP_NUM_TCP_SEG 8
+#define MEMP_NUM_TCP_SEG TCP_SND_QUEUELEN
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
timeouts. */
#define MEMP_NUM_SYS_TIMEOUT 10
@@ -77,11 +77,6 @@ a lot of data that needs to be copied, this should be set high. */
/* TCP sender buffer space (bytes). */
#define TCP_SND_BUF (4*TCP_MSS)
-/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
- as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
-
-#define TCP_SND_QUEUELEN (2* TCP_SND_BUF/TCP_MSS)
-
/* TCP receive window. */
#define TCP_WND (2*TCP_MSS)
@@ -175,6 +170,16 @@ The STM32F4xx allows computing and verifying the IP, UDP, TCP and ICMP checksums
*/
#define LWIP_SOCKET 0
+/*
+ ------------------------------------
+ ---------- LWIP_NETIF_API options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_NETIF_API==1: Enable NETIF API
+ */
+#define LWIP_NETIF_API 1
+
/*
------------------------------------
---------- httpd options ----------
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
index 11c7ea801f..8d19c4d372 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
@@ -26,6 +26,7 @@
#ifdef USE_LCD
#include "lcd_log.h"
#endif
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
@@ -106,7 +107,7 @@ void DHCP_Thread(void const * argument)
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
#endif
- dhcp_start(netif);
+ netifapi_dhcp_start(netif);
}
break;
case DHCP_WAIT_ADDRESS:
@@ -136,7 +137,7 @@ void DHCP_Thread(void const * argument)
IP_ADDR4(&ipaddr, IP_ADDR0 ,IP_ADDR1 , IP_ADDR2 , IP_ADDR3 );
IP_ADDR4(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP_ADDR4(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
+ netifapi_netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
#ifdef USE_LCD
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
index 159fbae4ad..f64918ebc9 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
@@ -9,7 +9,7 @@
* Copyright (c) 2017 STMicroelectronics.
* All rights reserved.
*
- * This software is licensed under terms that can be found in the LICENSE file
+ * This software is licensed under terms that can be found in the LICENSE filefile
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
@@ -26,11 +26,14 @@
#include "ethernetif.h"
#include "../Components/dp83848/dp83848.h"
#include
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
#define TIME_WAITING_FOR_INPUT ( osWaitForever )
+/* Time to block waiting for transmissions to finish */
+#define ETHIF_TX_TIMEOUT (2000U)
/* Stack size of the interface thread */
#define INTERFACE_THREAD_STACK_SIZE ( 512 )
@@ -47,7 +50,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -181,7 +184,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
PHYLinkState = DP83848_GetLinkState(&DP83848);
@@ -276,13 +284,29 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
- HAL_ETH_Transmit_IT(&EthHandle, &TxConfig);
-
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ do
{
- }
-
- HAL_ETH_ReleaseTxPacket(&EthHandle);
+ if(HAL_ETH_Transmit_IT(&EthHandle, &TxConfig) == HAL_OK)
+ {
+ errval = ERR_OK;
+ }
+ else
+ {
+ if(HAL_ETH_GetError(&EthHandle) & HAL_ETH_ERROR_BUSY)
+ {
+ /* Wait for descriptors to become available */
+ osSemaphoreWait( TxPktSemaphore, ETHIF_TX_TIMEOUT);
+ HAL_ETH_ReleaseTxPacket(&EthHandle);
+ errval = ERR_BUF;
+ }
+ else
+ {
+ /* Other error */
+ pbuf_free(p);
+ errval = ERR_IF;
+ }
+ }
+ }while(errval == ERR_BUF);
return errval;
}
@@ -644,8 +668,8 @@ void ethernet_link_thread( void const * argument )
if(netif_is_link_up(netif) && (PHYLinkState <= DP83848_STATUS_LINK_DOWN))
{
HAL_ETH_Stop_IT(&EthHandle);
- netif_set_down(netif);
- netif_set_link_down(netif);
+ netifapi_netif_set_down(netif);
+ netifapi_netif_set_link_down(netif);
}
else if(!netif_is_link_up(netif) && (PHYLinkState > DP83848_STATUS_LINK_DOWN))
{
@@ -683,8 +707,8 @@ void ethernet_link_thread( void const * argument )
MACConf.Speed = speed;
HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
HAL_ETH_Start_IT(&EthHandle);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ netifapi_netif_set_up(netif);
+ netifapi_netif_set_link_up(netif);
}
}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/ethernetif.c
index 911f5eede9..aa8932a9fe 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/ethernetif.c
@@ -41,7 +41,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -154,7 +154,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/main.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/main.c
index 5aebfca329..169a555b86 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/main.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/main.c
@@ -102,9 +102,11 @@ int main(void)
*/
static void BSP_Config(void)
{
- /* Configure LED1, LED2 */
+ /* Configure LED1, LED2, LED3, LED4 */
BSP_LED_Init(LED1);
BSP_LED_Init(LED2);
+ BSP_LED_Init(LED3);
+ BSP_LED_Init(LED4);
#ifdef USE_LCD
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Inc/lwipopts.h b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Inc/lwipopts.h
index 789cc1e641..4cf82da232 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Inc/lwipopts.h
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Inc/lwipopts.h
@@ -175,6 +175,16 @@ The STM32F4xx allows computing and verifying the IP, UDP, TCP and ICMP checksums
*/
#define LWIP_SOCKET 1
+/*
+ ------------------------------------
+ ---------- LWIP_NETIF_API options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_NETIF_API==1: Enable NETIF API
+ */
+#define LWIP_NETIF_API 1
+
/*
------------------------------------
---------- httpd options ----------
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/app_ethernet.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/app_ethernet.c
index ad2e905e46..cee39ec4c4 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/app_ethernet.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/app_ethernet.c
@@ -26,6 +26,7 @@
#ifdef USE_LCD
#include "lcd_log.h"
#endif
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
@@ -106,7 +107,7 @@ void DHCP_Thread(void const * argument)
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
#endif
- dhcp_start(netif);
+ netifapi_dhcp_start(netif);
}
break;
case DHCP_WAIT_ADDRESS:
@@ -136,7 +137,7 @@ void DHCP_Thread(void const * argument)
IP_ADDR4(&ipaddr, IP_ADDR0 ,IP_ADDR1 , IP_ADDR2 , IP_ADDR3 );
IP_ADDR4(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP_ADDR4(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
+ netifapi_netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
#ifdef USE_LCD
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/ethernetif.c
index 2f2760d9c2..79ffc0471f 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/ethernetif.c
@@ -26,11 +26,14 @@
#include "ethernetif.h"
#include "../Components/dp83848/dp83848.h"
#include
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
#define TIME_WAITING_FOR_INPUT ( osWaitForever )
+/* Time to block waiting for transmissions to finish */
+#define ETHIF_TX_TIMEOUT (2000U)
/* Stack size of the interface thread */
#define INTERFACE_THREAD_STACK_SIZE ( 512 )
@@ -47,7 +50,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -181,7 +184,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
PHYLinkState = DP83848_GetLinkState(&DP83848);
@@ -276,13 +284,29 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
- HAL_ETH_Transmit_IT(&EthHandle, &TxConfig);
-
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ do
{
- }
-
- HAL_ETH_ReleaseTxPacket(&EthHandle);
+ if(HAL_ETH_Transmit_IT(&EthHandle, &TxConfig) == HAL_OK)
+ {
+ errval = ERR_OK;
+ }
+ else
+ {
+ if(HAL_ETH_GetError(&EthHandle) & HAL_ETH_ERROR_BUSY)
+ {
+ /* Wait for descriptors to become available */
+ osSemaphoreWait( TxPktSemaphore, ETHIF_TX_TIMEOUT);
+ HAL_ETH_ReleaseTxPacket(&EthHandle);
+ errval = ERR_BUF;
+ }
+ else
+ {
+ /* Other error */
+ pbuf_free(p);
+ errval = ERR_IF;
+ }
+ }
+ }while(errval == ERR_BUF);
return errval;
}
@@ -644,8 +668,8 @@ void ethernet_link_thread( void const * argument )
if(netif_is_link_up(netif) && (PHYLinkState <= DP83848_STATUS_LINK_DOWN))
{
HAL_ETH_Stop_IT(&EthHandle);
- netif_set_down(netif);
- netif_set_link_down(netif);
+ netifapi_netif_set_down(netif);
+ netifapi_netif_set_link_down(netif);
}
else if(!netif_is_link_up(netif) && (PHYLinkState > DP83848_STATUS_LINK_DOWN))
{
@@ -683,8 +707,8 @@ void ethernet_link_thread( void const * argument )
MACConf.Speed = speed;
HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
HAL_ETH_Start_IT(&EthHandle);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ netifapi_netif_set_up(netif);
+ netifapi_netif_set_link_up(netif);
}
}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_IAP/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_IAP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index dd7e851e95..be04c997a5 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_IAP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_IAP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_IAP/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_IAP/Src/ethernetif.c
index c12cb6590e..e5f7301c77 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_IAP/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_IAP/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c
index 712f87acfc..1c9498dc9f 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c
index 07ed624141..4c05b9e1c9 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/.cproject b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/.cproject
index dcd45b0ef2..d5fe747db4 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/.cproject
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/.cproject
@@ -1,88 +1,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -159,6 +77,7 @@
+
@@ -166,13 +85,6 @@
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index dd7e851e95..be04c997a5 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c
index 4b9877c395..c699d21a97 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c
index 07795f5fc9..34c6467ef7 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c
@@ -144,36 +144,6 @@ void SysTick_Handler(void)
/* file (startup_stm32f4xx.s). */
/******************************************************************************/
-/**
- * @brief This function handles DMA2 Stream 3 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream3_IRQHandler(void)
-{
- BSP_SD_DMA_Rx_IRQHandler();
-}
-
-/**
- * @brief This function handles DMA2 Stream 6 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream6_IRQHandler(void)
-{
- BSP_SD_DMA_Tx_IRQHandler();
-}
-
-/**
- * @brief This function handles SDIO interrupt request.
- * @param None
- * @retval None
- */
-void SDIO_IRQHandler(void)
-{
- BSP_SD_IRQHandler();
-}
-
/**
* @}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h
index b89da3798f..6889ebdf1f 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h
@@ -179,6 +179,16 @@ The STM32F4xx allows computing and verifying the IP, UDP, TCP and ICMP checksums
/*
---------------------------------
+ ---------- LWIP_NETIF_API options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_NETIF_API==1: Enable NETIF API
+ */
+#define LWIP_NETIF_API 1
+
+/*
+ ------------------------------------
---------- OS options ----------
---------------------------------
*/
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index b29fa6e8f5..a5414a9654 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c
index c49b5b6dd7..beb5b80da7 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c
@@ -26,6 +26,7 @@
#ifdef USE_LCD
#include "lcd_log.h"
#endif
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
@@ -106,7 +107,7 @@ void DHCP_Thread(void const * argument)
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
#endif
- dhcp_start(netif);
+ netifapi_dhcp_start(netif);
}
break;
case DHCP_WAIT_ADDRESS:
@@ -136,7 +137,7 @@ void DHCP_Thread(void const * argument)
IP_ADDR4(&ipaddr, IP_ADDR0 ,IP_ADDR1 , IP_ADDR2 , IP_ADDR3 );
IP_ADDR4(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP_ADDR4(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
+ netifapi_netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
#ifdef USE_LCD
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c
index 1e66889f77..85358deec1 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c
@@ -26,11 +26,14 @@
#include "ethernetif.h"
#include "../Components/dp83848/dp83848.h"
#include
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
#define TIME_WAITING_FOR_INPUT ( osWaitForever )
+/* Time to block waiting for transmissions to finish */
+#define ETHIF_TX_TIMEOUT (2000U)
/* Stack size of the interface thread */
#define INTERFACE_THREAD_STACK_SIZE ( 512 )
@@ -47,7 +50,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -181,7 +184,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
PHYLinkState = DP83848_GetLinkState(&DP83848);
@@ -276,13 +284,29 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
- HAL_ETH_Transmit_IT(&EthHandle, &TxConfig);
-
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ do
{
- }
-
- HAL_ETH_ReleaseTxPacket(&EthHandle);
+ if(HAL_ETH_Transmit_IT(&EthHandle, &TxConfig) == HAL_OK)
+ {
+ errval = ERR_OK;
+ }
+ else
+ {
+ if(HAL_ETH_GetError(&EthHandle) & HAL_ETH_ERROR_BUSY)
+ {
+ /* Wait for descriptors to become available */
+ osSemaphoreWait( TxPktSemaphore, ETHIF_TX_TIMEOUT);
+ HAL_ETH_ReleaseTxPacket(&EthHandle);
+ errval = ERR_BUF;
+ }
+ else
+ {
+ /* Other error */
+ pbuf_free(p);
+ errval = ERR_IF;
+ }
+ }
+ }while(errval == ERR_BUF);
return errval;
}
@@ -644,8 +668,8 @@ void ethernet_link_thread( void const * argument )
if(netif_is_link_up(netif) && (PHYLinkState <= DP83848_STATUS_LINK_DOWN))
{
HAL_ETH_Stop_IT(&EthHandle);
- netif_set_down(netif);
- netif_set_link_down(netif);
+ netifapi_netif_set_down(netif);
+ netifapi_netif_set_link_down(netif);
}
else if(!netif_is_link_up(netif) && (PHYLinkState > DP83848_STATUS_LINK_DOWN))
{
@@ -683,8 +707,8 @@ void ethernet_link_thread( void const * argument )
MACConf.Speed = speed;
HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
HAL_ETH_Start_IT(&EthHandle);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ netifapi_netif_set_up(netif);
+ netifapi_netif_set_link_up(netif);
}
}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c
index 1ab218d11e..e687771c57 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c
index ab06bbc09e..f651d720ff 100644
--- a/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c
+++ b/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index fb8825565e..e37de21378 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index fb8825565e..e37de21378 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index a70baea21a..478dc2b852 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index f32ba88627..2c6f310b63 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 597a288bfa..82242deadd 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 840babd5c6..b3beb476d9 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 5da8dedf7d..300e1b8cf9 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index f7048408bd..7fa01b6276 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/CDC_Standalone/Src/stm32f4xx_it.c b/Projects/STM324x9I_EVAL/Applications/USB_Host/CDC_Standalone/Src/stm32f4xx_it.c
index 6ebf84c3b1..28532033db 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/CDC_Standalone/Src/stm32f4xx_it.c
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/CDC_Standalone/Src/stm32f4xx_it.c
@@ -154,36 +154,6 @@ void OTG_HS_IRQHandler(void)
HAL_HCD_IRQHandler(&hhcd);
}
-/**
- * @brief This function handles DMA2 Stream 3 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream3_IRQHandler(void)
-{
- BSP_SD_DMA_Rx_IRQHandler();
-}
-
-/**
- * @brief This function handles DMA2 Stream 6 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream6_IRQHandler(void)
-{
- BSP_SD_DMA_Tx_IRQHandler();
-}
-
-/**
- * @brief This function handles SDIO interrupt request.
- * @param None
- * @retval None
- */
-void SDIO_IRQHandler(void)
-{
- BSP_SD_IRQHandler();
-}
-
/**
* @brief This function handles External line 9_5 interrupt request.
* @param None
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 590ad6b952..e5ca580164 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/.cproject b/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/.cproject
index 7f6bd15985..640bbb1c3e 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/.cproject
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/.cproject
@@ -1,89 +1,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -163,90 +80,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -327,89 +160,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index eb28a0e84b..5180df734e 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/audio.c b/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/audio.c
index 6b9cc167bb..b44d439524 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/audio.c
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/audio.c
@@ -261,7 +261,7 @@ void AUDIO_PlaybackProbeKey(JOYState_TypeDef state)
static AUDIO_ErrorTypeDef AUDIO_GetFileInfo(uint16_t file_idx,
WAV_InfoTypedef * info)
{
- uint8_t str[FILEMGR_FILE_NAME_SIZE + 20];
+ uint8_t str[FILEMGR_FILE_NAME_SIZE + 30];
uint32_t bytesread;
uint32_t duration;
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/stm32f4xx_it.c b/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/stm32f4xx_it.c
index 6d46d5c971..58210084a6 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/stm32f4xx_it.c
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/stm32f4xx_it.c
@@ -154,36 +154,6 @@ void OTG_HS_IRQHandler(void)
HAL_HCD_IRQHandler(&hhcd);
}
-/**
- * @brief This function handles DMA2 Stream 3 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream3_IRQHandler(void)
-{
- BSP_SD_DMA_Rx_IRQHandler();
-}
-
-/**
- * @brief This function handles DMA2 Stream 6 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream6_IRQHandler(void)
-{
- BSP_SD_DMA_Tx_IRQHandler();
-}
-
-/**
- * @brief This function handles SDIO interrupt request.
- * @param None
- * @retval None
- */
-void SDIO_IRQHandler(void)
-{
- BSP_SD_IRQHandler();
-}
-
/**
* @brief This function handles External line 2 interrupt request.
* @param None
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index c494a280a8..12be0451a8 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index d93546c43d..3c4e8959e3 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 76d8e40f32..a77aef7915 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index de82a1e4ef..562c309106 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index d93546c43d..3c4e8959e3 100644
--- a/Projects/STM324x9I_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index 2374d1a006..003a05cba8 100644
--- a/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c b/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c
index 33225525c7..17d972585e 100644
--- a/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c
+++ b/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c
@@ -15,7 +15,7 @@
*
******************************************************************************
*/
-
+
#include "mbedtls_config.h"
#ifdef MBEDTLS_ENTROPY_HARDWARE_ALT
@@ -23,28 +23,72 @@
#include "main.h"
#include
+#include "mbedtls/entropy.h"
#include "mbedtls/entropy_poll.h"
-extern RNG_HandleTypeDef RngHandle;
+static __IO uint32_t isInitialized = 0;
+
+static RNG_HandleTypeDef RNG_Handle;
-int mbedtls_hardware_poll( void *Data, unsigned char *Output, size_t Len, size_t *oLen )
+static void RNG_Init(void);
+/* RNG init function */
+static void RNG_Init(void)
{
- uint32_t index;
- uint32_t randomValue;
-
- for (index = 0; index < Len/4; index++)
+ if (isInitialized == 0)
{
- if (HAL_RNG_GenerateRandomNumber(&RngHandle, &randomValue) == HAL_OK)
+ RNG_Handle.Instance = RNG;
+ /* DeInitialize the RNG peripheral */
+ if (HAL_RNG_DeInit(&RNG_Handle) != HAL_OK)
{
- *oLen += 4;
- memset(&(Output[index * 4]), (int)randomValue, 4);
+ return;
}
- else
+ /* Initialize the RNG peripheral */
+ if (HAL_RNG_Init(&RNG_Handle) != HAL_OK)
{
- Error_Handler();
+ return;
}
+ isInitialized = 1;
+ }
+}
+
+int mbedtls_hardware_poll(void *Data, unsigned char *Output, size_t Len, size_t *oLen)
+{
+ __IO uint8_t random_value[4];
+ int ret = 0;
+
+ RNG_Init();
+
+ if (isInitialized == 0)
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
}
-
- return 0;
+ else
+ {
+ *oLen = 0;
+ while ((*oLen < Len) && (ret == 0))
+ {
+ if (HAL_RNG_GenerateRandomNumber(&RNG_Handle, (uint32_t *)random_value) == HAL_OK)
+ {
+ for (uint8_t i = 0; (i < sizeof(uint32_t)) && (*oLen < Len) ; i++)
+ {
+ Output[*oLen] = random_value[i];
+ *oLen += 1;
+ }
+ }
+ else
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ }
+
+ /* Just be extra sure that we didn't do it wrong */
+ if (__HAL_RNG_GET_FLAG(&RNG_Handle, (RNG_FLAG_CECS | RNG_FLAG_SECS)) != 0)
+ {
+ *oLen = 0;
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ }
+
+ return ret;
}
#endif /*MBEDTLS_ENTROPY_HARDWARE_ALT*/
diff --git a/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index 2374d1a006..003a05cba8 100644
--- a/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c b/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c
index abb79eb201..17d972585e 100644
--- a/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c
+++ b/Projects/STM324x9I_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c
@@ -16,7 +16,6 @@
******************************************************************************
*/
-
#include "mbedtls_config.h"
#ifdef MBEDTLS_ENTROPY_HARDWARE_ALT
@@ -24,29 +23,72 @@
#include "main.h"
#include
+#include "mbedtls/entropy.h"
#include "mbedtls/entropy_poll.h"
-extern RNG_HandleTypeDef RngHandle;
+static __IO uint32_t isInitialized = 0;
+
+static RNG_HandleTypeDef RNG_Handle;
-int mbedtls_hardware_poll( void *Data, unsigned char *Output, size_t Len, size_t *oLen )
+static void RNG_Init(void);
+/* RNG init function */
+static void RNG_Init(void)
{
- uint32_t index;
- uint32_t randomValue;
-
- for (index = 0; index < Len/4; index++)
+ if (isInitialized == 0)
{
- if (HAL_RNG_GenerateRandomNumber(&RngHandle, &randomValue) == HAL_OK)
+ RNG_Handle.Instance = RNG;
+ /* DeInitialize the RNG peripheral */
+ if (HAL_RNG_DeInit(&RNG_Handle) != HAL_OK)
{
- *oLen += 4;
- memset(&(Output[index * 4]), (int)randomValue, 4);
+ return;
}
- else
+ /* Initialize the RNG peripheral */
+ if (HAL_RNG_Init(&RNG_Handle) != HAL_OK)
{
- Error_Handler();
+ return;
}
+ isInitialized = 1;
}
-
- return 0;
}
+int mbedtls_hardware_poll(void *Data, unsigned char *Output, size_t Len, size_t *oLen)
+{
+ __IO uint8_t random_value[4];
+ int ret = 0;
+
+ RNG_Init();
+
+ if (isInitialized == 0)
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ else
+ {
+ *oLen = 0;
+ while ((*oLen < Len) && (ret == 0))
+ {
+ if (HAL_RNG_GenerateRandomNumber(&RNG_Handle, (uint32_t *)random_value) == HAL_OK)
+ {
+ for (uint8_t i = 0; (i < sizeof(uint32_t)) && (*oLen < Len) ; i++)
+ {
+ Output[*oLen] = random_value[i];
+ *oLen += 1;
+ }
+ }
+ else
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ }
+
+ /* Just be extra sure that we didn't do it wrong */
+ if (__HAL_RNG_GET_FLAG(&RNG_Handle, (RNG_FLAG_CECS | RNG_FLAG_SECS)) != 0)
+ {
+ *oLen = 0;
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ }
+
+ return ret;
+}
#endif /*MBEDTLS_ENTROPY_HARDWARE_ALT*/
diff --git a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/BSP/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/BSP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/BSP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/BSP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/CAN/CAN_LoopBack/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/CAN/CAN_LoopBack/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/CAN/CAN_LoopBack/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/CAN/CAN_LoopBack/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/CAN/CAN_Networking/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/CAN/CAN_Networking/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/CAN/CAN_Networking/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/CAN/CAN_Networking/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESCCM_IT/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESCCM_IT/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index e58023ec2d..38720c7838 100644
--- a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESCCM_IT/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESCCM_IT/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESGCM/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESGCM/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index e58023ec2d..38720c7838 100644
--- a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESGCM/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESGCM/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index e58023ec2d..38720c7838 100644
--- a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index e58023ec2d..38720c7838 100644
--- a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index e58023ec2d..38720c7838 100644
--- a/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 81e3a3c5d0..f5c9991e08 100644
--- a/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -88,13 +88,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -102,7 +104,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -111,7 +113,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -121,7 +123,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_RegToMemWithLCD/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_RegToMemWithLCD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_RegToMemWithLCD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/DMA2D/DMA2D_RegToMemWithLCD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_DualBoot/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_DualBoot/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_DualBoot/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_DualBoot/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 1f63cf15c2..04d5d2f601 100644
--- a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM_DataMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SRAM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SRAM_DataMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SRAM_DataMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 04dc093680..b4f5f45116 100644
--- a/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SRAM_DataMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/FMC/FMC_SRAM_DataMemory/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index e58023ec2d..38720c7838 100644
--- a/Projects/STM324x9I_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index e58023ec2d..38720c7838 100644
--- a/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index e58023ec2d..38720c7838 100644
--- a/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA224SHA256_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA224SHA256_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld
index e58023ec2d..38720c7838 100644
--- a/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA224SHA256_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/HASH/HASH_SHA224SHA256_DMA/STM32CubeIDE/STM32F439NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_ColorKeying/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_ColorKeying/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_ColorKeying/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_ColorKeying/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_1Layer/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_1Layer/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_1Layer/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_1Layer/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_2Layers/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_2Layers/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_2Layers/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_2Layers/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_BOR/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_BOR/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_BOR/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_BOR/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_PVD/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_PVD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_PVD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_PVD/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Prescaler_Selection/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Prescaler_Selection/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Prescaler_Selection/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Prescaler_Selection/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/UART/UART_Hyperterminal_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/UART/UART_Hyperterminal_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/UART/UART_Hyperterminal_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/UART/UART_Hyperterminal_DMA/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/UART/UART_Hyperterminal_IT/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/UART/UART_Hyperterminal_IT/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/UART/UART_Hyperterminal_IT/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/UART/UART_Hyperterminal_IT/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 9f35df6875..aedb9558b8 100644
--- a/Projects/STM324x9I_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Templates/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Templates/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 938bcc1881..f739336d58 100644
--- a/Projects/STM324x9I_EVAL/Templates/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Templates/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Templates/STM32CubeIDE/STM32F439NIHx_FLASH.ld b/Projects/STM324x9I_EVAL/Templates/STM32CubeIDE/STM32F439NIHx_FLASH.ld
index bffccc7502..459c6c4bf4 100644
--- a/Projects/STM324x9I_EVAL/Templates/STM32CubeIDE/STM32F439NIHx_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Templates/STM32CubeIDE/STM32F439NIHx_FLASH.ld
@@ -83,27 +83,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM324x9I_EVAL/Templates_LL/STM32CubeIDE/STM32F429NIHX_FLASH.ld b/Projects/STM324x9I_EVAL/Templates_LL/STM32CubeIDE/STM32F429NIHX_FLASH.ld
index 938bcc1881..f739336d58 100644
--- a/Projects/STM324x9I_EVAL/Templates_LL/STM32CubeIDE/STM32F429NIHX_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Templates_LL/STM32CubeIDE/STM32F429NIHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324x9I_EVAL/Templates_LL/STM32CubeIDE/STM32F439NIHx_FLASH.ld b/Projects/STM324x9I_EVAL/Templates_LL/STM32CubeIDE/STM32F439NIHx_FLASH.ld
index 38897ca0c2..bb462a21aa 100644
--- a/Projects/STM324x9I_EVAL/Templates_LL/STM32CubeIDE/STM32F439NIHx_FLASH.ld
+++ b/Projects/STM324x9I_EVAL/Templates_LL/STM32CubeIDE/STM32F439NIHx_FLASH.ld
@@ -83,27 +83,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM324xG_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 4c10749910..6f6218b4fe 100644
--- a/Projects/STM324xG_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/Camera/Camera_To_USBDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index f27d10eaf1..d567fc27bc 100644
--- a/Projects/STM324xG_EVAL/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/Display/LCD_Paint/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index f27d10eaf1..d567fc27bc 100644
--- a/Projects/STM324xG_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 4c10749910..6f6218b4fe 100644
--- a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_MultiDrives/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_MultiDrives/Src/stm32f4xx_it.c b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_MultiDrives/Src/stm32f4xx_it.c
index 0da0fde41a..dce29ac076 100644
--- a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_MultiDrives/Src/stm32f4xx_it.c
+++ b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_MultiDrives/Src/stm32f4xx_it.c
@@ -149,16 +149,6 @@ void BSP_SD_DMA_Rx_IRQHandler(void)
HAL_DMA_IRQHandler(uSdHandle.hdmarx);
}
-/**
- * @brief This function handles DMA2 Stream 6 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream6_IRQHandler(void)
-{
- BSP_SD_DMA_Tx_IRQHandler();
-}
-
/**
* @brief This function handles SDIO interrupt request.
* @param None
diff --git a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index c4894a1154..c00b6ef26e 100644
--- a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_RAMDisk_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d375c6afe5..3120c2f53d 100644
--- a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 10551f8061..839e3bcdec 100644
--- a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 10551f8061..839e3bcdec 100644
--- a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 4c10749910..6f6218b4fe 100644
--- a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index c4894a1154..c00b6ef26e 100644
--- a/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
index e050a648f6..d9f2d99769 100644
--- a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
+++ b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
@@ -17,13 +17,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,15 +37,15 @@
-
-
-
+
+
-
-
-
+
+
@@ -100,31 +100,31 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -159,6 +159,14 @@
+
+
+
+
+
+
diff --git a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 2ecd3b8ccd..1dcfae1837 100644
--- a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -119,13 +119,15 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -133,7 +135,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -142,7 +144,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -152,7 +154,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/IAP/IAP_Main/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/IAP/IAP_Main/src/ymodem.c b/Projects/STM324xG_EVAL/Applications/IAP/IAP_Main/src/ymodem.c
index 9faaa32939..c946bb48e9 100644
--- a/Projects/STM324xG_EVAL/Applications/IAP/IAP_Main/src/ymodem.c
+++ b/Projects/STM324xG_EVAL/Applications/IAP/IAP_Main/src/ymodem.c
@@ -355,7 +355,7 @@ COM_StatusTypeDef Ymodem_Receive ( uint32_t *p_size )
/* Test the size of the image to be sent */
/* Image size is greater than Flash size */
- if (*p_size > (USER_FLASH_SIZE + 1))
+ if (filesize > (USER_FLASH_SIZE + 1))
{
/* End session */
tmp = CA;
diff --git a/Projects/STM324xG_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 159c8ad25a..ede181fbc1 100644
--- a/Projects/STM324xG_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/IAP/IAP_binary_template/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 9bb4acd4b4..03a722f752 100644
--- a/Projects/STM324xG_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 8b72acb3ed..93be3bdb17 100644
--- a/Projects/STM324xG_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
index eb2133fdb4..518b961630 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
@@ -175,6 +175,16 @@ The STM32F4xx allows computing and verifying the IP, UDP, TCP and ICMP checksums
*/
#define LWIP_SOCKET 0
+/*
+ ------------------------------------
+ ---------- LWIP_NETIF_API options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_NETIF_API==1: Enable NETIF API
+ */
+#define LWIP_NETIF_API 1
+
/*
------------------------------------
---------- httpd options ----------
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
index 2d6d225b02..9599175f2b 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
@@ -26,6 +26,7 @@
#ifdef USE_LCD
#include "lcd_log.h"
#endif
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
@@ -106,7 +107,7 @@ void DHCP_Thread(void const * argument)
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
#endif
- dhcp_start(netif);
+ netifapi_dhcp_start(netif);
}
break;
case DHCP_WAIT_ADDRESS:
@@ -136,7 +137,7 @@ void DHCP_Thread(void const * argument)
IP_ADDR4(&ipaddr, IP_ADDR0 ,IP_ADDR1 , IP_ADDR2 , IP_ADDR3 );
IP_ADDR4(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP_ADDR4(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
+ netifapi_netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
#ifdef USE_LCD
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
index da6b2fe1d4..e25b8a01a4 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
@@ -23,11 +23,14 @@
#include "ethernetif.h"
#include "../Components/dp83848/dp83848.h"
#include
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
#define TIME_WAITING_FOR_INPUT ( osWaitForever )
+/* Time to block waiting for transmissions to finish */
+#define ETHIF_TX_TIMEOUT (2000U)
/* Stack size of the interface thread */
#define INTERFACE_THREAD_STACK_SIZE ( 512 )
@@ -44,7 +47,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -177,7 +180,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
PHYLinkState = DP83848_GetLinkState(&DP83848);
@@ -272,13 +280,29 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
- HAL_ETH_Transmit_IT(&EthHandle, &TxConfig);
-
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ do
{
- }
-
- HAL_ETH_ReleaseTxPacket(&EthHandle);
+ if(HAL_ETH_Transmit_IT(&EthHandle, &TxConfig) == HAL_OK)
+ {
+ errval = ERR_OK;
+ }
+ else
+ {
+ if(HAL_ETH_GetError(&EthHandle) & HAL_ETH_ERROR_BUSY)
+ {
+ /* Wait for descriptors to become available */
+ osSemaphoreWait( TxPktSemaphore, ETHIF_TX_TIMEOUT);
+ HAL_ETH_ReleaseTxPacket(&EthHandle);
+ errval = ERR_BUF;
+ }
+ else
+ {
+ /* Other error */
+ pbuf_free(p);
+ errval = ERR_IF;
+ }
+ }
+ }while(errval == ERR_BUF);
return errval;
}
@@ -612,8 +636,8 @@ void ethernet_link_thread( void const * argument )
if(netif_is_link_up(netif) && (PHYLinkState <= DP83848_STATUS_LINK_DOWN))
{
HAL_ETH_Stop_IT(&EthHandle);
- netif_set_down(netif);
- netif_set_link_down(netif);
+ netifapi_netif_set_down(netif);
+ netifapi_netif_set_link_down(netif);
}
else if(!netif_is_link_up(netif) && (PHYLinkState > DP83848_STATUS_LINK_DOWN))
{
@@ -651,8 +675,8 @@ void ethernet_link_thread( void const * argument )
MACConf.Speed = speed;
HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
HAL_ETH_Start_IT(&EthHandle);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ netifapi_netif_set_up(netif);
+ netifapi_netif_set_link_up(netif);
}
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/httpserver-netconn.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/httpserver-netconn.c
index d596659994..1e815fa21e 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/httpserver-netconn.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/httpserver-netconn.c
@@ -169,21 +169,21 @@ static void http_server_serve(struct netconn *conn)
if (strncmp((char const *)buf,"GET /STM32F4xx_files/ST.gif",27)==0)
{
fs_open(&file, "/STM32F4xx_files/ST.gif");
- netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_NOCOPY);
+ netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_COPY);
fs_close(&file);
}
/* Check if request to get stm32.jpeg */
else if (strncmp((char const *)buf,"GET /STM32F4xx_files/stm32.jpg",30)==0)
{
fs_open(&file, "/STM32F4xx_files/stm32.jpg");
- netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_NOCOPY);
+ netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_COPY);
fs_close(&file);
}
else if (strncmp((char const *)buf,"GET /STM32F4xx_files/logo.jpg", 29) == 0)
{
/* Check if request to get ST logo.jpg */
fs_open(&file, "/STM32F4xx_files/logo.jpg");
- netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_NOCOPY);
+ netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_COPY);
fs_close(&file);
}
else if(strncmp(buf, "GET /STM32F4xxTASKS.html", 24) == 0)
@@ -195,14 +195,14 @@ static void http_server_serve(struct netconn *conn)
{
/* Load STM32F4xx page */
fs_open(&file, "/STM32F4xx.html");
- netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_NOCOPY);
+ netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_COPY);
fs_close(&file);
}
else
{
/* Load Error page */
fs_open(&file, "/404.html");
- netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_NOCOPY);
+ netconn_write(conn, (const unsigned char*)(file.data), (size_t)file.len, NETCONN_COPY);
fs_close(&file);
}
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Inc/lwipopts.h b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Inc/lwipopts.h
index 77dd36f344..61bb2f22a3 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Inc/lwipopts.h
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Inc/lwipopts.h
@@ -188,6 +188,9 @@ The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums
------------------------------------
*/
+/** Set this to TCP_WRITE_FLAG_COPY to copy data from flash memory */
+#define HTTP_IS_DATA_VOLATILE(hs) TCP_WRITE_FLAG_COPY
+
/** Set this to 1 to support CGI */
#define LWIP_HTTPD_CGI 1
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/ethernetif.c
index 94ebb9a33d..ee6aa418b1 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw/Src/ethernetif.c
@@ -41,7 +41,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -155,7 +155,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Inc/lwipopts.h b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Inc/lwipopts.h
index f1c3020ba6..585bb35b5d 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Inc/lwipopts.h
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Inc/lwipopts.h
@@ -177,6 +177,16 @@ The STM32F4xx allows computing and verifying the IP, UDP, TCP and ICMP checksums
*/
#define LWIP_SOCKET 1
+/*
+ ------------------------------------
+ ---------- LWIP_NETIF_API options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_NETIF_API==1: Enable NETIF API
+ */
+#define LWIP_NETIF_API 1
+
/*
------------------------------------
---------- httpd options ----------
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/app_ethernet.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/app_ethernet.c
index 741501cbcf..395457341c 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/app_ethernet.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/app_ethernet.c
@@ -26,6 +26,8 @@
#ifdef USE_LCD
#include "lcd_log.h"
#endif
+#include "lwip/netifapi.h"
+
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
@@ -105,7 +107,7 @@ void DHCP_Thread(void const * argument)
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
#endif
- dhcp_start(netif);
+ netifapi_dhcp_start(netif);
}
break;
case DHCP_WAIT_ADDRESS:
@@ -135,7 +137,7 @@ void DHCP_Thread(void const * argument)
IP_ADDR4(&ipaddr, IP_ADDR0 ,IP_ADDR1 , IP_ADDR2 , IP_ADDR3 );
IP_ADDR4(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP_ADDR4(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
+ netifapi_netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
#ifdef USE_LCD
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/ethernetif.c
index b079eda0b6..df2ec6bffe 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_HTTP_Server_Socket_RTOS/Src/ethernetif.c
@@ -23,11 +23,14 @@
#include "ethernetif.h"
#include "../Components/dp83848/dp83848.h"
#include
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
#define TIME_WAITING_FOR_INPUT ( osWaitForever )
+/* Time to block waiting for transmissions to finish */
+#define ETHIF_TX_TIMEOUT (2000U)
/* Stack size of the interface thread */
#define INTERFACE_THREAD_STACK_SIZE ( 512 )
@@ -44,7 +47,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -177,7 +180,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
PHYLinkState = DP83848_GetLinkState(&DP83848);
@@ -272,13 +280,29 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
- HAL_ETH_Transmit_IT(&EthHandle, &TxConfig);
-
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ do
{
- }
-
- HAL_ETH_ReleaseTxPacket(&EthHandle);
+ if(HAL_ETH_Transmit_IT(&EthHandle, &TxConfig) == HAL_OK)
+ {
+ errval = ERR_OK;
+ }
+ else
+ {
+ if(HAL_ETH_GetError(&EthHandle) & HAL_ETH_ERROR_BUSY)
+ {
+ /* Wait for descriptors to become available */
+ osSemaphoreWait( TxPktSemaphore, ETHIF_TX_TIMEOUT);
+ HAL_ETH_ReleaseTxPacket(&EthHandle);
+ errval = ERR_BUF;
+ }
+ else
+ {
+ /* Other error */
+ pbuf_free(p);
+ errval = ERR_IF;
+ }
+ }
+ }while(errval == ERR_BUF);
return errval;
}
@@ -612,8 +636,8 @@ void ethernet_link_thread( void const * argument )
if(netif_is_link_up(netif) && (PHYLinkState <= DP83848_STATUS_LINK_DOWN))
{
HAL_ETH_Stop_IT(&EthHandle);
- netif_set_down(netif);
- netif_set_link_down(netif);
+ netifapi_netif_set_down(netif);
+ netifapi_netif_set_link_down(netif);
}
else if(!netif_is_link_up(netif) && (PHYLinkState > DP83848_STATUS_LINK_DOWN))
{
@@ -651,8 +675,8 @@ void ethernet_link_thread( void const * argument )
MACConf.Speed = speed;
HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
HAL_ETH_Start_IT(&EthHandle);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ netifapi_netif_set_up(netif);
+ netifapi_netif_set_link_up(netif);
}
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 4c10749910..6f6218b4fe 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/Src/ethernetif.c
index 7c1adc0403..27073d80d7 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/Src/ethernetif.c
@@ -41,7 +41,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -154,7 +154,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/Src/httpserver.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/Src/httpserver.c
index fac24e8be6..8e6e5beb19 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/Src/httpserver.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/Src/httpserver.c
@@ -136,7 +136,7 @@ static void send_data(struct tcp_pcb *pcb, struct http_state *hs)
{
len = hs->left;
}
- err = tcp_write(pcb, hs->file, len, 0);
+ err = tcp_write(pcb, hs->file, len, TCP_WRITE_FLAG_COPY);
if (err == ERR_OK)
{
hs->file += len;
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c
index dbe6e7db9e..d625465de5 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Client/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c
index 415bab20b4..28cf191853 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TCP_Echo_Server/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -156,7 +156,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/.cproject b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/.cproject
index 44392206f3..fd71c5038f 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/.cproject
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/.cproject
@@ -1,88 +1,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -159,6 +77,7 @@
+
@@ -175,4 +94,5 @@
+
\ No newline at end of file
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 4c10749910..6f6218b4fe 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c
index 2803015e75..75317c4015 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -157,7 +157,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c
index 9f864c11b1..92a7332afb 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_TFTP_Server/Src/stm32f4xx_it.c
@@ -145,36 +145,6 @@ void SysTick_Handler(void)
/* file (startup_stm32f4xx.s). */
/******************************************************************************/
-/**
-* @brief This function handles DMA2 Stream 3 interrupt request.
-* @param None
-* @retval None
-*/
-void DMA2_Stream3_IRQHandler(void)
-{
- BSP_SD_DMA_Rx_IRQHandler();
-}
-
-/**
-* @brief This function handles DMA2 Stream 6 interrupt request.
-* @param None
-* @retval None
-*/
-void DMA2_Stream6_IRQHandler(void)
-{
- BSP_SD_DMA_Tx_IRQHandler();
-}
-
-/**
-* @brief This function handles SDIO interrupt request.
-* @param None
-* @retval None
-*/
-void SDIO_IRQHandler(void)
-{
- BSP_SD_IRQHandler();
-}
-
/**
* @brief This function handles PPP interrupt request.
* @param None
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h
index b6511b97ed..b562eac785 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Inc/lwipopts.h
@@ -179,6 +179,16 @@ The STM32F4xx allows computing and verifying the IP, UDP, TCP and ICMP checksums
/*
---------------------------------
+ ---------- LWIP_NETIF_API options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_NETIF_API==1: Enable NETIF API
+ */
+#define LWIP_NETIF_API 1
+
+/*
+ ------------------------------------
---------- OS options ----------
---------------------------------
*/
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c
index aa2a50df99..b98927f1b9 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/app_ethernet.c
@@ -26,6 +26,7 @@
#ifdef USE_LCD
#include "lcd_log.h"
#endif
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
@@ -106,7 +107,7 @@ void DHCP_Thread(void const * argument)
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
#endif
- dhcp_start(netif);
+ netifapi_dhcp_start(netif);
}
break;
case DHCP_WAIT_ADDRESS:
@@ -136,7 +137,7 @@ void DHCP_Thread(void const * argument)
IP_ADDR4(&ipaddr, IP_ADDR0 ,IP_ADDR1 , IP_ADDR2 , IP_ADDR3 );
IP_ADDR4(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP_ADDR4(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
+ netifapi_netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
#ifdef USE_LCD
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c
index def594dc17..71cd9c9c30 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDPTCP_Echo_Server_Netconn_RTOS/Src/ethernetif.c
@@ -23,11 +23,14 @@
#include "ethernetif.h"
#include "../Components/dp83848/dp83848.h"
#include
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
#define TIME_WAITING_FOR_INPUT ( osWaitForever )
+/* Time to block waiting for transmissions to finish */
+#define ETHIF_TX_TIMEOUT (2000U)
/* Stack size of the interface thread */
#define INTERFACE_THREAD_STACK_SIZE ( 512 )
@@ -44,7 +47,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -176,7 +179,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
PHYLinkState = DP83848_GetLinkState(&DP83848);
@@ -271,13 +279,29 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
- HAL_ETH_Transmit_IT(&EthHandle, &TxConfig);
-
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ do
{
- }
-
- HAL_ETH_ReleaseTxPacket(&EthHandle);
+ if(HAL_ETH_Transmit_IT(&EthHandle, &TxConfig) == HAL_OK)
+ {
+ errval = ERR_OK;
+ }
+ else
+ {
+ if(HAL_ETH_GetError(&EthHandle) & HAL_ETH_ERROR_BUSY)
+ {
+ /* Wait for descriptors to become available */
+ osSemaphoreWait( TxPktSemaphore, ETHIF_TX_TIMEOUT);
+ HAL_ETH_ReleaseTxPacket(&EthHandle);
+ errval = ERR_BUF;
+ }
+ else
+ {
+ /* Other error */
+ pbuf_free(p);
+ errval = ERR_IF;
+ }
+ }
+ }while(errval == ERR_BUF);
return errval;
}
@@ -611,8 +635,8 @@ void ethernet_link_thread( void const * argument )
if(netif_is_link_up(netif) && (PHYLinkState <= DP83848_STATUS_LINK_DOWN))
{
HAL_ETH_Stop_IT(&EthHandle);
- netif_set_down(netif);
- netif_set_link_down(netif);
+ netifapi_netif_set_down(netif);
+ netifapi_netif_set_link_down(netif);
}
else if(!netif_is_link_up(netif) && (PHYLinkState > DP83848_STATUS_LINK_DOWN))
{
@@ -650,8 +674,8 @@ void ethernet_link_thread( void const * argument )
MACConf.Speed = speed;
HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
HAL_ETH_Start_IT(&EthHandle);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ netifapi_netif_set_up(netif);
+ netifapi_netif_set_link_up(netif);
}
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c
index 9db3fc643b..189cacc8bd 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Client/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -158,7 +158,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c
index 8498f1295a..d8ec29c95b 100644
--- a/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c
+++ b/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_UDP_Echo_Server/Src/ethernetif.c
@@ -44,7 +44,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -158,7 +158,12 @@ static void low_level_init(struct netif *netif)
DP83848_RegisterBusIO(&DP83848, &DP83848_IOCtx);
/* Initialize the DP83848 ETH PHY */
- DP83848_Init(&DP83848);
+ if(DP83848_Init(&DP83848) != DP83848_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
ethernet_link_check_state(netif);
}
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Device/AUDIO_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Device/AUDIO_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 46877817ad..f47c71f16e 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Device/AUDIO_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Device/AUDIO_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 3d532a1d22..f4017e899a 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Device/CDC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 3d532a1d22..f4017e899a 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Device/CustomHID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 04f7693200..6f708a75b9 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index be8e1d11a5..cc3609a865 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Device/DualCore_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 2d40cf2143..6d7d27c919 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 0f6ac0a108..3dad220fd6 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 5cf78ab830..8ffc1bf6ba 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 1e66df7c72..a040a71493 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/CDC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/CDC_Standalone/Src/stm32f4xx_it.c b/Projects/STM324xG_EVAL/Applications/USB_Host/CDC_Standalone/Src/stm32f4xx_it.c
index 729010a603..16a775bbbb 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/CDC_Standalone/Src/stm32f4xx_it.c
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/CDC_Standalone/Src/stm32f4xx_it.c
@@ -164,36 +164,6 @@ void EXTI2_IRQHandler(void)
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
}
-/**
- * @brief This function handles DMA2 Stream 3 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream3_IRQHandler(void)
-{
- BSP_SD_DMA_Rx_IRQHandler();
-}
-
-/**
- * @brief This function handles DMA2 Stream 6 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream6_IRQHandler(void)
-{
- BSP_SD_DMA_Tx_IRQHandler();
-}
-
-/**
- * @brief This function handles SDIO interrupt request.
- * @param None
- * @retval None
- */
-void SDIO_IRQHandler(void)
-{
- BSP_SD_IRQHandler();
-}
-
/**
* @brief This function handles External line 15_10 interrupt request.
* @param None
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 40e8ec55d6..288f39d6ac 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/DualCore_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index f083895d5d..c850911243 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/audio.c b/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/audio.c
index 1d50a782fa..a2f2a6a5b1 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/audio.c
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/audio.c
@@ -252,7 +252,7 @@ void AUDIO_PlaybackProbeKey(JOYState_TypeDef state)
*/
static AUDIO_ErrorTypeDef AUDIO_GetFileInfo(uint16_t file_idx, WAV_InfoTypedef *info)
{
- uint8_t str [FILEMGR_FILE_NAME_SIZE + 20];
+ uint8_t str [FILEMGR_FILE_NAME_SIZE + 30];
uint32_t bytesread;
uint32_t duration;
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/stm32f4xx_it.c b/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/stm32f4xx_it.c
index fe49195622..06bd6c744f 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/stm32f4xx_it.c
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/DynamicSwitch_Standalone/Src/stm32f4xx_it.c
@@ -174,36 +174,6 @@ void EXTI2_IRQHandler(void)
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
}
-/**
- * @brief This function handles DMA2 Stream 3 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream3_IRQHandler(void)
-{
- BSP_SD_DMA_Rx_IRQHandler();
-}
-
-/**
- * @brief This function handles DMA2 Stream 6 interrupt request.
- * @param None
- * @retval None
- */
-void DMA2_Stream6_IRQHandler(void)
-{
- BSP_SD_DMA_Tx_IRQHandler();
-}
-
-/**
- * @brief This function handles SDIO interrupt request.
- * @param None
- * @retval None
- */
-void SDIO_IRQHandler(void)
-{
- BSP_SD_IRQHandler();
-}
-
/**
* @brief This function handles PPP interrupt request.
* @param None
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index c700187adb..b946deae5f 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 5cf78ab830..8ffc1bf6ba 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index a7f4945152..4a2e2061ee 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 6e949f1825..3469d7182e 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 5cf78ab830..8ffc1bf6ba 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/MTP_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/USB_Host/MTP_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 0f6ac0a108..3dad220fd6 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/MTP_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/MTP_Standalone/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/USB_Host/MTP_Standalone/Src/audio.c b/Projects/STM324xG_EVAL/Applications/USB_Host/MTP_Standalone/Src/audio.c
index b80c5443d6..86cef4a7ce 100644
--- a/Projects/STM324xG_EVAL/Applications/USB_Host/MTP_Standalone/Src/audio.c
+++ b/Projects/STM324xG_EVAL/Applications/USB_Host/MTP_Standalone/Src/audio.c
@@ -281,7 +281,7 @@ void AUDIO_PlaybackProbeKey(JOYState_TypeDef state)
*/
static AUDIO_ErrorTypeDef AUDIO_GetFileInfo(uint16_t file_idx, WAV_InfoTypedef *info)
{
- uint8_t str [FILE_NAME_SIZE + 26];
+ uint8_t str [FILE_NAME_SIZE + 30];
uint8_t fname [FILE_NAME_SIZE];
uint32_t bytesread;
uint32_t duration;
diff --git a/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8d065081f6..1d27fada2e 100644
--- a/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Client/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c b/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c
index 36620db541..17d972585e 100644
--- a/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c
+++ b/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Client/Src/hardware_rng.c
@@ -23,28 +23,72 @@
#include "main.h"
#include
+#include "mbedtls/entropy.h"
#include "mbedtls/entropy_poll.h"
-extern RNG_HandleTypeDef RngHandle;
+static __IO uint32_t isInitialized = 0;
-int mbedtls_hardware_poll( void *Data, unsigned char *Output, size_t Len, size_t *oLen )
+static RNG_HandleTypeDef RNG_Handle;
+
+static void RNG_Init(void);
+/* RNG init function */
+static void RNG_Init(void)
+{
+ if (isInitialized == 0)
+ {
+ RNG_Handle.Instance = RNG;
+ /* DeInitialize the RNG peripheral */
+ if (HAL_RNG_DeInit(&RNG_Handle) != HAL_OK)
+ {
+ return;
+ }
+ /* Initialize the RNG peripheral */
+ if (HAL_RNG_Init(&RNG_Handle) != HAL_OK)
+ {
+ return;
+ }
+ isInitialized = 1;
+ }
+}
+
+int mbedtls_hardware_poll(void *Data, unsigned char *Output, size_t Len, size_t *oLen)
{
- uint32_t index;
- uint32_t randomValue;
-
- for (index = 0; index < Len/4; index++)
+ __IO uint8_t random_value[4];
+ int ret = 0;
+
+ RNG_Init();
+
+ if (isInitialized == 0)
{
- if (HAL_RNG_GenerateRandomNumber(&RngHandle, &randomValue) == HAL_OK)
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ else
+ {
+ *oLen = 0;
+ while ((*oLen < Len) && (ret == 0))
{
- *oLen += 4;
- memset(&(Output[index * 4]), (int)randomValue, 4);
+ if (HAL_RNG_GenerateRandomNumber(&RNG_Handle, (uint32_t *)random_value) == HAL_OK)
+ {
+ for (uint8_t i = 0; (i < sizeof(uint32_t)) && (*oLen < Len) ; i++)
+ {
+ Output[*oLen] = random_value[i];
+ *oLen += 1;
+ }
+ }
+ else
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
}
- else
+
+ /* Just be extra sure that we didn't do it wrong */
+ if (__HAL_RNG_GET_FLAG(&RNG_Handle, (RNG_FLAG_CECS | RNG_FLAG_SECS)) != 0)
{
- Error_Handler();
+ *oLen = 0;
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
}
}
-
- return 0;
+
+ return ret;
}
#endif /*MBEDTLS_ENTROPY_HARDWARE_ALT*/
diff --git a/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8d065081f6..1d27fada2e 100644
--- a/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Server/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c b/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c
index 20b9b5f1ed..4f1c0cf30e 100644
--- a/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c
+++ b/Projects/STM324xG_EVAL/Applications/mbedTLS/SSL_Server/Src/hardware_rng.c
@@ -26,28 +26,72 @@
#include "main.h"
#include
+#include "mbedtls/entropy.h"
#include "mbedtls/entropy_poll.h"
-extern RNG_HandleTypeDef RngHandle;
+static __IO uint32_t isInitialized = 0;
-int mbedtls_hardware_poll( void *Data, unsigned char *Output, size_t Len, size_t *oLen )
+static RNG_HandleTypeDef RNG_Handle;
+
+static void RNG_Init(void);
+/* RNG init function */
+static void RNG_Init(void)
+{
+ if (isInitialized == 0)
+ {
+ RNG_Handle.Instance = RNG;
+ /* DeInitialize the RNG peripheral */
+ if (HAL_RNG_DeInit(&RNG_Handle) != HAL_OK)
+ {
+ return;
+ }
+ /* Initialize the RNG peripheral */
+ if (HAL_RNG_Init(&RNG_Handle) != HAL_OK)
+ {
+ return;
+ }
+ isInitialized = 1;
+ }
+}
+
+int mbedtls_hardware_poll(void *Data, unsigned char *Output, size_t Len, size_t *oLen)
{
- uint32_t index;
- uint32_t randomValue;
-
- for (index = 0; index < Len/4; index++)
+ __IO uint8_t random_value[4];
+ int ret = 0;
+
+ RNG_Init();
+
+ if (isInitialized == 0)
{
- if (HAL_RNG_GenerateRandomNumber(&RngHandle, &randomValue) == HAL_OK)
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
+ else
+ {
+ *oLen = 0;
+ while ((*oLen < Len) && (ret == 0))
{
- *oLen += 4;
- memset(&(Output[index * 4]), (int)randomValue, 4);
+ if (HAL_RNG_GenerateRandomNumber(&RNG_Handle, (uint32_t *)random_value) == HAL_OK)
+ {
+ for (uint8_t i = 0; (i < sizeof(uint32_t)) && (*oLen < Len) ; i++)
+ {
+ Output[*oLen] = random_value[i];
+ *oLen += 1;
+ }
+ }
+ else
+ {
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
+ }
}
- else
+
+ /* Just be extra sure that we didn't do it wrong */
+ if (__HAL_RNG_GET_FLAG(&RNG_Handle, (RNG_FLAG_CECS | RNG_FLAG_SECS)) != 0)
{
- Error_Handler();
+ *oLen = 0;
+ ret = MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;
}
}
-
- return 0;
+
+ return ret;
}
#endif /*MBEDTLS_ENTROPY_HARDWARE_ALT*/
diff --git a/Projects/STM324xG_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/ADC/ADC_DualModeInterleaved/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/ADC/ADC_InjectedConversion_Interrupt/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/ADC/ADC_TriggerMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/ADC/ADC_TripleModeInterleaved/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/BSP/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/BSP/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/BSP/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/BSP/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/CAN/CAN_LoopBack/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/CAN/CAN_LoopBack/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/CAN/CAN_LoopBack/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/CAN/CAN_LoopBack/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/CAN/CAN_Networking/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/CAN/CAN_Networking/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/CAN/CAN_Networking/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/CAN/CAN_Networking/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8ee706dcab..2008b6b503 100644
--- a/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_AESModes/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8ee706dcab..2008b6b503 100644
--- a/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_AESModes_DMA/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8ee706dcab..2008b6b503 100644
--- a/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/CRYP/CRYP_TDESModes/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d185645052..1119761923 100644
--- a/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -88,13 +88,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -102,7 +104,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -111,7 +113,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -121,7 +123,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/DAC/DAC_SimpleConversion/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/DCMI/DCMI_CaptureMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/DCMI/DCMI_SnapshotMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/FSMC/FSMC_SRAM/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/FSMC/FSMC_SRAM/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/FSMC/FSMC_SRAM/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/FSMC/FSMC_SRAM/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/FSMC/FSMC_SRAM_DataMemory/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/FSMC/FSMC_SRAM_DataMemory/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 4e0b46e151..1c22bf7695 100644
--- a/Projects/STM324xG_EVAL/Examples/FSMC/FSMC_SRAM_DataMemory/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/FSMC/FSMC_SRAM_DataMemory/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8ee706dcab..2008b6b503 100644
--- a/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8ee706dcab..2008b6b503 100644
--- a/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8ee706dcab..2008b6b503 100644
--- a/Projects/STM324xG_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/HASH/HASH_HMAC_SHA1MD5/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8ee706dcab..2008b6b503 100644
--- a/Projects/STM324xG_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/HASH/HASH_SHA1MD5/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F417IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F417IGHX_FLASH.ld
index 8ee706dcab..2008b6b503 100644
--- a/Projects/STM324xG_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F417IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/HASH/HASH_SHA1MD5_DMA/STM32CubeIDE/STM32F417IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/I2S/I2S_Audio/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/I2S/I2S_Audio/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/I2S/I2S_Audio/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/I2S/I2S_Audio/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/PWR/PWR_BOR/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/PWR/PWR_BOR/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/PWR/PWR_BOR/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/PWR/PWR_BOR/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/PWR/PWR_PVD/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/PWR/PWR_PVD/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/PWR/PWR_PVD/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/PWR/PWR_PVD/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/SMARTCARD/SMARTCARD_T0/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/SMARTCARD/SMARTCARD_T0/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/SMARTCARD/SMARTCARD_T0/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/SMARTCARD/SMARTCARD_T0/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_6Steps/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_7PWMOutput/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_CascadeSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_ComplementarySignals/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_DMABurst/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_Encoder/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_ExtTriggerSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCInactive/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_ParallelSynchro/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_Synchronization/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/UART/UART_Hyperterminal_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/UART/UART_Hyperterminal_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/UART/UART_Hyperterminal_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/UART/UART_Hyperterminal_DMA/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/UART/UART_Hyperterminal_IT/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/UART/UART_Hyperterminal_IT/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/UART/UART_Hyperterminal_IT/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/UART/UART_Hyperterminal_IT/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/UART/UART_Printf/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index d3d5b3aba2..704a61045e 100644
--- a/Projects/STM324xG_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Templates/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Templates/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 376832ef66..7e2ffd414a 100644
--- a/Projects/STM324xG_EVAL/Templates/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Templates/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Templates/STM32CubeIDE/STM32F417IGHx_FLASH.ld b/Projects/STM324xG_EVAL/Templates/STM32CubeIDE/STM32F417IGHx_FLASH.ld
index ae061dc9c0..8622886561 100644
--- a/Projects/STM324xG_EVAL/Templates/STM32CubeIDE/STM32F417IGHx_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Templates/STM32CubeIDE/STM32F417IGHx_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM324xG_EVAL/Templates_LL/STM32CubeIDE/STM32F407IGHX_FLASH.ld b/Projects/STM324xG_EVAL/Templates_LL/STM32CubeIDE/STM32F407IGHX_FLASH.ld
index 376832ef66..7e2ffd414a 100644
--- a/Projects/STM324xG_EVAL/Templates_LL/STM32CubeIDE/STM32F407IGHX_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Templates_LL/STM32CubeIDE/STM32F407IGHX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM324xG_EVAL/Templates_LL/STM32CubeIDE/STM32F417IGHx_FLASH.ld b/Projects/STM324xG_EVAL/Templates_LL/STM32CubeIDE/STM32F417IGHx_FLASH.ld
index 7818c26748..c424770dc4 100644
--- a/Projects/STM324xG_EVAL/Templates_LL/STM32CubeIDE/STM32F417IGHx_FLASH.ld
+++ b/Projects/STM324xG_EVAL/Templates_LL/STM32CubeIDE/STM32F417IGHx_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32CubeProjectsList.html b/Projects/STM32CubeProjectsList.html
index bbc6ac7c65..7c911f55ef 100644
--- a/Projects/STM32CubeProjectsList.html
+++ b/Projects/STM32CubeProjectsList.html
@@ -27,7 +27,7 @@
STM32CubeF4 Firmware Examples for STM32F4xx Series
The STM32CubeF4 Firmware package comes with a rich set of examples running on STMicroelectronics boards, organized by board and provided with preconfigured projects for the main supported toolchains.
-
+
The examples are classified depending on the STM32Cube level they apply to, and are named as follows:
diff --git a/Projects/STM32F4-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 4e814cf57e..4688908f1e 100644
--- a/Projects/STM32F4-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Demonstrations/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Demonstrations/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Demonstrations/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Demonstrations/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/Master/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/Master/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/Master/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/Master/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/Slave/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/Slave/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/Slave/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/Slave/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/Master/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/Master/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/Master/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/Master/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/Slave/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/Slave/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/Slave/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/Slave/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F4-Discovery/Templates_LL/STM32CubeIDE/STM32F407VGTX_FLASH.ld b/Projects/STM32F4-Discovery/Templates_LL/STM32CubeIDE/STM32F407VGTX_FLASH.ld
index 484d3ee5c1..6b575a1405 100644
--- a/Projects/STM32F4-Discovery/Templates_LL/STM32CubeIDE/STM32F407VGTX_FLASH.ld
+++ b/Projects/STM32F4-Discovery/Templates_LL/STM32CubeIDE/STM32F407VGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F401VCTX_FLASH.ld b/Projects/STM32F401-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F401VCTX_FLASH.ld
index 7286e4799b..4381ef92a9 100644
--- a/Projects/STM32F401-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F401VCTX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F401VCTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Demonstrations/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Demonstrations/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Demonstrations/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Demonstrations/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F401VCTX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F401VCTX_FLASH.ld
index 2caa962e93..4f90143cb2 100644
--- a/Projects/STM32F401-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F401VCTX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F401VCTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld b/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld
index 4b2a36bfb7..374a15bb52 100644
--- a/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F401CCUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401-Discovery/Templates_LL/STM32CubeIDE/STM32F401VCTX_FLASH.ld b/Projects/STM32F401-Discovery/Templates_LL/STM32CubeIDE/STM32F401VCTX_FLASH.ld
index 2caa962e93..4f90143cb2 100644
--- a/Projects/STM32F401-Discovery/Templates_LL/STM32CubeIDE/STM32F401VCTX_FLASH.ld
+++ b/Projects/STM32F401-Discovery/Templates_LL/STM32CubeIDE/STM32F401VCTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F401RETX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F401RETX_FLASH.ld
index 60b0f84242..b43bfc2efe 100644
--- a/Projects/STM32F401RE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F401RETX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F401RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F401CEUX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F401CEUX_FLASH.ld
index 05ad32b46d..7bf1124c00 100644
--- a/Projects/STM32F401RE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F401CEUX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F401CEUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F401CEUX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F401CEUX_FLASH.ld
index 05ad32b46d..7bf1124c00 100644
--- a/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F401CEUX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F401CEUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F401CEUX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F401CEUX_FLASH.ld
index 05ad32b46d..7bf1124c00 100644
--- a/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F401CEUX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F401CEUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F401CEUX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F401CEUX_FLASH.ld
index 05ad32b46d..7bf1124c00 100644
--- a/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F401CEUX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F401CEUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F401RETX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F401RETX_FLASH.ld
index 60b0f84242..b43bfc2efe 100644
--- a/Projects/STM32F401RE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F401RETX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F401RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F401CEUX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F401CEUX_FLASH.ld
index 05ad32b46d..7bf1124c00 100644
--- a/Projects/STM32F401RE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F401CEUX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F401CEUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F401RETX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F401RETX_FLASH.ld
index 60b0f84242..b43bfc2efe 100644
--- a/Projects/STM32F401RE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F401RETX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F401RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Templates/STM32CubeIDE/STM32F401CEUX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Templates/STM32CubeIDE/STM32F401CEUX_FLASH.ld
index 05ad32b46d..7bf1124c00 100644
--- a/Projects/STM32F401RE-Nucleo/Templates/STM32CubeIDE/STM32F401CEUX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Templates/STM32CubeIDE/STM32F401CEUX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F401RE-Nucleo/Templates_LL/STM32CubeIDE/STM32F401RETX_FLASH.ld b/Projects/STM32F401RE-Nucleo/Templates_LL/STM32CubeIDE/STM32F401RETX_FLASH.ld
index 60b0f84242..b43bfc2efe 100644
--- a/Projects/STM32F401RE-Nucleo/Templates_LL/STM32CubeIDE/STM32F401RETX_FLASH.ld
+++ b/Projects/STM32F401RE-Nucleo/Templates_LL/STM32CubeIDE/STM32F401RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/STM32CubeIDE/STM32F410RBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/STM32CubeIDE/STM32F410RBTX_FLASH.ld
index 4ae66653e3..72b39a9db3 100644
--- a/Projects/STM32F410xx-Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/STM32CubeIDE/STM32F410RBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Examples_LL/LPTIM/LPTIM_PulseCounter_Init/STM32CubeIDE/STM32F410RBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410CBUx_FLASH.ld b/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410CBUx_FLASH.ld
index 9f021f7c54..d93ec35ee7 100644
--- a/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410CBUx_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410CBUx_FLASH.ld
@@ -86,27 +86,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410RBTx_FLASH.ld b/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410RBTx_FLASH.ld
index 04285a8001..ad718dfa42 100644
--- a/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410RBTx_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410RBTx_FLASH.ld
@@ -86,27 +86,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410TBYX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410TBYX_FLASH.ld
index 7ced04a381..ba17bfc5a8 100644
--- a/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410TBYX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Templates/STM32CubeIDE/STM32F410TBYX_FLASH.ld
@@ -86,27 +86,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410CBTX_FLASH.ld b/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410CBTX_FLASH.ld
index b3732cfdc4..a0a4a187cc 100644
--- a/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410CBTX_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410CBTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410RBTx_FLASH.ld b/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410RBTx_FLASH.ld
index cb9bbb72a6..f2fc1c0ff9 100644
--- a/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410RBTx_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410RBTx_FLASH.ld
@@ -87,27 +87,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410TBYx_FLASH.ld b/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410TBYx_FLASH.ld
index cb7403541f..6b445f1e7b 100644
--- a/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410TBYx_FLASH.ld
+++ b/Projects/STM32F410xx-Nucleo/Templates_LL/STM32CubeIDE/STM32F410TBYx_FLASH.ld
@@ -86,27 +86,31 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32F411E-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index e1312e5356..7047b0d46b 100644
--- a/Projects/STM32F411E-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Demonstrations/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Demonstrations/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Demonstrations/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Demonstrations/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411E-Discovery/Templates_LL/STM32CubeIDE/STM32F411VEHX_FLASH.ld b/Projects/STM32F411E-Discovery/Templates_LL/STM32CubeIDE/STM32F411VEHX_FLASH.ld
index 0f40af582d..20e9ffad0b 100644
--- a/Projects/STM32F411E-Discovery/Templates_LL/STM32CubeIDE/STM32F411VEHX_FLASH.ld
+++ b/Projects/STM32F411E-Discovery/Templates_LL/STM32CubeIDE/STM32F411VEHX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Demonstrations/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Demonstrations/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 2ec558951b..05901f1f74 100644
--- a/Projects/STM32F411RE-Nucleo/Demonstrations/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Demonstrations/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_AnalogWatchdog/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_AnalogWatchdog/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_AnalogWatchdog/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_AnalogWatchdog/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_ContinuousConversion_TriggerSW_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_GroupsRegularInjected/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_GroupsRegularInjected/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_GroupsRegularInjected/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_GroupsRegularInjected/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_MultiChannelSingleConversion/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_MultiChannelSingleConversion/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_MultiChannelSingleConversion/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_MultiChannelSingleConversion/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerSW_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerTimer_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerTimer_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerTimer_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_SingleConversion_TriggerTimer_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_TemperatureSensor/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_TemperatureSensor/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_TemperatureSensor/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/ADC/ADC_TemperatureSensor/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/CRC/CRC_CalculateAndCheck/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/DMA/DMA_CopyFromFlashToMemory_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/EXTI/EXTI_ToggleLedOnIT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/GPIO/GPIO_InfiniteLedToggling_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_AdvCommunication_DMAAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_DMAAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_IT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_OneBoard_Communication_PollingAndIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterRx_SlaveTx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/I2C/I2C_TwoBoards_MasterTx_SlaveRx_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/IWDG/IWDG_RefreshUntilUserEvent/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/PWR/PWR_EnterStandbyMode/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/PWR/PWR_EnterStopMode/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/PWR/PWR_EnterStopMode/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/PWR/PWR_EnterStopMode/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/PWR/PWR_EnterStopMode/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_OutputSystemClockOnMCO/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_UseHSEasSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/RCC/RCC_UseHSI_PLLasSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Alarm/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Alarm/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Alarm/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Alarm/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Alarm_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Alarm_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Alarm_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Alarm_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Calendar/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Calendar/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Calendar/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Calendar/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_ExitStandbyWithWakeUpTimer/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Tamper/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Tamper/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Tamper/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_Tamper/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_DMA_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_OneBoard_HalfDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/SPI/SPI_TwoBoards_FullDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_BreakAndDeadtime/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_BreakAndDeadtime/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_BreakAndDeadtime/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_BreakAndDeadtime/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_InputCapture/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_InputCapture/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_InputCapture/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_InputCapture/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_OnePulse/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_OnePulse/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_OnePulse/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_OnePulse/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_OutputCompare/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_OutputCompare/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_OutputCompare/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_OutputCompare/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_PWMOutput_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_TimeBase/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_TimeBase/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_TimeBase/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/TIM/TIM_TimeBase/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Continuous/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Rx_IT_Init/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Tx/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Tx/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Tx/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Tx/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_TxRx_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Tx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Tx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Tx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_Communication_Tx_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_HardwareFlowControl/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_HardwareFlowControl/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_HardwareFlowControl/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_HardwareFlowControl/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_SyncCommunication_FullDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_SyncCommunication_FullDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_SyncCommunication_FullDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_SyncCommunication_FullDuplex_DMA/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_SyncCommunication_FullDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_SyncCommunication_FullDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_SyncCommunication_FullDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/USART/USART_SyncCommunication_FullDuplex_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/UTILS/UTILS_ConfigureSystemClock/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/UTILS/UTILS_ReadDeviceInfo/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_LL/WWDG/WWDG_RefreshUntilUserEvent/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/CRC/CRC_CalculateAndCheck/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/CRC/CRC_CalculateAndCheck/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/CRC/CRC_CalculateAndCheck/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/CRC/CRC_CalculateAndCheck/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/I2C/I2C_OneBoard_ComSlave7_10bits_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/PWR/PWR_STANDBY_RTC/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/PWR/PWR_STANDBY_RTC/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/PWR/PWR_STANDBY_RTC/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/PWR/PWR_STANDBY_RTC/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/PWR/PWR_STOP/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/PWR/PWR_STOP/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/PWR/PWR_STOP/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/PWR/PWR_STOP/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/SPI/SPI_HalfDuplex_ComPollingIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/TIM/TIM_6Steps/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/TIM/TIM_6Steps/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/TIM/TIM_6Steps/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/TIM/TIM_6Steps/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/TIM/TIM_PWMInput/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/UART/UART_HyperTerminal_IT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Examples_MIX/UART/UART_HyperTerminal_TxPolling_RxIT/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Templates/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Templates/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Templates/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Templates/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F411RE-Nucleo/Templates_LL/STM32CubeIDE/STM32F411RETX_FLASH.ld b/Projects/STM32F411RE-Nucleo/Templates_LL/STM32CubeIDE/STM32F411RETX_FLASH.ld
index 63b50748fb..4a236f151b 100644
--- a/Projects/STM32F411RE-Nucleo/Templates_LL/STM32CubeIDE/STM32F411RETX_FLASH.ld
+++ b/Projects/STM32F411RE-Nucleo/Templates_LL/STM32CubeIDE/STM32F411RETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 28589d4ff1..e8a05d1e16 100644
--- a/Projects/STM32F412G-Discovery/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 09dfd97df0..17c2258e9b 100644
--- a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 09dfd97df0..17c2258e9b 100644
--- a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 09dfd97df0..17c2258e9b 100644
--- a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 09dfd97df0..17c2258e9b 100644
--- a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 59ac8189b6..dd982a29dc 100644
--- a/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
index f77f025c38..92067a1177 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
@@ -17,13 +17,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,15 +37,15 @@
-
-
-
+
+
-
-
-
+
+
@@ -102,31 +102,31 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -163,6 +163,14 @@
+
+
+
+
+
+
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index ca57487e32..8f68e1d45f 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -119,13 +119,15 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -133,7 +135,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -142,7 +144,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -152,7 +154,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Mail/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Mail/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Mail/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Mail/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_SignalFromISR/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_SignalFromISR/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_SignalFromISR/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_SignalFromISR/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 4e6549d9b2..1ad09cc3c0 100644
--- a/Projects/STM32F412G-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 4e6549d9b2..1ad09cc3c0 100644
--- a/Projects/STM32F412G-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 09dfd97df0..17c2258e9b 100644
--- a/Projects/STM32F412G-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0fb3d807db..dc0869a3ae 100644
--- a/Projects/STM32F412G-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 9346ca851e..a4fe34e743 100644
--- a/Projects/STM32F412G-Discovery/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/USB_Host/AUDIO_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Applications/USB_Host/AUDIO_Standalone/Src/audio.c b/Projects/STM32F412G-Discovery/Applications/USB_Host/AUDIO_Standalone/Src/audio.c
index f303d397ea..037a9b9ec0 100644
--- a/Projects/STM32F412G-Discovery/Applications/USB_Host/AUDIO_Standalone/Src/audio.c
+++ b/Projects/STM32F412G-Discovery/Applications/USB_Host/AUDIO_Standalone/Src/audio.c
@@ -296,7 +296,7 @@ static AUDIO_ErrorTypeDef AUDIO_GetFileInfo(uint16_t file_idx,
{
uint32_t bytesread;
uint32_t duration;
- uint8_t str[FILEMGR_FILE_NAME_SIZE + 20];
+ uint8_t str[FILEMGR_FILE_NAME_SIZE + 30];
if (f_open
(&WavFile, (char *)FileList.file[file_idx].name,
diff --git a/Projects/STM32F412G-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 9346ca851e..a4fe34e743 100644
--- a/Projects/STM32F412G-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/BSP/EWARM/Project.ewp b/Projects/STM32F412G-Discovery/Examples/BSP/EWARM/Project.ewp
index 21352f79e3..edc75877d7 100644
--- a/Projects/STM32F412G-Discovery/Examples/BSP/EWARM/Project.ewp
+++ b/Projects/STM32F412G-Discovery/Examples/BSP/EWARM/Project.ewp
@@ -987,6 +987,9 @@
$PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\ft6x06\ft6x06.c
+
+ $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\ft3x67\ft3x67.c
+ $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\ls016b8uy\ls016b8uy.c
diff --git a/Projects/STM32F412G-Discovery/Examples/BSP/MDK-ARM/Project.uvprojx b/Projects/STM32F412G-Discovery/Examples/BSP/MDK-ARM/Project.uvprojx
index 4cdb80a130..0a3a532a8a 100644
--- a/Projects/STM32F412G-Discovery/Examples/BSP/MDK-ARM/Project.uvprojx
+++ b/Projects/STM32F412G-Discovery/Examples/BSP/MDK-ARM/Project.uvprojx
@@ -699,6 +699,11 @@
1../../../../../Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ ft3x67.c
+ 1
+ ../../../../../Drivers/BSP/Components/ft3x67/ft3x67.c
+
diff --git a/Projects/STM32F412G-Discovery/Examples/BSP/STM32CubeIDE/.project b/Projects/STM32F412G-Discovery/Examples/BSP/STM32CubeIDE/.project
index 03632a08b3..3c0b76cb5a 100644
--- a/Projects/STM32F412G-Discovery/Examples/BSP/STM32CubeIDE/.project
+++ b/Projects/STM32F412G-Discovery/Examples/BSP/STM32CubeIDE/.project
@@ -220,6 +220,11 @@
1PARENT-5-PROJECT_LOC/Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ Drivers/BSP/Components/ft3x67.c
+ 1
+ PARENT-5-PROJECT_LOC/Drivers/BSP/Components/ft3x67/ft3x67.c
+
Drivers/BSP/Components/ls016b8uy.c1
diff --git a/Projects/STM32F412G-Discovery/Examples/BSP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/BSP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/BSP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/BSP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 4e01b2a49f..eee4a2d960 100644
--- a/Projects/STM32F412G-Discovery/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -86,13 +86,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -100,7 +102,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/DFSDM/DFSDM_AudioRecord/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/DFSDM/DFSDM_AudioRecord/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/DFSDM/DFSDM_AudioRecord/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/DFSDM/DFSDM_AudioRecord/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/I2S/I2S_Audio/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/I2S/I2S_Audio/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/I2S/I2S_Audio/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/I2S/I2S_Audio/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 9281d6c248..eec6753210 100644
--- a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ExecuteInPlace/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -98,27 +98,31 @@ _qspi_init_base = LOADADDR(.qspi);
_qspi_end = .; /* define a global symbols at end of qspi */
} >QSPI AT> FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_MemoryMapped/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index dc7e602eb0..600579a886 100644
--- a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_PreInitConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -86,8 +86,12 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
- .ARM : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } >FLASH
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
@@ -107,20 +111,20 @@ SECTIONS
} >QSPI
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
diff --git a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/UART/UART_Printf/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/UART/UART_Printf/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/UART/UART_Printf/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/UART/UART_Printf/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Templates/EWARM/Project.ewp b/Projects/STM32F412G-Discovery/Templates/EWARM/Project.ewp
index 0ab9f4aa61..513a102f77 100644
--- a/Projects/STM32F412G-Discovery/Templates/EWARM/Project.ewp
+++ b/Projects/STM32F412G-Discovery/Templates/EWARM/Project.ewp
@@ -984,6 +984,9 @@
$PROJ_DIR$\..\..\..\..\Drivers\BSP\Components\ft6x06\ft6x06.c
+
+ $PROJ_DIR$\..\..\..\..\Drivers\BSP\Components\ft3x67\ft3x67.c
+ $PROJ_DIR$\..\..\..\..\Drivers\BSP\Components\st7789h2\st7789h2.c
diff --git a/Projects/STM32F412G-Discovery/Templates/STM32CubeIDE/.project b/Projects/STM32F412G-Discovery/Templates/STM32CubeIDE/.project
index 3473d3a59f..976e6a6729 100644
--- a/Projects/STM32F412G-Discovery/Templates/STM32CubeIDE/.project
+++ b/Projects/STM32F412G-Discovery/Templates/STM32CubeIDE/.project
@@ -390,6 +390,11 @@
1PARENT-4-PROJECT_LOC/Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ Drivers/BSP/Components/ft3x67.c
+ 1
+ PARENT-4-PROJECT_LOC/Drivers/BSP/Components/ft3x67/ft3x67.c
+
Drivers/BSP/Components/st7789h2.c1
diff --git a/Projects/STM32F412G-Discovery/Templates/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Templates/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Templates/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Templates/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412G-Discovery/Templates_LL/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412G-Discovery/Templates_LL/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412G-Discovery/Templates_LL/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412G-Discovery/Templates_LL/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 28589d4ff1..e8a05d1e16 100644
--- a/Projects/STM32F412ZG-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 09dfd97df0..17c2258e9b 100644
--- a/Projects/STM32F412ZG-Nucleo/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 157219af1f..fb86007fc1 100644
--- a/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/HID_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index f8589e143f..f2fa0b783c 100644
--- a/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/MSC_RTOS/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index f8589e143f..f2fa0b783c 100644
--- a/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Demonstrations/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Demonstrations/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 6051f21a43..4a96b524ad 100644
--- a/Projects/STM32F412ZG-Nucleo/Demonstrations/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Demonstrations/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/BSP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/BSP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 09b3daf3c9..bab5b66964 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/BSP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/BSP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 4e01b2a49f..eee4a2d960 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -86,13 +86,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -100,7 +102,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Templates/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Templates/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Templates/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Templates/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F412ZG-Nucleo/Templates_LL/STM32CubeIDE/STM32F412ZGJX_FLASH.ld b/Projects/STM32F412ZG-Nucleo/Templates_LL/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
index 0bb3c35df4..dfa36559f0 100644
--- a/Projects/STM32F412ZG-Nucleo/Templates_LL/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
+++ b/Projects/STM32F412ZG-Nucleo/Templates_LL/STM32CubeIDE/STM32F412ZGJX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index ce9cbf2df1..3dc7138098 100644
--- a/Projects/STM32F413H-Discovery/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/Display/LCD_PicturesFromSDCard/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index ce9cbf2df1..3dc7138098 100644
--- a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index ce9cbf2df1..3dc7138098 100644
--- a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk_MultipleAccess_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index ce9cbf2df1..3dc7138098 100644
--- a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_USBDisk_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index d5ce52f043..b9b7b29537 100644
--- a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index d5ce52f043..b9b7b29537 100644
--- a/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/FatFs/FatFs_uSD_RTOS/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject b/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
index 773d997f2c..5e18ec4616 100644
--- a/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
+++ b/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
@@ -17,13 +17,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,15 +37,15 @@
-
-
-
+
+
-
-
-
+
+
@@ -102,31 +102,31 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -163,6 +163,14 @@
+
+
+
+
+
+
diff --git a/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 41bcedf63f..27e2eedf1d 100644
--- a/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -116,13 +116,15 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -130,7 +132,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -139,7 +141,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -149,7 +151,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index ce9cbf2df1..3dc7138098 100644
--- a/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index c52a36857a..64140765d4 100644
--- a/Projects/STM32F413H-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index c52a36857a..64140765d4 100644
--- a/Projects/STM32F413H-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 5f835e3485..985a59d568 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Device/HID_BCD_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/USB_Device/HID_BCD_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index d5ce52f043..b9b7b29537 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Device/HID_BCD_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Device/HID_BCD_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index d5ce52f043..b9b7b29537 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index ce9cbf2df1..3dc7138098 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/EWARM/USBH_HID.ewp b/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/EWARM/USBH_HID.ewp
index 6b85116f20..4a2f03abcb 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/EWARM/USBH_HID.ewp
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/EWARM/USBH_HID.ewp
@@ -1018,6 +1018,9 @@
$PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\Components\ft6x06\ft6x06.c
+
+ $PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\Components\ft3x67\ft3x67.c
+ $PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\Components\st7789h2\st7789h2.c
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/MDK-ARM/Project.uvprojx b/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/MDK-ARM/Project.uvprojx
index 93be8e2ac6..79b2778bcd 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/MDK-ARM/Project.uvprojx
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/MDK-ARM/Project.uvprojx
@@ -399,6 +399,11 @@
1../../../../../../Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ ft3x67.c
+ 1
+ ../../../../../../Drivers/BSP/Components/ft3x67/ft3x67.c
+
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/.project b/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/.project
index 548b29199f..799549202c 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/.project
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/.project
@@ -175,6 +175,11 @@
1PARENT-6-PROJECT_LOC/Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ Drivers/BSP/Components/ft3x67.c
+ 1
+ PARENT-6-PROJECT_LOC/Drivers/BSP/Components/ft3x67/ft3x67.c
+
Drivers/BSP/Components/st7789h2.c1
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index ce9cbf2df1..3dc7138098 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/EWARM/USBH_MSC.ewp b/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/EWARM/USBH_MSC.ewp
index eb029741e3..b6636f7dc8 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/EWARM/USBH_MSC.ewp
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/EWARM/USBH_MSC.ewp
@@ -1022,6 +1022,9 @@
$PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\Components\ft6x06\ft6x06.c
+
+ $PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\Components\ft3x67\ft3x67.c
+ $PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\Components\st7789h2\st7789h2.c
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/MDK-ARM/Project.uvprojx b/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/MDK-ARM/Project.uvprojx
index c1f79493f8..dc93df885a 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/MDK-ARM/Project.uvprojx
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/MDK-ARM/Project.uvprojx
@@ -402,6 +402,11 @@
1../../../../../../Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ ft3x67.c
+ 1
+ ../../../../../../Drivers/BSP/Components/ft3x67/ft3x67.c
+
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/.project b/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/.project
index 5f4c72bbfb..1de846c0e3 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/.project
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/.project
@@ -180,6 +180,11 @@
1PARENT-6-PROJECT_LOC/Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ Drivers/BSP/Components/ft3x67.c
+ 1
+ PARENT-6-PROJECT_LOC/Drivers/BSP/Components/ft3x67/ft3x67.c
+
Drivers/BSP/Components/st7789h2.c1
diff --git a/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index c2b974de86..3cd28d13e9 100644
--- a/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/WIFI/WiFi_Client_Server/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/WIFI/WiFi_Client_Server/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index a7b283f29b..bad5cfd385 100644
--- a/Projects/STM32F413H-Discovery/Applications/WIFI/WiFi_Client_Server/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/WIFI/WiFi_Client_Server/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Applications/WIFI/WiFi_HTTP_Server/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Applications/WIFI/WiFi_HTTP_Server/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index a7b283f29b..bad5cfd385 100644
--- a/Projects/STM32F413H-Discovery/Applications/WIFI/WiFi_HTTP_Server/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Applications/WIFI/WiFi_HTTP_Server/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/BSP/EWARM/Project.ewp b/Projects/STM32F413H-Discovery/Examples/BSP/EWARM/Project.ewp
index 45ba36b3c5..8e992ec09c 100644
--- a/Projects/STM32F413H-Discovery/Examples/BSP/EWARM/Project.ewp
+++ b/Projects/STM32F413H-Discovery/Examples/BSP/EWARM/Project.ewp
@@ -2143,15 +2143,9 @@
Components$PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\ft3x67\ft3x67.c
-
- STM32F413H_DISCOVERY
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\ft6x06\ft6x06.c
-
- USE_STM32F413H_DISCOVERY_REVE
- $PROJ_DIR$\..\..\..\..\..\Drivers\BSP\Components\st7789h2\st7789h2.c
diff --git a/Projects/STM32F413H-Discovery/Examples/BSP/MDK-ARM/Project.uvprojx b/Projects/STM32F413H-Discovery/Examples/BSP/MDK-ARM/Project.uvprojx
index 264c640683..675da9a783 100644
--- a/Projects/STM32F413H-Discovery/Examples/BSP/MDK-ARM/Project.uvprojx
+++ b/Projects/STM32F413H-Discovery/Examples/BSP/MDK-ARM/Project.uvprojx
@@ -404,7 +404,7 @@
000
- 0
+ 1222
@@ -454,6 +454,11 @@
1../../../../../Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ ft3x67.c
+ 1
+ ../../../../../Drivers/BSP/Components/ft3x67/ft3x67.c
+ st7789h2.c1
@@ -1197,7 +1202,7 @@
000
- 0
+ 1222
diff --git a/Projects/STM32F413H-Discovery/Examples/BSP/STM32CubeIDE/.project b/Projects/STM32F413H-Discovery/Examples/BSP/STM32CubeIDE/.project
index 9411f315cd..85a92f8268 100644
--- a/Projects/STM32F413H-Discovery/Examples/BSP/STM32CubeIDE/.project
+++ b/Projects/STM32F413H-Discovery/Examples/BSP/STM32CubeIDE/.project
@@ -255,6 +255,11 @@
1PARENT-5-PROJECT_LOC/Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ Drivers/BSP/Components/ft3x67.c
+ 1
+ PARENT-5-PROJECT_LOC/Drivers/BSP/Components/ft3x67/ft3x67.c
+
Drivers/BSP/Components/st7789h2.c1
diff --git a/Projects/STM32F413H-Discovery/Examples/BSP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/BSP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 4440d6a9c2..7d347c9c9f 100644
--- a/Projects/STM32F413H-Discovery/Examples/BSP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/BSP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/DFSDM/DFSDM_PulseSkipper/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/DFSDM/DFSDM_PulseSkipper/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/DFSDM/DFSDM_PulseSkipper/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/DFSDM/DFSDM_PulseSkipper/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/FLASH/FLASH_WriteProtection/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/FMC/FMC_PSRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/FMC/FMC_PSRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/FMC/FMC_PSRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/FMC/FMC_PSRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/FMC/FMC_PSRAM_PreInitConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/FMC/FMC_PSRAM_PreInitConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 5647d2141d..a9c7988e00 100644
--- a/Projects/STM32F413H-Discovery/Examples/FMC/FMC_PSRAM_PreInitConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/FMC/FMC_PSRAM_PreInitConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/QSPI/QSPI_ReadWrite_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/QSPI/QSPI_ReadWrite_IT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/RTC/RTC_TimeStamp/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Examples/UART/UART_Printf/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Examples/UART/UART_Printf/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Examples/UART/UART_Printf/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Examples/UART/UART_Printf/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Templates/EWARM/Project.ewp b/Projects/STM32F413H-Discovery/Templates/EWARM/Project.ewp
index b2c457631a..8c91596ae1 100644
--- a/Projects/STM32F413H-Discovery/Templates/EWARM/Project.ewp
+++ b/Projects/STM32F413H-Discovery/Templates/EWARM/Project.ewp
@@ -983,6 +983,9 @@
$PROJ_DIR$\..\..\..\..\Drivers\BSP\Components\ft6x06\ft6x06.c
+
+ $PROJ_DIR$\..\..\..\..\Drivers\BSP\Components\ft3x67\ft3x67.c
+ $PROJ_DIR$\..\..\..\..\Drivers\BSP\Components\st7789h2\st7789h2.c
diff --git a/Projects/STM32F413H-Discovery/Templates/MDK-ARM/Project.uvprojx b/Projects/STM32F413H-Discovery/Templates/MDK-ARM/Project.uvprojx
index e220970ccc..808a79de42 100644
--- a/Projects/STM32F413H-Discovery/Templates/MDK-ARM/Project.uvprojx
+++ b/Projects/STM32F413H-Discovery/Templates/MDK-ARM/Project.uvprojx
@@ -385,6 +385,11 @@
1../../../../Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ ft3x67.c
+ 1
+ ../../../../Drivers/BSP/Components/ft3x67/ft3x67.c
+ st7789h2.c1
diff --git a/Projects/STM32F413H-Discovery/Templates/STM32CubeIDE/.project b/Projects/STM32F413H-Discovery/Templates/STM32CubeIDE/.project
index 1ed773be05..346fe13fd8 100644
--- a/Projects/STM32F413H-Discovery/Templates/STM32CubeIDE/.project
+++ b/Projects/STM32F413H-Discovery/Templates/STM32CubeIDE/.project
@@ -390,6 +390,11 @@
1PARENT-4-PROJECT_LOC/Drivers/BSP/Components/ft6x06/ft6x06.c
+
+ Drivers/BSP/Components/ft3x67.c
+ 1
+ PARENT-4-PROJECT_LOC/Drivers/BSP/Components/ft3x67/ft3x67.c
+
Drivers/BSP/Components/st7789h2.c1
diff --git a/Projects/STM32F413H-Discovery/Templates/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Templates/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Templates/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Templates/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413H-Discovery/Templates_LL/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413H-Discovery/Templates_LL/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413H-Discovery/Templates_LL/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413H-Discovery/Templates_LL/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 31336af75b..f7c68505c3 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index d5ce52f043..b9b7b29537 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FatFs/FatFs_uSD/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_LowPower/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
index e5c5481a0c..bdf2e2edbe 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
@@ -17,13 +17,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,15 +37,15 @@
-
-
-
+
+
-
-
-
+
+
@@ -98,31 +98,31 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -155,8 +155,17 @@
+
+
+
+
+
+
+
@@ -173,4 +182,6 @@
+
+
\ No newline at end of file
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 1e51e7f571..5c358420ff 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -119,13 +119,15 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -133,7 +135,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -142,7 +144,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -152,7 +154,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Mail/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Mutexes/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Queues/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Semaphore/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_SemaphoreFromISR/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Signal/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_SignalFromISR/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/FreeRTOS/FreeRTOS_Timers/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 833d27e883..bbb77dc09c 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index a7b283f29b..bad5cfd385 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/USB_Device/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index c2b974de86..3cd28d13e9 100644
--- a/Projects/STM32F413ZH-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Demonstrations/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Demonstrations/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 7c2e5f3cf3..fa1af6c48d 100644
--- a/Projects/STM32F413ZH-Nucleo/Demonstrations/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Demonstrations/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/ADC/ADC_RegularConversion_Polling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/BSP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/BSP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 4440d6a9c2..7d347c9c9f 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/BSP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/BSP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index e24b1ef445..515f554b82 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -86,13 +86,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -100,7 +102,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_ModePrivilege/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_ProcessStack/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_ProcessStack/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_ProcessStack/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_ProcessStack/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/DMA/DMA_FIFOMode/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_STANDBY/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/PWR/PWR_STOP/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/RNG/RNG_MultiRNG/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Alarm/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_AdvComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/SRAM/SRAM_ExecuteInPlace/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/SRAM/SRAM_ExecuteInPlace/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index c26d3cc855..6e2e421829 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/SRAM/SRAM_ExecuteInPlace/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/SRAM/SRAM_ExecuteInPlace/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Templates/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Templates/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Templates/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Templates/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F413ZH-Nucleo/Templates_LL/STM32CubeIDE/STM32F413ZHTX_FLASH.ld b/Projects/STM32F413ZH-Nucleo/Templates_LL/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
index 0f20e458af..3cc9583699 100644
--- a/Projects/STM32F413ZH-Nucleo/Templates_LL/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
+++ b/Projects/STM32F413ZH-Nucleo/Templates_LL/STM32CubeIDE/STM32F413ZHTX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/Display/LTDC_AnimatedPictureFromUSB/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/Display/LTDC_AnimatedPictureFromUSB/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 9bcbf10ab0..4b2582a514 100644
--- a/Projects/STM32F429I-Discovery/Applications/Display/LTDC_AnimatedPictureFromUSB/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/Display/LTDC_AnimatedPictureFromUSB/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/Display/LTDC_Paint/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/Display/LTDC_Paint/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 283ed5cdad..f230ba46af 100644
--- a/Projects/STM32F429I-Discovery/Applications/Display/LTDC_Paint/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/Display/LTDC_Paint/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/FatFs/FatFs_RAMDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 4a860e2492..2c731d3548 100644
--- a/Projects/STM32F429I-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject b/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
index 8ad347d4b2..92bcc25202 100644
--- a/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
+++ b/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/.cproject
@@ -17,13 +17,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -37,15 +37,15 @@
-
-
-
+
+
-
-
-
+
+
@@ -101,31 +101,31 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -161,6 +161,14 @@
+
+
+
+
+
+
diff --git a/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index f95aa387a8..1c531d3837 100644
--- a/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -119,13 +119,15 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -133,7 +135,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -142,7 +144,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -152,7 +154,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/FreeRTOS/FreeRTOS_ThreadCreation/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index f1a8c824df..a9bc4e94bc 100644
--- a/Projects/STM32F429I-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/LibJPEG/LibJPEG_Decoding/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 51ae89df27..72d6b5b123 100644
--- a/Projects/STM32F429I-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/LibJPEG/LibJPEG_Encoding/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index f7f1709f64..7e53dc5e21 100644
--- a/Projects/STM32F429I-Discovery/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Applications/USB_Host/FWupgrade_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/BSP/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/BSP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/BSP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/BSP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/DAC/DAC_SignalsGeneration/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithBlending/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/DMA2D/DMA2D_MemToMemWithPFC/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/FMC/FMC_SDRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/FMC/FMC_SDRAM_LowPower/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F439BGTX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F439BGTX_FLASH.ld
index ccc339ba89..5b48d53a6f 100644
--- a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F439BGTX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_AdvComIT/STM32CubeIDE/STM32F439BGTX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_RestartAdvComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/I2C/I2C_TwoBoards_RestartComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/LTDC/LTDC_Display_2Layers/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/LTDC/LTDC_Display_2Layers/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/LTDC/LTDC_Display_2Layers/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/LTDC/LTDC_Display_2Layers/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/SPI/SPI_FullDuplex_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/TIM/TIM_TimeBase/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComIT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Examples/UART/UART_TwoBoards_ComPolling/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Templates/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Templates/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Templates/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Templates/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429I-Discovery/Templates_LL/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429I-Discovery/Templates_LL/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429I-Discovery/Templates_LL/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429I-Discovery/Templates_LL/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index bcf519e0a1..dda1d0907f 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h b/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
index 38dd787306..1ac86088db 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
+++ b/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Inc/lwipopts.h
@@ -49,7 +49,7 @@ a lot of data that needs to be copied, this should be set high. */
#define MEMP_NUM_TCP_PCB_LISTEN 5
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
segments. */
-#define MEMP_NUM_TCP_SEG 8
+#define MEMP_NUM_TCP_SEG TCP_SND_QUEUELEN
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
timeouts. */
#define MEMP_NUM_SYS_TIMEOUT 10
@@ -77,11 +77,6 @@ a lot of data that needs to be copied, this should be set high. */
/* TCP sender buffer space (bytes). */
#define TCP_SND_BUF (4*TCP_MSS)
-/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
- as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
-
-#define TCP_SND_QUEUELEN (2* TCP_SND_BUF/TCP_MSS)
-
/* TCP receive window. */
#define TCP_WND (2*TCP_MSS)
@@ -175,6 +170,16 @@ The STM32F4xx allows computing and verifying the IP, UDP, TCP and ICMP checksums
*/
#define LWIP_SOCKET 0
+/*
+ ------------------------------------
+ ---------- LWIP_NETIF_API options ----------
+ ------------------------------------
+*/
+/**
+ * LWIP_NETIF_API==1: Enable NETIF API
+ */
+#define LWIP_NETIF_API 1
+
/*
------------------------------------
---------- httpd options ----------
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index b3d632afc2..d1da2d888e 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c b/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
index 11c7ea801f..8d19c4d372 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
+++ b/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/app_ethernet.c
@@ -26,6 +26,7 @@
#ifdef USE_LCD
#include "lcd_log.h"
#endif
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
@@ -106,7 +107,7 @@ void DHCP_Thread(void const * argument)
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
#endif
- dhcp_start(netif);
+ netifapi_dhcp_start(netif);
}
break;
case DHCP_WAIT_ADDRESS:
@@ -136,7 +137,7 @@ void DHCP_Thread(void const * argument)
IP_ADDR4(&ipaddr, IP_ADDR0 ,IP_ADDR1 , IP_ADDR2 , IP_ADDR3 );
IP_ADDR4(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP_ADDR4(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
- netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
+ netifapi_netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
#ifdef USE_LCD
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c b/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
index 63bc4f7de2..f185506e09 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
+++ b/Projects/STM32F429ZI-Nucleo/Applications/LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/ethernetif.c
@@ -26,11 +26,14 @@
#include "ethernetif.h"
#include "../Components/lan8742/lan8742.h"
#include
+#include "lwip/netifapi.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
#define TIME_WAITING_FOR_INPUT ( osWaitForever )
+/* Time to block waiting for transmissions to finish */
+#define ETHIF_TX_TIMEOUT (2000U)
/* Stack size of the interface thread */
#define INTERFACE_THREAD_STACK_SIZE ( 512 )
@@ -49,7 +52,7 @@
/* Private variables ---------------------------------------------------------*/
/*
@Note: This interface is implemented to operate in zero-copy mode only:
- - Rx Buffers will be allocated from LwIP stack memory heap,
+ - Rx Buffers will be allocated from LwIP stack Rx memory pool,
then passed to ETH HAL driver.
- Tx Buffers will be allocated from LwIP stack memory heap,
then passed to ETH HAL driver.
@@ -183,7 +186,12 @@ static void low_level_init(struct netif *netif)
LAN8742_RegisterBusIO(&LAN8742, &LAN8742_IOCtx);
/* Initialize the LAN8742 ETH PHY */
- LAN8742_Init(&LAN8742);
+ if(LAN8742_Init(&LAN8742) != LAN8742_STATUS_OK)
+ {
+ netif_set_link_down(netif);
+ netif_set_down(netif);
+ return;
+ }
PHYLinkState = LAN8742_GetLinkState(&LAN8742);
@@ -287,13 +295,29 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
- HAL_ETH_Transmit_IT(&EthHandle, &TxConfig);
-
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ do
{
- }
-
- HAL_ETH_ReleaseTxPacket(&EthHandle);
+ if(HAL_ETH_Transmit_IT(&EthHandle, &TxConfig) == HAL_OK)
+ {
+ errval = ERR_OK;
+ }
+ else
+ {
+ if(HAL_ETH_GetError(&EthHandle) & HAL_ETH_ERROR_BUSY)
+ {
+ /* Wait for descriptors to become available */
+ osSemaphoreWait( TxPktSemaphore, ETHIF_TX_TIMEOUT);
+ HAL_ETH_ReleaseTxPacket(&EthHandle);
+ errval = ERR_BUF;
+ }
+ else
+ {
+ /* Other error */
+ pbuf_free(p);
+ errval = ERR_IF;
+ }
+ }
+ }while(errval == ERR_BUF);
return errval;
}
@@ -606,8 +630,8 @@ void ethernet_link_thread( void const * argument )
if(netif_is_link_up(netif) && (PHYLinkState <= LAN8742_STATUS_LINK_DOWN))
{
HAL_ETH_Stop_IT(&EthHandle);
- netif_set_down(netif);
- netif_set_link_down(netif);
+ netifapi_netif_set_down(netif);
+ netifapi_netif_set_link_down(netif);
}
else if(!netif_is_link_up(netif) && (PHYLinkState > LAN8742_STATUS_LINK_DOWN))
{
@@ -645,8 +669,8 @@ void ethernet_link_thread( void const * argument )
MACConf.Speed = speed;
HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
HAL_ETH_Start_IT(&EthHandle);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ netifapi_netif_set_up(netif);
+ netifapi_netif_set_link_up(netif);
}
}
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 6b97dc7d9f..03061c64f5 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index d2fa1c1208..a8e0d41971 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index eaa4035823..834cbbe1f2 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index eaa4035823..834cbbe1f2 100644
--- a/Projects/STM32F429ZI-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Demonstrations/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Demonstrations/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 6e674b9da3..7312464729 100644
--- a/Projects/STM32F429ZI-Nucleo/Demonstrations/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Demonstrations/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/BSP/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/BSP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index bcf519e0a1..dda1d0907f 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/BSP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/BSP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 1beaddafb9..0a6919d59c 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -88,13 +88,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -102,7 +104,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -111,7 +113,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -121,7 +123,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index d2fa1c1208..a8e0d41971 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index d2fa1c1208..a8e0d41971 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index d2fa1c1208..a8e0d41971 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index d2fa1c1208..a8e0d41971 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index d2fa1c1208..a8e0d41971 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index d2fa1c1208..a8e0d41971 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index bcf519e0a1..dda1d0907f 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index bcf519e0a1..dda1d0907f 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index bcf519e0a1..dda1d0907f 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index bcf519e0a1..dda1d0907f 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index bcf519e0a1..dda1d0907f 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index bcf519e0a1..dda1d0907f 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index bcf519e0a1..dda1d0907f 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index d2fa1c1208..a8e0d41971 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/UART/UART_ReceptionToIdle_CircularDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/UART/UART_ReceptionToIdle_CircularDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/UART/UART_ReceptionToIdle_CircularDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/UART/UART_ReceptionToIdle_CircularDMA/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples_LL/CORTEX/CORTEX_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples_LL/CORTEX/CORTEX_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples_LL/CORTEX/CORTEX_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples_LL/CORTEX/CORTEX_MPU/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateConstantSignal_TriggerSW/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateConstantSignal_TriggerSW/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateConstantSignal_TriggerSW/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateConstantSignal_TriggerSW/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateWaveform_TriggerHW/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateWaveform_TriggerHW/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateWaveform_TriggerHW/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateWaveform_TriggerHW/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateWaveform_TriggerHW_Init/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateWaveform_TriggerHW_Init/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateWaveform_TriggerHW_Init/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples_LL/DAC/DAC_GenerateWaveform_TriggerHW_Init/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples_LL/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples_LL/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples_LL/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples_LL/DMA2D/DMA2D_MemoryToMemory/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples_LL/RNG/RNG_GenerateRandomNumbers_IT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples_MIX/ADC/ADC_SingleConversion_TriggerSW_IT/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples_MIX/ADC/ADC_SingleConversion_TriggerSW_IT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples_MIX/ADC/ADC_SingleConversion_TriggerSW_IT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples_MIX/ADC/ADC_SingleConversion_TriggerSW_IT/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Examples_MIX/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Examples_MIX/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Examples_MIX/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Examples_MIX/DMA2D/DMA2D_MemToMemWithLCD/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Templates/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Templates/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Templates/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Templates/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F429ZI-Nucleo/Templates_LL/STM32CubeIDE/STM32F429ZITX_FLASH.ld b/Projects/STM32F429ZI-Nucleo/Templates_LL/STM32CubeIDE/STM32F429ZITX_FLASH.ld
index 33f3577d12..4476e88180 100644
--- a/Projects/STM32F429ZI-Nucleo/Templates_LL/STM32CubeIDE/STM32F429ZITX_FLASH.ld
+++ b/Projects/STM32F429ZI-Nucleo/Templates_LL/STM32CubeIDE/STM32F429ZITX_FLASH.ld
@@ -87,13 +87,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -101,7 +103,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Applications/EEPROM/EEPROM_Emulation/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index c6505353ce..dbd2007e6a 100644
--- a/Projects/STM32F446ZE-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Applications/FatFs/FatFs_USBDisk/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 6b37b5cce8..3a67f9130f 100644
--- a/Projects/STM32F446ZE-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Applications/USB_Device/DFU_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Applications/USB_Device/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Applications/USB_Host/HID_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 169717c22b..40e0ff3afd 100644
--- a/Projects/STM32F446ZE-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Applications/USB_Host/MSC_Standalone/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Demonstrations/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Demonstrations/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index ff98658a41..991628a98d 100644
--- a/Projects/STM32F446ZE-Nucleo/Demonstrations/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Demonstrations/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/ADC/ADC_RegularConversion_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/ADC/ADC_RegularConversion_Interrupt/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/BSP/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/BSP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index c6505353ce..dbd2007e6a 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/BSP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/BSP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/CRC/CRC_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 2faa87e700..8af3dc6d97 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/Cortex/CORTEXM_MPU/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -86,13 +86,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -100,7 +102,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/Cortex/CORTEXM_SysTick/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/DMA/DMA_FLASHToRAM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/FLASH/FLASH_EraseProgram/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index c6505353ce..dbd2007e6a 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/GPIO/GPIO_EXTI/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index c6505353ce..dbd2007e6a 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/GPIO/GPIO_IOToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_ALARM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_RTC_WKUP/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/HAL/HAL_TimeBase_TIM/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/IWDG/IWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/PWR/PWR_CurrentConsumption/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/RCC/RCC_ClockConfig/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/RTC/RTC_Calendar/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/RTC/RTC_Tamper/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_DMA/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_InputCapture/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OCActive/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OCToggle/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_OnePulse/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_PWMInput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/TIM/TIM_PWMOutput/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/UART/UART_Printf/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 33e1b9b262..8da09cb4c1 100644
--- a/Projects/STM32F446ZE-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Examples/WWDG/WWDG_Example/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Templates/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Templates/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Templates/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Templates/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Projects/STM32F446ZE-Nucleo/Templates_LL/STM32CubeIDE/STM32F446ZETX_FLASH.ld b/Projects/STM32F446ZE-Nucleo/Templates_LL/STM32CubeIDE/STM32F446ZETX_FLASH.ld
index 19d2357415..5e9745e513 100644
--- a/Projects/STM32F446ZE-Nucleo/Templates_LL/STM32CubeIDE/STM32F446ZETX_FLASH.ld
+++ b/Projects/STM32F446ZE-Nucleo/Templates_LL/STM32CubeIDE/STM32F446ZETX_FLASH.ld
@@ -85,13 +85,15 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .ARM.extab : {
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >ROM
- .ARM : {
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
@@ -99,7 +101,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .preinit_array :
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .init_array :
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@ SECTIONS
. = ALIGN(4);
} >ROM
- .fini_array :
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/README.md b/README.md
index e3280cba53..d63445b6c4 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,8 @@
![latest tag](https://img.shields.io/github/v/tag/STMicroelectronics/STM32CubeF4.svg?color=brightgreen)
-## Important note
-
-This repository has been created using the `git submodule` command. Please refer to the ["How to use"](README.md#how-to-use) section for more details.
+> [!IMPORTANT]
+> This repository has been created using the `git submodule` command. Please refer to the ["How to use"](README.md#how-to-use) section for more details.
## Overview
@@ -19,14 +18,15 @@ This repository has been created using the `git submodule` command. Please refer
The **STM32CubeF4 MCU Package** projects are directly running on the STM32F4 series boards. You can find in each Projects/*Board name* directories a set of software projects (Applications/Demonstration/Examples).
-## Some middleware libraries are unavailable in this repository
-
-In this repository, the middleware libraries listed below **along with** the projects (demos, applications, and examples) using them, are **not available** as they (the middleware libraries) are subject to some restrictive license terms requiring the user's approval via a "click thru" procedure.
-* `./Middlewares/ST/STM32_Audio`
-* `./Middlewares/ST/STemWin`
-* `./Middlewares/ST/TouchGFX`
-
-If needed, they can be found inside the full firmware package available on our website `st.com` and downloadable from [here](https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32cube-mcu-mpu-packages/stm32cubef4.html#get-software). You will be prompted to login or to register in case you have no account.
+> [!NOTE]
+> ## Some middleware libraries and projects are unavailable in this repository
+>
+> In this repository, the middleware libraries listed below **along with** [this](Projects/README.md#list-of-unavailable-projects) list of projects (demos, applications, and examples) using them, are **not available** as they (the middleware libraries) are subject to some restrictive license terms requiring the user's approval via a "click thru" procedure.
+> * `./Middlewares/ST/STM32_Audio`
+> * `./Middlewares/ST/STemWin`
+> * `./Middlewares/ST/TouchGFX`
+>
+> If needed, they can be found inside the full firmware package available on our website `st.com` and downloadable from [here](https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32cube-mcu-mpu-packages/stm32cubef4.html#get-software). You will be prompted to login or to register in case you have no account.
## Release note
@@ -34,7 +34,7 @@ Details about the content of this release are available in the release note [her
## How to use
-This repository has been created using the `git submodule` command. Please check the instructions below for proper use. Please check also the [notes](README.md#notes) at the end of this section for further information.
+This repository has been created using the `git submodule` command. Please check the instructions below for proper use. Please check also **the notes at the end of this section** for further information.
1. To **clone** this repository along with the linked submodules, option `--recursive` has to be specified as shown below.
@@ -61,11 +61,10 @@ git checkout vX.Y.Z # Specify the targeted vX.Y.Z version
git clone --recursive --depth 1 --branch vX.Y.Z https://github.com/STMicroelectronics/STM32CubeF4.git
```
-#### Notes
-
-* The latest version of this firmware available on GitHub may be **ahead** of the one available on [st.com](https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html) or via [STM32CubeMX](https://www.st.com/en/development-tools/stm32cubemx.html). This is due to the **rolling release** process deployed on GitHub. Please refer to [this](https://github.com/STMicroelectronics/STM32Cube_MCU_Overall_Offer/discussions/21) post for more details.
-* Option `--depth 1` specified in instruction (4) above is **not** mandatory. It may be useful to skip downloading all previous commits up to the one corresponding to the targeted version.
-* If GitHub "Download ZIP" option is used instead of the `git clone` command, then the different submodules have to be collected and added **manually**.
+> [!NOTE]
+> * The latest version of this firmware available on GitHub may be **ahead** of the one available on [st.com](https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html) or via [STM32CubeMX](https://www.st.com/en/development-tools/stm32cubemx.html). This is due to the **rolling release** process deployed on GitHub. Please refer to [this](https://github.com/STMicroelectronics/STM32Cube_MCU_Overall_Offer/discussions/21) post for more details.
+> * Option `--depth 1` specified in instruction (4) above is **not** mandatory. It may be useful to skip downloading all previous commits up to the one corresponding to the targeted version.
+> * If GitHub "Download ZIP" option is used instead of the `git clone` command, then the different submodules have to be collected and added **manually**.
## Boards available
diff --git a/Release_Notes.html b/Release_Notes.html
index 58daf9f317..25e8070e24 100644
--- a/Release_Notes.html
+++ b/Release_Notes.html
@@ -37,7 +37,7 @@
Purpose
A consistent set of middleware components such as RTOS, USB, TCP/IP, Graphics
All embedded software utilities come with a full set of examples.
-
The STM32Cube firmware solution offers a straightforward API with a modular architecture, making it simple to fine tune custom applications and scalable to fit most requirements
+
The STM32Cube firmware solution offers a straightforward API with a modular architecture, making it simple to fine tune custom applications and scalable to fit most requirements
The HAL (Hardware Abstraction Layer) drivers provided within this package supports the STM32F405/415/407/417/427/437/429/439/401xC/401xE/ 411xC/411xE/412x/413/423/446/469/479/410xx Lines
@@ -60,12 +60,595 @@
Purpose
Update History
-
+
Maintenance release
Main Changes
General updates to fix known defects and implementation enhancements.
+
Patch release to deploy HAL Ethernet enhancements.
+
General fixes to support GCC11 and GCC12 in all STM32CubeIDE projects.
+
Upgrade USB Device Lib to use V2.11.3.
+
Upgrade USB Host Lib to use V3.5.2.
+
CMSIS
+
+
Add MCO2PRE[2:0] and MCO2[1:0] bits definition within CMSIS files.
+
+
HAL
+
+
Enhance HAL code quality for MISRA-C Rule-8.13 by adding const qualifiers.
+
HAL Generic
+
+
Update stm32h7xx_hal_conf_template.h file to support legacy HAL ETH driver.
+
+
HAL/LL ADC
+
+
Add macro UNUSED() to avoid the generation of a warning related to the unused argument ‘hadc’.
+
+
HAL RCC
+
+
Remove duplicate macro definition __HAL_RCC_AHB2_FORCE_RESET() for STM32F423xx devices.
+
+
HAL EXTI
+
+
Add macro UNUSED() to avoid the generation of a warning related to the unused argument ‘Edge’.
+
+
HAL HASH
+
+
Read the last remaining bytes (3 or 2 or 1) of the data in a temporary variable (taking into account swap mode) and enter this variable into the HASH->DIN when the data is not a multiple of 4 bytes.
+
+
HAL FLASH
+
+
Remove HAL_LOCK()/HAL_UNLOCK() APIs from HAL_FLASH_Program_IT() and HAL_FLASHEx_Erase_IT() APIs.
+
+
LL DMA
+
+
Fix typo in LL_DMA_GetCurrentTargetMem() API.
+
+
HAL LPTIM
+
+
Remove redundant macro IS_LPTIM_AUTORELOAD().
+
+
HAL/LL CORTEX
+
+
Updated HAL_MPU_ConfigRegion() API to allow the configuration of the MPU registers independently of the value of Enable/Disable field.
+
Add new HAL_MPU_EnableRegion() / HAL_MPU_DisableRegion() APIs.
+
Add missing parenthesis() in LL_MPU_ConfigRegion() API.
+
+
HAL DSI
+
+
Align DSI Initialization sequence to the recommended ‘Programing procedure overview’ part to avoid DSI read LCD controller register 0x0A error.
+
+
HAL QSPI
+
+
Clear the QSPI.AR register when sCommand.AddressMode is QSPI_ADDRESS_NONE.
+
+
HAL I2S
+
+
Update HAL I2S driver to fix misplaced __HAL_LOCK() API and remove ‘go to’ instruction.
+
+
HAL SPI
+
+
Update HAL SPI driver to remove “got to†instruction and avoid misplaced __HAL_LOCK() API issue.
+
+
HAL UART
+
+
Rework of UART_WaitOnFlagUntilTimeout() API to avoid being stuck forever when UART overrun error occurs and to enhance behavior.
+
+
HAL ETH
+
+
Add missing system time in different PTP APIs.
+
Rename ETH_TxPacketConfig_t to ETH_TxPacketConfigTypeDef.
+
Update ETH_Start_IT sequence.
+
Update the PTP configuration state macros and Fix the wrong Doxygen comment descriptions.
+
Fix wrong Ethernet constant definitions .
+
Add condition to get the Timestamp only when it was captured (Check on Last Descriptor and TimeStamp flag set).
+
Replace ETH_RX_BUF_SIZE define in ETH_UpdateDescriptor() and ETH_DMARxDescListInit() by Init.RxBuffLen.
+
Get the latest buffer length received and not the predefined ethernet frame length.
+
Update HAL_ETH_SetMDIOClockRange API to manage different frequency ranges.
+
Remove multiple volatile reads or writes in interrupt handler for better performance.
+
Move the MMC interrupts disable section from HAL_ETH_Start_IT() to HAL_ETH_Init().
+
Change the way to increment the descriptor index within HAL_ETH_ReleaseTxPacket().
+
Update the entry to critical section without enabling unwanted global interrupts.
+
Add support of CRC stripping for Type frames (CSTF) feature.
+
Fix MisraC-2012 and MCU ASTYLE warnings and remove empty lines.
+
+
HAL USB
+
+
Ensure to reactivate the usb channel in case of transfer error.
+
+
LL UTILS
+
+
Fix a note about Ticks parameter.
+
+
+
BSP
+
+
BSP Boards
+
+
STM32F413H-Discovery
+
+
Update to manage touch screen components (ft6x06 & ft3x67) available on different STM32F413H-Discovery board revisions in dynamic approach.
+
+
STM32412G-Discovery
+
+
Update to manage touch screen components (ft6x06 & ft3x67) available on different STM32412G-Discovery board revisions in dynamic approach.
+
+
STM32469I-Discovery
+
+
Update to manage lcd controller components (nt35510 & otm8009a) available on different STM32469I-Discovery board revisions in dynamic approach.
+
+
+
BSP Components
+
+
nt35510
+
+
Fix setting of DPRSLCTR register.
+
+
lan8742
+
+
Remove unnecessary delay in PHY driver.
+
+
+
+
Middlewares
+
+
Upgrade USB Device Lib to use V2.11.3.
+
Upgrade USB Host Lib to use V3.5.2.
+
+
Projects
+
+
Applications MW LwIP
+
+
Fix Confusing comment in ethernet_if.
+
Fix Wrong use of DHCP API in application code & ethernet_link_thread() API.
+
Fix Ethernet low_level_init() API does not handle return code from LAN8742_init() API.
+
+
Examples I2C
+
+
Fix wrong check condition on HAL_TIMEOUT: this value is no longer returned by the HAL_I2C_IsDeviceReady() API.
+
+
+
For the complete list of changes, please refer to the release notes of each firmware component
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
+
STM32F429xx and STM32F429I-Discovery board RevB
+
STM32F407xx/417xx devices and STM324xG-EVAL board RevC
+
STM32F407xx and STM32F4-Discovery board RevC
+
STM32F401xC and STM32F401C-Discovery board RevB
+
STM32F401xE and STM32F401RE-Nucleo board RevC
+
STM32F411xE and STM32F411RE-Nucleo board RevC
+
STM32F411xE and STM32F411E-Discovery board RevC
+
STM32F412ZG and STM32F412ZG-Discovery board RevD
+
STM32F446ZE and STM32F446ZE-Nucleo board RevB
+
STM32F429ZI and STM32F429ZI-Nucleo board RevB
+
STM32F412ZG and STM32F412ZG-Nucleo board RevB
+
STM32F413ZHT6U and STM32F413ZH-Nucleo board RevB
+
STM32F413ZHT6U and STM32F413H-Discovery board RevD
+
+
Backward Compatibility
+
+
None
+
+
Dependencies
+
+
None
+
+
+
+
+
+
+
Maintenance release
+
Main Changes
+
+
General updates to fix known defects and implementation enhancements.
Deploy the support of STM32CubeIDE toolchain on all projects
SW4STM32 toolchain support is discontinued (Warning : Any reference to SW4STM32 in STM32CubeF4 firmware package documents should be interpreted as STM32CubeIDE).
@@ -312,7 +895,7 @@
Main Changes
For the complete list of changes, please refer to the release notes of each firmware component
-
Contents
+
Contents
Drivers
@@ -669,7 +1252,7 @@
Contents
-
Known Limitations
+
Known Limitations
USB_Device_Standalone application for STM324x9I_EVAL
@@ -697,7 +1280,7 @@
Known Limitations
Only template projects migrated to Arm Compiler 6 with MDK-ARM 5.31 (“AC-like Warnings†mode).
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
IAR Embedded Workbench for ARM (EWARM) toolchain V8.50.4 + ST-Link.
STM32F413ZHT6U and STM32F413H-Discovery board RevD
-
Backward Compatibility
+
Backward Compatibility
None
-
Dependencies
+
Dependencies
None
@@ -3389,8 +3972,8 @@
Dependencies
-
Maintenance release
-
Main Changes
+
Maintenance release
+
Main Changes
Maintenance release:
@@ -3402,8 +3985,8 @@
Main Changes
-
Maintenance release
-
Main Changes
+
Maintenance release
+
Main Changes
Thanks to the acquisition of Draupner Graphics A/S, ST is extending the STM32 ecosystem with advanced and easy to use graphic software solution enabling stunning GUI additions to embedded devices. TouchGFX solution is now fully part of STM32CubeF4.
TouchGFX examples and demonstrations can be accessed directly through the TouchGFX Designer tool. Here you simply create a new project, select the appropriate ST board in the Application Template section and select whatever demonstration or example you want in the UI Template selector. After this you will have a TouchGFX application ready to compile and flash to the selected ST board. More information are available here
@@ -3430,7 +4013,7 @@
Main Changes
For the complete list of changes, please refer to the release notes of each firmware component
-
Contents
+
Contents
Drivers
@@ -3752,7 +4335,7 @@
Contents
-
Known Limitations
+
Known Limitations
USB_Device_Standalone application for STM324x9I_EVAL
@@ -3768,13 +4351,13 @@
Known Limitations
SW4STM32 projects are not provided for all EVAL and Discovery demonstrations
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2 + ST-Link.
RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25
System Workbench for STM32 (SW4STM32) toolchain V2.6.0 + ST-Link
STM32F413ZHT6U and STM32F413H-Discovery board RevD
-
Backward Compatibility
+
Backward Compatibility
None
-
Dependencies
+
Dependencies
None
@@ -5846,8 +6429,8 @@
Dependencies
-
Maintenance release
-
Main Changes
+
Maintenance release
+
Main Changes
Official release to add the support of STM32F413xx and STM32F423xx devices
Fix known defects and several implementation enhancement
@@ -5897,7 +6480,7 @@
Main Changes
For the complete list of changes, please refer to the release notes of each firmware component
-
Contents
+
Contents
Drivers
@@ -6209,7 +6792,7 @@
Contents
-
Known Limitations
+
Known Limitations
USB_Device_Standalone application for STM324x9I_EVAL
@@ -6218,14 +6801,14 @@
Known Limitations
TrueSTUDIO and SW4STM32 projects are not provided for all EVAL and Discovery demonstrations
STemWin sample demo applications with all STM32 platforms are not fully functional with MDK-ARM toolchain: the application doesn t run successfully after the second hit of the Hide Button. in fact when presing the button again while the progress bar displays the next steps, pressing Hide or Next Buttons are not working anymore.
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
IAR Embedded Workbench for ARM (EWARM) toolchain v7.60.1
RealView Microcontroller Development Kit (MDK-ARM) toolchain v5.21a + Keil.STM32F4xx_DFP.2.11.0.pack
Patch release to fix issues in I2C/FMPI2C HAL drivers
-
Contents
+
Contents
@@ -6285,8 +6868,8 @@
Contents
-
Maintenance release
-
Main Changes
+
Maintenance release
+
Main Changes
Fix known defects and enhancements implementation
HAL
@@ -6333,7 +6916,7 @@
Main Changes
For the complete list of changes, please refer to the release notes of each firmware component
-
Contents
+
Contents
Drivers
@@ -6645,21 +7228,21 @@
Contents
-
Known Limitations
+
Known Limitations
USB_Device_Standalone application for STM324x9I_EVAL
MDK-ARM and TrueSTUDIO projects are provided with optimization set to None, to avoid audio glitch when USB cable is disconnected
TrueSTUDIO and SW4STM32 projects are not provided for all EVAL and Discovery demonstrations
STemWin sample demo applications with all STM32 platforms are not fully functional with MDK-ARM toolchain: the application doesn t run successfully after the second hit of the Hide Button. in fact when presing the button again while the progress bar displays the next steps, pressing Hide or Next Buttons are not working anymore.
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
IAR Embedded Workbench for ARM (EWARM) toolchain v7.60.1
RealView Microcontroller Development Kit (MDK-ARM) toolchain v5.20 + Keil.STM32F4xx_DFP.2.6.1.pack
System Workbench for STM32 (SW4STM32) toolchain V1.1.0 + ST-Link
-
Supported Devices and EVAL boards
+
Supported Devices and EVAL boards
STM32F446xx devices STM32446E_EVAL board RevB
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
@@ -9051,11 +9634,11 @@
Supported Devices and EVAL boards<
STM32F411xE and STM32F411RE-Nucleo board RevC
STM32F446RE and STM32446E-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
-
Dependencies
+
Dependencies
None
@@ -9064,8 +9647,8 @@
Dependencies
-
Maintenance release
-
Main Changes
+
Maintenance release
+
Main Changes
Add support of System Workbench for STM32 (SW4STM32) toolchain
Maintenance release to fix known defects
@@ -9105,7 +9688,7 @@
Main Changes
Fix compile issue in some projects (9 in total), mainly due to bad project settings
-
Contents
+
Contents
Drivers
@@ -9392,7 +9975,7 @@
Contents
-
Known Limitations
+
Known Limitations
SW4STM32 projects are not provided for STM32446E_EVAL board, will be added in next release
The following issues are detected when using EWARM V7.30, however they are not present when using EWARM V7.10, they will be fixed in next release:
@@ -9424,7 +10007,7 @@
Known Limitations
Robustness to be improved, the application may not work correctly after several board reset
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
IAR Embedded Workbench for ARM (EWARM) toolchain v7.30
System Workbench for STM32 (SW4STM32) toolchain V1.1.0 + ST-Link
-
Supported Devices and EVAL boards
+
Supported Devices and EVAL boards
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
STM32F429xx and STM32F429I-Discovery board RevB
@@ -10598,11 +11181,11 @@
Supported Devices and EVAL boards<
STM32F401xE and STM32F401RE-Nucleo board RevC
STM32F411xE and STM32F411RE-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
-
Dependencies
+
Dependencies
None
@@ -10611,20 +11194,24 @@
Dependencies
-
Maintenance release
-
Main Changes
+
Maintenance release
+
Main Changes
Patch release for STM32CubeF4, adding support of STM32F411xE devices with several enhancements and bugs fix
-
In this release; only the Firmware components drivers are provided, the projects for the supported boards will be provided in the upcoming release V1.2.1
-
HAL and CMSIS
+
In this release; only the Firmware components drivers are provided, the projects for the supported boards will be provided in the upcoming release V1.2.1
+
+
HAL and CMSIS
+
Add support of STM32F411xE devices
Several enhancements and bugs fix
-
Update startup files for EWARM toolchain to cope with compiler enhancement of the V7.x version
-
Middleware
+
Update startup files for EWARM toolchain to cope with compiler enhancement of the V7.x version
+
+
Middleware
+
Use updated version V5.24b of STemWin; adding many new features, with PC simulation resources added and binaries compiled for high speed optimization
Add LibJPEG library for JPEG images encoding and decoding
-
Miscellaneous update and minor bugs fix
+
Miscellaneous update and minor bugs fix
BSP
@@ -10634,7 +11221,7 @@
Main Changes
Note: for the complete list of changes, please refer to the release notes of each Firmware component
-
Contents
+
Contents
Drivers
@@ -10916,17 +11503,17 @@
Contents
-
Known Limitations
+
Known Limitations
None
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
IAR Embedded Workbench for ARM (EWARM) toolchain v7.10.2
RealView Microcontroller Development Kit (MDK-ARM) toolchain v5.10
STM32F429xx/439xx devices and STM324x9I-EVAL board RevB
STM32F429xx and STM32F429I-Discovery board RevB
@@ -10936,11 +11523,11 @@
Supported Devices and EVAL boards<
STM32F401xE and STM32F401RE-Nucleo board RevC
STM32F411xE and STM32F411RE-Nucleo board RevC
-
Backward Compatibility
+
Backward Compatibility
None
-
Dependencies
+
Dependencies
None
@@ -10949,8 +11536,8 @@
Dependencies
-
Maintenance release
-
Main Changes
+
Maintenance release
+
Main Changes
Add sources of STM324x9I-EVAL (both references MB1046 and MB1063), STM324xG-EVAL and STM32F429I-Discovery Demonstration (only for EWARM and MDK-ARM)
@@ -10960,7 +11547,7 @@
Main Changes
Miscellaneous update on Examples, Applications, Demonstrations and Templates projects for some boards; for more details refer to the associated release notes
Minor update in STM324x9I-EVAL, STM324xG-EVAL and STM32F429I-Discovery uSD and EEPROM BSP drivers
-
Contents
+
Contents
Drivers
@@ -11227,11 +11814,11 @@
Contents
-
Known Limitations
+
Known Limitations
TrueSTUDIO projects are not provided for few Applications and Demonstrations (10 in total)
-
Development Toolchains and Compilers
+
Development Toolchains and Compilers
IAR Embedded Workbench for ARM (EWARM) toolchain V6.70.3