From 2eaec0535a855214f91fee9ba22a697993a4e0db Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Wed, 5 Jun 2024 21:53:37 +0200 Subject: [PATCH 1/6] mcu/stm32f3: Fix reset reason POR was not correctly reported. Signed-off-by: Jerzy Kasenberg --- hw/mcu/stm/stm32f3xx/src/hal_reset_cause.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/mcu/stm/stm32f3xx/src/hal_reset_cause.c b/hw/mcu/stm/stm32f3xx/src/hal_reset_cause.c index e3e28013e3..be974a186c 100644 --- a/hw/mcu/stm/stm32f3xx/src/hal_reset_cause.c +++ b/hw/mcu/stm/stm32f3xx/src/hal_reset_cause.c @@ -31,16 +31,16 @@ hal_reset_cause(void) } reg = RCC->CSR; - if (reg & RCC_CSR_WWDGRSTF || reg & RCC_CSR_IWDGRSTF) { + if (reg & RCC_CSR_PORRSTF) { + reason = HAL_RESET_POR; + } else if (reg & RCC_CSR_WWDGRSTF || reg & RCC_CSR_IWDGRSTF) { reason = HAL_RESET_WATCHDOG; } else if (reg & RCC_CSR_SFTRSTF) { reason = HAL_RESET_SOFT; } else if (reg & RCC_CSR_PINRSTF) { reason = HAL_RESET_PIN; - } else if (reg & RCC_CSR_PORRSTF) { - reason = HAL_RESET_BROWNOUT; } else { - reason = HAL_RESET_POR; + reason = HAL_RESET_OTHER; } RCC->CSR |= RCC_CSR_RMVF; return reason; From e2b7b1bb32274985196cb8df09bca26e80d7ced7 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Wed, 5 Jun 2024 22:01:24 +0200 Subject: [PATCH 2/6] hw/mcu/stm32f3: Covert CRLF to LF Signed-off-by: Jerzy Kasenberg --- hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c | 424 ++++++++++---------- 1 file changed, 212 insertions(+), 212 deletions(-) diff --git a/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c b/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c index 57c6526797..c351c51b02 100644 --- a/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c +++ b/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c @@ -1,212 +1,212 @@ -/** - *

© COPYRIGHT(c) 2016 STMicroelectronics

- * - * 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. - * - ****************************************************************************** - */ - -#include "bsp/stm32f3xx_hal_conf.h" -#include "stm32f3xx.h" -#include "mcu/cmsis_nvic.h" - -/* - * 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; -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 -}; - -/* - * XXX BSP specific - */ -void SystemClock_Config(void); - -/** - * @brief Setup the microcontroller system - * Initialize the FPU setting, vector table location and the PLL configuration is reset. - * @param None - * @retval None - */ -void SystemInit(void) -{ - /* - * FPU settings - */ - -#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) - /* set CP10 and CP11 Full Access */ - SCB->CPACR |= ((3UL << 10 * 2) | (3UL << 11 * 2)); -#endif - - /* - * Reset the RCC clock configuration to the default reset state - */ - - /* Set HSION bit */ - RCC->CR |= (uint32_t)0x00000001; - - /* Reset CFGR register */ - RCC->CFGR &= 0xF87FC00C; - - /* Reset HSEON, CSSON and PLLON bits */ - RCC->CR &= (uint32_t)0xFEF6FFFF; - - /* Reset HSEBYP bit */ - RCC->CR &= (uint32_t)0xFFFBFFFF; - - /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE bits */ - RCC->CFGR &= (uint32_t)0xFF80FFFF; - - /* Reset PREDIV1[3:0] bits */ - RCC->CFGR2 &= (uint32_t)0xFFFFFFF0; - - /* Reset USARTSW[1:0], I2CSW and TIMs bits */ - RCC->CFGR3 &= (uint32_t)0xFF00FCCC; - - /* Disable all interrupts */ - RCC->CIR = 0x00000000; - - /* Configure System Clock */ - SystemClock_Config(); - - /* Update SystemCoreClock global variable */ - SystemCoreClockUpdate(); - - /* Relocate the vector table */ - NVIC_Relocate(); -} - -/** - * @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 stm32f3xx_hal.h file (default value - * 8 MHz) but the real value may vary depending on the variations - * in voltage and temperature. - * - * (**) HSE_VALUE is a constant defined in stm32f3xx_hal.h file (default value - * 8 MHz), 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; - uint32_t pllmull; - uint32_t pllsource; - uint32_t predivfactor; - - /* - * Get SYSCLK source - */ - - tmp = RCC->CFGR & RCC_CFGR_SWS; - switch (tmp) { - /* HSE used as system clock */ - case RCC_CFGR_SWS_HSE: - SystemCoreClock = HSE_VALUE; - break; - - /* PLL used as system clock */ - case RCC_CFGR_SWS_PLL: - /* - * Get PLL clock source and multiplication factor - */ - pllmull = RCC->CFGR & RCC_CFGR_PLLMUL; - pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; - pllmull = (pllmull >> 18) + 2; - -#if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) - predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1; - if (pllsource == RCC_CFGR_PLLSRC_HSE_PREDIV) { - /* HSE oscillator clock selected as PREDIV1 clock entry */ - SystemCoreClock = (HSE_VALUE / predivfactor) * pllmull; - } else { - /* HSI oscillator clock selected as PREDIV1 clock entry */ - SystemCoreClock = (HSI_VALUE / predivfactor) * pllmull; - } -#else - if (pllsource == RCC_CFGR_PLLSRC_HSI_DIV2) { - /* HSI oscillator clock divided by 2 selected as PLL clock entry */ - SystemCoreClock = (HSI_VALUE >> 1) * pllmull; - } else { - predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1; - /* HSE oscillator clock selected as PREDIV1 clock entry */ - SystemCoreClock = (HSE_VALUE / predivfactor) * pllmull; - } -#endif - break; - - /* HSI used as system clock */ - default: - SystemCoreClock = HSI_VALUE; - break; - } - - /* - * Compute HCLK clock frequency - */ - - /* Get HCLK prescaler */ - tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; - - /* HCLK clock frequency */ - SystemCoreClock >>= tmp; -} - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ +/** + *

© COPYRIGHT(c) 2016 STMicroelectronics

+ * + * 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. + * + ****************************************************************************** + */ + +#include "bsp/stm32f3xx_hal_conf.h" +#include "stm32f3xx.h" +#include "mcu/cmsis_nvic.h" + +/* + * 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; +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 +}; + +/* + * XXX BSP specific + */ +void SystemClock_Config(void); + +/** + * @brief Setup the microcontroller system + * Initialize the FPU setting, vector table location and the PLL configuration is reset. + * @param None + * @retval None + */ +void SystemInit(void) +{ + /* + * FPU settings + */ + +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + /* set CP10 and CP11 Full Access */ + SCB->CPACR |= ((3UL << 10 * 2) | (3UL << 11 * 2)); +#endif + + /* + * Reset the RCC clock configuration to the default reset state + */ + + /* Set HSION bit */ + RCC->CR |= (uint32_t)0x00000001; + + /* Reset CFGR register */ + RCC->CFGR &= 0xF87FC00C; + + /* Reset HSEON, CSSON and PLLON bits */ + RCC->CR &= (uint32_t)0xFEF6FFFF; + + /* Reset HSEBYP bit */ + RCC->CR &= (uint32_t)0xFFFBFFFF; + + /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE bits */ + RCC->CFGR &= (uint32_t)0xFF80FFFF; + + /* Reset PREDIV1[3:0] bits */ + RCC->CFGR2 &= (uint32_t)0xFFFFFFF0; + + /* Reset USARTSW[1:0], I2CSW and TIMs bits */ + RCC->CFGR3 &= (uint32_t)0xFF00FCCC; + + /* Disable all interrupts */ + RCC->CIR = 0x00000000; + + /* Configure System Clock */ + SystemClock_Config(); + + /* Update SystemCoreClock global variable */ + SystemCoreClockUpdate(); + + /* Relocate the vector table */ + NVIC_Relocate(); +} + +/** + * @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 stm32f3xx_hal.h file (default value + * 8 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f3xx_hal.h file (default value + * 8 MHz), 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; + uint32_t pllmull; + uint32_t pllsource; + uint32_t predivfactor; + + /* + * Get SYSCLK source + */ + + tmp = RCC->CFGR & RCC_CFGR_SWS; + switch (tmp) { + /* HSE used as system clock */ + case RCC_CFGR_SWS_HSE: + SystemCoreClock = HSE_VALUE; + break; + + /* PLL used as system clock */ + case RCC_CFGR_SWS_PLL: + /* + * Get PLL clock source and multiplication factor + */ + pllmull = RCC->CFGR & RCC_CFGR_PLLMUL; + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + pllmull = (pllmull >> 18) + 2; + +#if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) + predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1; + if (pllsource == RCC_CFGR_PLLSRC_HSE_PREDIV) { + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / predivfactor) * pllmull; + } else { + /* HSI oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSI_VALUE / predivfactor) * pllmull; + } +#else + if (pllsource == RCC_CFGR_PLLSRC_HSI_DIV2) { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } else { + predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / predivfactor) * pllmull; + } +#endif + break; + + /* HSI used as system clock */ + default: + SystemCoreClock = HSI_VALUE; + break; + } + + /* + * Compute HCLK clock frequency + */ + + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ From 6164bc4920fcec9fdce2ee48725e699eee95f9d3 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Wed, 5 Jun 2024 22:03:51 +0200 Subject: [PATCH 3/6] hw/mcu/stm32f3: Use common startup code STM32F3 now uses common startup code for Cortex-M4 and autogenerated linker script. Flash cache initialization moved to hal_system_init.c to make system_stm32f3xx.c more like original ST file so future updates will be easier. Unused ld scripts remove NVIC_NUM_VECTOR corrected (probably value was from other MCU) Signed-off-by: Jerzy Kasenberg --- hw/mcu/stm/stm32f3xx/include/mcu/cmsis_nvic.h | 6 +- .../stm/stm32f3xx/include/mcu/mcu_vectors.h | 50 ++++ .../include/mcu/vectors/stm32f301x8_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f302x8_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f302xc_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f302xe_vectors.h | 120 ++++++++++ .../include/mcu/vectors/stm32f303x8_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f303xc_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f303xe_vectors.h | 120 ++++++++++ .../include/mcu/vectors/stm32f318xx_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f328xx_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f334x8_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f358xx_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f373xc_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f378xx_vectors.h | 117 ++++++++++ .../include/mcu/vectors/stm32f398xx_vectors.h | 120 ++++++++++ .../stm/stm32f3xx/src/hal_system_init.c} | 41 ++-- hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c | 9 - hw/mcu/stm/stm32f3xx/stm32f303.ld | 214 ------------------ 19 files changed, 1729 insertions(+), 238 deletions(-) create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/mcu_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f301x8_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302x8_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302xc_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302xe_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303x8_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303xc_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303xe_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f318xx_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f328xx_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f334x8_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f358xx_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f373xc_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f378xx_vectors.h create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f398xx_vectors.h rename hw/{bsp/nucleo-f303k8/nucleo-f303k8.ld => mcu/stm/stm32f3xx/src/hal_system_init.c} (61%) delete mode 100644 hw/mcu/stm/stm32f3xx/stm32f303.ld diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/cmsis_nvic.h b/hw/mcu/stm/stm32f3xx/include/mcu/cmsis_nvic.h index df47262dcd..ceb3f86519 100644 --- a/hw/mcu/stm/stm32f3xx/include/mcu/cmsis_nvic.h +++ b/hw/mcu/stm/stm32f3xx/include/mcu/cmsis_nvic.h @@ -28,7 +28,11 @@ #include -#define NVIC_NUM_VECTORS (16 + 81) // CORE + MCU Peripherals +extern uint32_t __isr_vector_start[]; +extern uint32_t __isr_vector_end[]; + +/* Extract number of vectors from .interrupt section size */ +#define NVIC_NUM_VECTORS (__isr_vector_end - __isr_vector_start) #define NVIC_USER_IRQ_OFFSET 16 #include "stm32f3xx.h" diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/mcu_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/mcu_vectors.h new file mode 100644 index 0000000000..24e2bf3bad --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/mcu_vectors.h @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#if defined(STM32F301x8) +#include "vectors/stm32f301x8_vectors.h" +#elif defined(STM32F302x8) +#include "vectors/stm32f302x8_vectors.h" +#elif defined(STM32F302xC) +#include "vectors/stm32f302xc_vectors.h" +#elif defined(STM32F302xE) +#include "vectors/stm32f302xe_vectors.h" +#elif defined(STM32F303x8) +#include "vectors/stm32f303x8_vectors.h" +#elif defined(STM32F303xC) +#include "vectors/stm32f303xc_vectors.h" +#elif defined(STM32F303xE) +#include "vectors/stm32f303xe_vectors.h" +#elif defined(STM32F373xC) +#include "vectors/stm32f373xc_vectors.h" +#elif defined(STM32F334x8) +#include "vectors/stm32f334x8_vectors.h" +#elif defined(STM32F318xx) +#include "vectors/stm32f318xx_vectors.h" +#elif defined(STM32F328xx) +#include "vectors/stm32f328xx_vectors.h" +#elif defined(STM32F358xx) +#include "vectors/stm32f358xx_vectors.h" +#elif defined(STM32F378xx) +#include "vectors/stm32f378xx_vectors.h" +#elif defined(STM32F398xx) +#include "vectors/stm32f398xx_vectors.h" +#else +#error "Please select first the target STM32F3xx device used in your application" +#endif diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f301x8_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f301x8_vectors.h new file mode 100644 index 0000000000..c42b1bbe80 --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f301x8_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR(PVD_IRQHandler) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM6_DAC_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP2_IRQHandler) +INT_VECTOR(COMP4_6_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C3_EV_IRQHandler) +INT_VECTOR(I2C3_ER_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302x8_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302x8_vectors.h new file mode 100644 index 0000000000..966e28e6e8 --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302x8_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR(PVD_IRQHandler) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_IRQHandler) +INT_VECTOR(USB_HP_CAN_TX_IRQHandler) +INT_VECTOR(USB_LP_CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR(USBWakeUp_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM6_DAC_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP2_IRQHandler) +INT_VECTOR(COMP4_6_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C3_EV_IRQHandler) +INT_VECTOR(I2C3_ER_IRQHandler) +INT_VECTOR(USB_HP_IRQHandler) +INT_VECTOR(USB_LP_IRQHandler) +INT_VECTOR(USBWakeUp_RMP_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302xc_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302xc_vectors.h new file mode 100644 index 0000000000..c5346e0b8c --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302xc_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR(PVD_IRQHandler) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_2_IRQHandler) +INT_VECTOR(USB_HP_CAN_TX_IRQHandler) +INT_VECTOR(USB_LP_CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR(TIM4_IRQHandler) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR(USBWakeUp_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR(UART4_IRQHandler) +INT_VECTOR(UART5_IRQHandler) +INT_VECTOR(TIM6_DAC_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(DMA2_Channel1_IRQHandler) +INT_VECTOR(DMA2_Channel2_IRQHandler) +INT_VECTOR(DMA2_Channel3_IRQHandler) +INT_VECTOR(DMA2_Channel4_IRQHandler) +INT_VECTOR(DMA2_Channel5_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP1_2_IRQHandler) +INT_VECTOR(COMP4_6_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(USB_HP_IRQHandler) +INT_VECTOR(USB_LP_IRQHandler) +INT_VECTOR(USBWakeUp_RMP_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302xe_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302xe_vectors.h new file mode 100644 index 0000000000..04b27ff30d --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f302xe_vectors.h @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR(PVD_IRQHandler) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_2_IRQHandler) +INT_VECTOR(USB_HP_CAN_TX_IRQHandler) +INT_VECTOR(USB_LP_CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR(TIM4_IRQHandler) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR(USBWakeUp_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FMC_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR(UART4_IRQHandler) +INT_VECTOR(UART5_IRQHandler) +INT_VECTOR(TIM6_DAC_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(DMA2_Channel1_IRQHandler) +INT_VECTOR(DMA2_Channel2_IRQHandler) +INT_VECTOR(DMA2_Channel3_IRQHandler) +INT_VECTOR(DMA2_Channel4_IRQHandler) +INT_VECTOR(DMA2_Channel5_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP1_2_IRQHandler) +INT_VECTOR(COMP4_6_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C3_EV_IRQHandler) +INT_VECTOR(I2C3_ER_IRQHandler) +INT_VECTOR(USB_HP_IRQHandler) +INT_VECTOR(USB_LP_IRQHandler) +INT_VECTOR(USBWakeUp_RMP_IRQHandler) +INT_VECTOR(TIM20_BRK_IRQHandler) +INT_VECTOR(TIM20_UP_IRQHandler) +INT_VECTOR(TIM20_TRG_COM_IRQHandler) +INT_VECTOR(TIM20_CC_IRQHandler) +INT_VECTOR(FPU_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI4_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303x8_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303x8_vectors.h new file mode 100644 index 0000000000..db632b542f --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303x8_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR(PVD_IRQHandler) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_2_IRQHandler) +INT_VECTOR(CAN_TX_IRQHandler) +INT_VECTOR(CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM6_DAC1_IRQHandler) +INT_VECTOR(TIM7_DAC2_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP2_IRQHandler) +INT_VECTOR(COMP4_6_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303xc_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303xc_vectors.h new file mode 100644 index 0000000000..d85c6fadf8 --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303xc_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR(PVD_IRQHandler) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_2_IRQHandler) +INT_VECTOR(USB_HP_CAN_TX_IRQHandler) +INT_VECTOR(USB_LP_CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR(TIM4_IRQHandler) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR(USBWakeUp_IRQHandler) +INT_VECTOR(TIM8_BRK_IRQHandler) +INT_VECTOR(TIM8_UP_IRQHandler) +INT_VECTOR(TIM8_TRG_COM_IRQHandler) +INT_VECTOR(TIM8_CC_IRQHandler) +INT_VECTOR(ADC3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR(UART4_IRQHandler) +INT_VECTOR(UART5_IRQHandler) +INT_VECTOR(TIM6_DAC_IRQHandler) +INT_VECTOR(TIM7_IRQHandler) +INT_VECTOR(DMA2_Channel1_IRQHandler) +INT_VECTOR(DMA2_Channel2_IRQHandler) +INT_VECTOR(DMA2_Channel3_IRQHandler) +INT_VECTOR(DMA2_Channel4_IRQHandler) +INT_VECTOR(DMA2_Channel5_IRQHandler) +INT_VECTOR(ADC4_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP1_2_3_IRQHandler) +INT_VECTOR(COMP4_5_6_IRQHandler) +INT_VECTOR(COMP7_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(USB_HP_IRQHandler) +INT_VECTOR(USB_LP_IRQHandler) +INT_VECTOR(USBWakeUp_RMP_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303xe_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303xe_vectors.h new file mode 100644 index 0000000000..de8d7e9dcd --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f303xe_vectors.h @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR(PVD_IRQHandler) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_2_IRQHandler) +INT_VECTOR(USB_HP_CAN_TX_IRQHandler) +INT_VECTOR(USB_LP_CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR(TIM4_IRQHandler) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR(USBWakeUp_IRQHandler) +INT_VECTOR(TIM8_BRK_IRQHandler) +INT_VECTOR(TIM8_UP_IRQHandler) +INT_VECTOR(TIM8_TRG_COM_IRQHandler) +INT_VECTOR(TIM8_CC_IRQHandler) +INT_VECTOR(ADC3_IRQHandler) +INT_VECTOR(FMC_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR(UART4_IRQHandler) +INT_VECTOR(UART5_IRQHandler) +INT_VECTOR(TIM6_DAC_IRQHandler) +INT_VECTOR(TIM7_IRQHandler) +INT_VECTOR(DMA2_Channel1_IRQHandler) +INT_VECTOR(DMA2_Channel2_IRQHandler) +INT_VECTOR(DMA2_Channel3_IRQHandler) +INT_VECTOR(DMA2_Channel4_IRQHandler) +INT_VECTOR(DMA2_Channel5_IRQHandler) +INT_VECTOR(ADC4_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP1_2_3_IRQHandler) +INT_VECTOR(COMP4_5_6_IRQHandler) +INT_VECTOR(COMP7_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C3_EV_IRQHandler) +INT_VECTOR(I2C3_ER_IRQHandler) +INT_VECTOR(USB_HP_IRQHandler) +INT_VECTOR(USB_LP_IRQHandler) +INT_VECTOR(USBWakeUp_RMP_IRQHandler) +INT_VECTOR(TIM20_BRK_IRQHandler) +INT_VECTOR(TIM20_UP_IRQHandler) +INT_VECTOR(TIM20_TRG_COM_IRQHandler) +INT_VECTOR(TIM20_CC_IRQHandler) +INT_VECTOR(FPU_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI4_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f318xx_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f318xx_vectors.h new file mode 100644 index 0000000000..99a029c5a7 --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f318xx_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM6_DAC_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP2_IRQHandler) +INT_VECTOR(COMP4_6_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C3_EV_IRQHandler) +INT_VECTOR(I2C3_ER_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f328xx_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f328xx_vectors.h new file mode 100644 index 0000000000..a0fc7ffcae --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f328xx_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_2_IRQHandler) +INT_VECTOR(CAN_TX_IRQHandler) +INT_VECTOR(CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM6_DAC1_IRQHandler) +INT_VECTOR(TIM7_DAC2_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP2_IRQHandler) +INT_VECTOR(COMP4_6_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f334x8_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f334x8_vectors.h new file mode 100644 index 0000000000..b00cd8acd1 --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f334x8_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR(PVD_IRQHandler) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_2_IRQHandler) +INT_VECTOR(CAN_TX_IRQHandler) +INT_VECTOR(CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM6_DAC1_IRQHandler) +INT_VECTOR(TIM7_DAC2_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP2_IRQHandler) +INT_VECTOR(COMP4_6_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(HRTIM1_Master_IRQHandler) +INT_VECTOR(HRTIM1_TIMA_IRQHandler) +INT_VECTOR(HRTIM1_TIMB_IRQHandler) +INT_VECTOR(HRTIM1_TIMC_IRQHandler) +INT_VECTOR(HRTIM1_TIMD_IRQHandler) +INT_VECTOR(HRTIM1_TIME_IRQHandler) +INT_VECTOR(HRTIM1_FLT_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f358xx_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f358xx_vectors.h new file mode 100644 index 0000000000..c55b42dd41 --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f358xx_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_2_IRQHandler) +INT_VECTOR(CAN_TX_IRQHandler) +INT_VECTOR(CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR(TIM4_IRQHandler) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM8_BRK_IRQHandler) +INT_VECTOR(TIM8_UP_IRQHandler) +INT_VECTOR(TIM8_TRG_COM_IRQHandler) +INT_VECTOR(TIM8_CC_IRQHandler) +INT_VECTOR(ADC3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR(UART4_IRQHandler) +INT_VECTOR(UART5_IRQHandler) +INT_VECTOR(TIM6_DAC_IRQHandler) +INT_VECTOR(TIM7_IRQHandler) +INT_VECTOR(DMA2_Channel1_IRQHandler) +INT_VECTOR(DMA2_Channel2_IRQHandler) +INT_VECTOR(DMA2_Channel3_IRQHandler) +INT_VECTOR(DMA2_Channel4_IRQHandler) +INT_VECTOR(DMA2_Channel5_IRQHandler) +INT_VECTOR(ADC4_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP1_2_3_IRQHandler) +INT_VECTOR(COMP4_5_6_IRQHandler) +INT_VECTOR(COMP7_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f373xc_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f373xc_vectors.h new file mode 100644 index 0000000000..97689685fa --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f373xc_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR(PVD_IRQHandler) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_IRQHandler) +INT_VECTOR(CAN_TX_IRQHandler) +INT_VECTOR(CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM15_IRQHandler) +INT_VECTOR(TIM16_IRQHandler) +INT_VECTOR(TIM17_IRQHandler) +INT_VECTOR(TIM18_DAC2_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR(TIM4_IRQHandler) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR(CEC_IRQHandler) +INT_VECTOR(TIM12_IRQHandler) +INT_VECTOR(TIM13_IRQHandler) +INT_VECTOR(TIM14_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM5_IRQHandler) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM6_DAC1_IRQHandler) +INT_VECTOR(TIM7_IRQHandler) +INT_VECTOR(DMA2_Channel1_IRQHandler) +INT_VECTOR(DMA2_Channel2_IRQHandler) +INT_VECTOR(DMA2_Channel3_IRQHandler) +INT_VECTOR(DMA2_Channel4_IRQHandler) +INT_VECTOR(DMA2_Channel5_IRQHandler) +INT_VECTOR(SDADC1_IRQHandler) +INT_VECTOR(SDADC2_IRQHandler) +INT_VECTOR(SDADC3_IRQHandler) +INT_VECTOR(COMP_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(USB_HP_IRQHandler) +INT_VECTOR(USB_LP_IRQHandler) +INT_VECTOR(USBWakeUp_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM19_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f378xx_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f378xx_vectors.h new file mode 100644 index 0000000000..840870e178 --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f378xx_vectors.h @@ -0,0 +1,117 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_IRQHandler) +INT_VECTOR(CAN_TX_IRQHandler) +INT_VECTOR(CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM15_IRQHandler) +INT_VECTOR(TIM16_IRQHandler) +INT_VECTOR(TIM17_IRQHandler) +INT_VECTOR(TIM18_DAC2_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR(TIM4_IRQHandler) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR(CEC_IRQHandler) +INT_VECTOR(TIM12_IRQHandler) +INT_VECTOR(TIM13_IRQHandler) +INT_VECTOR(TIM14_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM5_IRQHandler) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM6_DAC1_IRQHandler) +INT_VECTOR(TIM7_IRQHandler) +INT_VECTOR(DMA2_Channel1_IRQHandler) +INT_VECTOR(DMA2_Channel2_IRQHandler) +INT_VECTOR(DMA2_Channel3_IRQHandler) +INT_VECTOR(DMA2_Channel4_IRQHandler) +INT_VECTOR(DMA2_Channel5_IRQHandler) +INT_VECTOR(SDADC1_IRQHandler) +INT_VECTOR(SDADC2_IRQHandler) +INT_VECTOR(SDADC3_IRQHandler) +INT_VECTOR(COMP_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM19_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(FPU_IRQHandler) diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f398xx_vectors.h b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f398xx_vectors.h new file mode 100644 index 0000000000..35d553e658 --- /dev/null +++ b/hw/mcu/stm/stm32f3xx/include/mcu/vectors/stm32f398xx_vectors.h @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +INT_VECTOR_STACK_TOP(__StackTop) +INT_VECTOR_RESET_HANDLER(Reset_Handler) +INT_VECTOR_NMI_HANDLER(NMI_Handler) +INT_VECTOR_HARDFAULT_HANDLER(HardFault_Handler) +INT_VECTOR_MEMMANAGE_HANDLER(MemManage_Handler) +INT_VECTOR_BUSFAULT_HANDLER(BusFault_Handler) +INT_VECTOR_USAGEFAULT_HANDLER(UsageFault_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_SVC_HANDLER(SVC_Handler) +INT_VECTOR_DEBUGMON_HANDLER(DebugMon_Handler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_PENDSV_HANDLER(PendSV_Handler) +INT_VECTOR_SYSTICK_HANDLER(SysTick_Handler) +INT_VECTOR(WWDG_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TAMP_STAMP_IRQHandler) +INT_VECTOR(RTC_WKUP_IRQHandler) +INT_VECTOR(FLASH_IRQHandler) +INT_VECTOR(RCC_IRQHandler) +INT_VECTOR(EXTI0_IRQHandler) +INT_VECTOR(EXTI1_IRQHandler) +INT_VECTOR(EXTI2_TSC_IRQHandler) +INT_VECTOR(EXTI3_IRQHandler) +INT_VECTOR(EXTI4_IRQHandler) +INT_VECTOR(DMA1_Channel1_IRQHandler) +INT_VECTOR(DMA1_Channel2_IRQHandler) +INT_VECTOR(DMA1_Channel3_IRQHandler) +INT_VECTOR(DMA1_Channel4_IRQHandler) +INT_VECTOR(DMA1_Channel5_IRQHandler) +INT_VECTOR(DMA1_Channel6_IRQHandler) +INT_VECTOR(DMA1_Channel7_IRQHandler) +INT_VECTOR(ADC1_2_IRQHandler) +INT_VECTOR(CAN_TX_IRQHandler) +INT_VECTOR(CAN_RX0_IRQHandler) +INT_VECTOR(CAN_RX1_IRQHandler) +INT_VECTOR(CAN_SCE_IRQHandler) +INT_VECTOR(EXTI9_5_IRQHandler) +INT_VECTOR(TIM1_BRK_TIM15_IRQHandler) +INT_VECTOR(TIM1_UP_TIM16_IRQHandler) +INT_VECTOR(TIM1_TRG_COM_TIM17_IRQHandler) +INT_VECTOR(TIM1_CC_IRQHandler) +INT_VECTOR(TIM2_IRQHandler) +INT_VECTOR(TIM3_IRQHandler) +INT_VECTOR(TIM4_IRQHandler) +INT_VECTOR(I2C1_EV_IRQHandler) +INT_VECTOR(I2C1_ER_IRQHandler) +INT_VECTOR(I2C2_EV_IRQHandler) +INT_VECTOR(I2C2_ER_IRQHandler) +INT_VECTOR(SPI1_IRQHandler) +INT_VECTOR(SPI2_IRQHandler) +INT_VECTOR(USART1_IRQHandler) +INT_VECTOR(USART2_IRQHandler) +INT_VECTOR(USART3_IRQHandler) +INT_VECTOR(EXTI15_10_IRQHandler) +INT_VECTOR(RTC_Alarm_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM8_BRK_IRQHandler) +INT_VECTOR(TIM8_UP_IRQHandler) +INT_VECTOR(TIM8_TRG_COM_IRQHandler) +INT_VECTOR(TIM8_CC_IRQHandler) +INT_VECTOR(ADC3_IRQHandler) +INT_VECTOR(FMC_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI3_IRQHandler) +INT_VECTOR(UART4_IRQHandler) +INT_VECTOR(UART5_IRQHandler) +INT_VECTOR(TIM6_DAC_IRQHandler) +INT_VECTOR(TIM7_IRQHandler) +INT_VECTOR(DMA2_Channel1_IRQHandler) +INT_VECTOR(DMA2_Channel2_IRQHandler) +INT_VECTOR(DMA2_Channel3_IRQHandler) +INT_VECTOR(DMA2_Channel4_IRQHandler) +INT_VECTOR(DMA2_Channel5_IRQHandler) +INT_VECTOR(ADC4_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(COMP1_2_3_IRQHandler) +INT_VECTOR(COMP4_5_6_IRQHandler) +INT_VECTOR(COMP7_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(I2C3_EV_IRQHandler) +INT_VECTOR(I2C3_ER_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(TIM20_BRK_IRQHandler) +INT_VECTOR(TIM20_UP_IRQHandler) +INT_VECTOR(TIM20_TRG_COM_IRQHandler) +INT_VECTOR(TIM20_CC_IRQHandler) +INT_VECTOR(FPU_IRQHandler) +INT_VECTOR_UNUSED(0) +INT_VECTOR_UNUSED(0) +INT_VECTOR(SPI4_IRQHandler) diff --git a/hw/bsp/nucleo-f303k8/nucleo-f303k8.ld b/hw/mcu/stm/stm32f3xx/src/hal_system_init.c similarity index 61% rename from hw/bsp/nucleo-f303k8/nucleo-f303k8.ld rename to hw/mcu/stm/stm32f3xx/src/hal_system_init.c index 9aeb145c5f..0c8b67a202 100644 --- a/hw/bsp/nucleo-f303k8/nucleo-f303k8.ld +++ b/hw/mcu/stm/stm32f3xx/src/hal_system_init.c @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -6,7 +6,7 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, @@ -16,18 +16,31 @@ * specific language governing permissions and limitations * under the License. */ -ENTRY(Reset_Handler) -/* - * Memory map - */ -MEMORY { - FLASH (rx): ORIGIN = 0x08000000, LENGTH = 64K - CCRAM (rw): ORIGIN = 0x10000000, LENGTH = 4K - SRAM (rw): ORIGIN = 0x20000000, LENGTH = 12K +#include "os/mynewt.h" +#include "mcu/stm32_hal.h" +#include + +extern char __vector_tbl_reloc__[]; + +void SystemClock_Config(void); + +void +hal_system_init(void) +{ + SCB->VTOR = (uint32_t)&__vector_tbl_reloc__; + + /* Configure System Clock */ + SystemClock_Config(); + + /* Update SystemCoreClock global variable */ + SystemCoreClockUpdate(); + + if (PREFETCH_ENABLE) { + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); + } + + /* Relocate the vector table */ + NVIC_Relocate(); } -/* - * Image header size - no bootloader support, no header. - */ -_imghdr_size = 0x00; diff --git a/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c b/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c index c351c51b02..8fa2a5b2e9 100644 --- a/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c +++ b/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c @@ -97,15 +97,6 @@ void SystemInit(void) /* Disable all interrupts */ RCC->CIR = 0x00000000; - - /* Configure System Clock */ - SystemClock_Config(); - - /* Update SystemCoreClock global variable */ - SystemCoreClockUpdate(); - - /* Relocate the vector table */ - NVIC_Relocate(); } /** diff --git a/hw/mcu/stm/stm32f3xx/stm32f303.ld b/hw/mcu/stm/stm32f3xx/stm32f303.ld deleted file mode 100644 index 8636a22fd3..0000000000 --- a/hw/mcu/stm/stm32f3xx/stm32f303.ld +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* Linker script to place sections and symbol values. Should be used together - * with other linker script that defines memory regions FLASH and RAM. - * It references following symbols, which must be defined in code: - * Reset_Handler : Entry of reset handler - * - * It defines following symbols, which code can use without definition: - * __exidx_start - * __exidx_end - * __etext - * __data_start__ - * __preinit_array_start - * __preinit_array_end - * __init_array_start - * __init_array_end - * __fini_array_start - * __fini_array_end - * __data_end__ - * __bss_start__ - * __bss_end__ - * __end__ - * end - * __HeapBase - * __HeapLimit - * __StackLimit - * __StackTop - * __stack - * __coredata_start__ - * __coredata_end__ - * __corebss_start__ - * __corebss_end__ - * __ecoredata - * __ecorebss - */ -ENTRY(Reset_Handler) - -_estack = ORIGIN(SRAM) + LENGTH(SRAM); - -SECTIONS -{ - /* Reserve space at the start of the image for the header. */ - .imghdr (NOLOAD): - { - . = . + _imghdr_size; - } > FLASH - - __text = .; - - .text : - { - __isr_vector = .; - __isr_vector_start = .; - KEEP(*(.isr_vector)) - __isr_vector_end = .; - *(.text*) - - KEEP(*(.init)) - KEEP(*(.fini)) - - /* preinit data */ - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP(*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - - . = ALIGN(4); - /* init data */ - PROVIDE_HIDDEN (__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - - . = ALIGN(4); - /* finit data */ - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP(*(SORT(.fini_array.*))) - KEEP(*(.fini_array)) - PROVIDE_HIDDEN (__fini_array_end = .); - - /* .ctors */ - *crtbegin.o(.ctors) - *crtbegin?.o(.ctors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) - *(SORT(.ctors.*)) - *(.ctors) - - /* .dtors */ - *crtbegin.o(.dtors) - *crtbegin?.o(.dtors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) - *(SORT(.dtors.*)) - *(.dtors) - -INCLUDE "link_tables.ld.h" - *(.rodata*) - - KEEP(*(.eh_frame*)) - PROVIDE(mynewt_main = main); - } > FLASH - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > FLASH - - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > FLASH - - __exidx_end = .; - - __etext = .; - - .vector_relocation : - { - . = ALIGN(4); - __vector_tbl_reloc__ = .; - . = . + (__isr_vector_end - __isr_vector_start); - . = ALIGN(4); - } > SRAM - - _sidata = LOADADDR(.data); - .coredata : - { - __coredata_start__ = .; - *(.data.core) - . = ALIGN(4); - __coredata_end__ = .; - } > CCRAM AT > FLASH - - __ecoredata = __etext + SIZEOF(.coredata); - - .data : - { - _sdata = .; - __data_start__ = .; - *(vtable) - *(.data*) - - KEEP(*(.jcr*)) - . = ALIGN(4); - /* All data end */ - __data_end__ = .; - _edata = .; - } > SRAM AT > FLASH - - .corebss (NOLOAD): - { - . = ALIGN(4); - __corebss_start__ = .; - *(.bss.core) - . = ALIGN(4); - __corebss_end__ = .; - *(.corebss*) - *(.bss.core.nz) - . = ALIGN(4); - __ecorebss = .; - } > CCRAM - - _sbss = LOADADDR(.bss); - .bss : - { - . = ALIGN(4); - __bss_start__ = .; - *(.bss*) - *(COMMON) - . = ALIGN(4); - __bss_end__ = .; - _ebss = .; - } > SRAM - - . = ALIGN(8); - __HeapBase = .; - __HeapLimit = ORIGIN(SRAM) + LENGTH(SRAM); - - _sram_start = ORIGIN(SRAM); - _ccram_start = ORIGIN(CCRAM); - - /* .stack_dummy section doesn't contains any symbols. It is only - * used for linker to calculate size of stack sections, and assign - * values to stack symbols later */ - .stack_dummy (COPY): - { - *(.stack*) - } > CCRAM - - /* Set stack top to end of CCRAM; stack limit is bottom of stack */ - __StackTop = ORIGIN(CCRAM) + LENGTH(CCRAM); - __StackLimit = __StackTop - SIZEOF(.stack_dummy); - PROVIDE(__stack = __StackTop); - - /* Check for CCRAM overflow */ - ASSERT(__StackLimit >= __ecorebss, "CCRAM overflow!") -} - From 6d30d2c398a06ae6fdbdea5695f93d55c2beae83 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Wed, 5 Jun 2024 22:11:51 +0200 Subject: [PATCH 4/6] hw/bsp: Update all STMF3 BSPs to use common startup This removes local startup code and linker scripts Signed-off-by: Jerzy Kasenberg --- hw/bsp/nucleo-f303k8/bsp.yml | 8 +- .../link/include/mcu_config.ld.h} | 27 +- .../link/include/memory_regions.ld.h} | 22 +- hw/bsp/nucleo-f303k8/nucleo-f303k8_debug.cmd | 22 - .../nucleo-f303k8/nucleo-f303k8_download.cmd | 22 - .../nucleo-f303k8/nucleo-f303k8_download.sh | 55 -- hw/bsp/nucleo-f303k8/pkg.yml | 2 + .../src/arch/cortex_m4/startup_stm32f303x8.s | 408 -------------- hw/bsp/nucleo-f303k8/syscfg.yml | 8 + hw/bsp/nucleo-f303re/bsp.yml | 11 +- .../link/include/mcu_config.ld.h | 33 ++ .../include/memory_regions.ld.h} | 22 +- hw/bsp/nucleo-f303re/nucleo-f303re_debug.cmd | 22 - .../nucleo-f303re/nucleo-f303re_download.cmd | 22 - .../nucleo-f303re/nucleo-f303re_download.sh | 57 -- hw/bsp/nucleo-f303re/pkg.yml | 2 + .../src/arch/cortex_m4/startup_stm32f303xe.s | 506 ------------------ hw/bsp/nucleo-f303re/syscfg.yml | 9 + hw/bsp/stm32f3discovery/bsp.yml | 11 +- .../link/include/mcu_config.ld.h | 33 ++ .../link/include/memory_regions.ld.h} | 23 +- hw/bsp/stm32f3discovery/pkg.yml | 2 + .../src/arch/cortex_m4/startup_stm32f303xc.s | 493 ----------------- .../stm32f3discovery_debug.cmd | 22 - .../stm32f3discovery_download.cmd | 22 - .../stm32f3discovery_download.sh | 41 -- hw/bsp/stm32f3discovery/syscfg.yml | 8 + 27 files changed, 141 insertions(+), 1772 deletions(-) rename hw/bsp/{stm32f3discovery/stm32f3discovery.ld => nucleo-f303k8/link/include/mcu_config.ld.h} (69%) rename hw/bsp/{stm32f3discovery/boot-stm32f3discovery.ld => nucleo-f303k8/link/include/memory_regions.ld.h} (74%) delete mode 100644 hw/bsp/nucleo-f303k8/nucleo-f303k8_debug.cmd delete mode 100644 hw/bsp/nucleo-f303k8/nucleo-f303k8_download.cmd delete mode 100755 hw/bsp/nucleo-f303k8/nucleo-f303k8_download.sh delete mode 100644 hw/bsp/nucleo-f303k8/src/arch/cortex_m4/startup_stm32f303x8.s create mode 100644 hw/bsp/nucleo-f303re/link/include/mcu_config.ld.h rename hw/bsp/nucleo-f303re/{boot-nucleo-f303re.ld => link/include/memory_regions.ld.h} (74%) delete mode 100644 hw/bsp/nucleo-f303re/nucleo-f303re_debug.cmd delete mode 100644 hw/bsp/nucleo-f303re/nucleo-f303re_download.cmd delete mode 100755 hw/bsp/nucleo-f303re/nucleo-f303re_download.sh delete mode 100644 hw/bsp/nucleo-f303re/src/arch/cortex_m4/startup_stm32f303xe.s create mode 100644 hw/bsp/stm32f3discovery/link/include/mcu_config.ld.h rename hw/bsp/{nucleo-f303re/nucleo-f303re.ld => stm32f3discovery/link/include/memory_regions.ld.h} (73%) delete mode 100644 hw/bsp/stm32f3discovery/src/arch/cortex_m4/startup_stm32f303xc.s delete mode 100644 hw/bsp/stm32f3discovery/stm32f3discovery_debug.cmd delete mode 100644 hw/bsp/stm32f3discovery/stm32f3discovery_download.cmd delete mode 100755 hw/bsp/stm32f3discovery/stm32f3discovery_download.sh diff --git a/hw/bsp/nucleo-f303k8/bsp.yml b/hw/bsp/nucleo-f303k8/bsp.yml index 89e7d8bb6d..e910ac0d65 100644 --- a/hw/bsp/nucleo-f303k8/bsp.yml +++ b/hw/bsp/nucleo-f303k8/bsp.yml @@ -22,13 +22,9 @@ bsp.url: https://www.st.com/en/evaluation-tools/nucleo-f303k8.html bsp.maker: "STMicroelectronics" bsp.arch: cortex_m4 bsp.compiler: compiler/arm-none-eabi-m4 -bsp.linkerscript: - - "hw/bsp/nucleo-f303k8/nucleo-f303k8.ld" - - "@apache-mynewt-core/hw/mcu/stm/stm32f3xx/stm32f303.ld" -bsp.downloadscript: "hw/bsp/nucleo-f303k8/nucleo-f303k8_download.sh" +bsp.linkerscript: autogenerated +bsp.downloadscript: "hw/scripts/download.sh" bsp.debugscript: "hw/bsp/nucleo-f303k8/nucleo-f303k8_debug.sh" -bsp.downloadscript.WINDOWS.OVERWRITE: "hw/bsp/nucleo-f303k8/nucleo-f303k8_download.cmd" -bsp.debugscript.WINDOWS.OVERWRITE: "hw/bsp/nucleo-f303k8/nucleo-f303k8_debug.cmd" bsp.flash_map: areas: diff --git a/hw/bsp/stm32f3discovery/stm32f3discovery.ld b/hw/bsp/nucleo-f303k8/link/include/mcu_config.ld.h similarity index 69% rename from hw/bsp/stm32f3discovery/stm32f3discovery.ld rename to hw/bsp/nucleo-f303k8/link/include/mcu_config.ld.h index 0316a347b8..3596fc2cc1 100644 --- a/hw/bsp/stm32f3discovery/stm32f3discovery.ld +++ b/hw/bsp/nucleo-f303k8/link/include/mcu_config.ld.h @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -6,7 +6,7 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, @@ -16,17 +16,18 @@ * specific language governing permissions and limitations * under the License. */ -ENTRY(Reset_Handler) /* - * Memory map + * Memory regions placed in CCM + * If stack or core data or other section should be place in RAM + * /link/include/target_config.ld.h should just do: + * #undef BSSNZ_RAM + * #undef COREBSS_RAM + * #undef COREDATA_RAM + * #undef STACK_REGION */ -MEMORY { - FLASH (rx): ORIGIN = 0x08004000, LENGTH = 88K - CCRAM (rw): ORIGIN = 0x10000000, LENGTH = 8K - SRAM (rw): ORIGIN = 0x20000000, LENGTH = 40K -} -/* - * Image header size - no bootloader support, no header. - */ -_imghdr_size = 0x20; + +#define BSSNZ_RAM CCM +#define COREBSS_RAM CCM +#define COREDATA_RAM CCM +#define STACK_REGION CCM diff --git a/hw/bsp/stm32f3discovery/boot-stm32f3discovery.ld b/hw/bsp/nucleo-f303k8/link/include/memory_regions.ld.h similarity index 74% rename from hw/bsp/stm32f3discovery/boot-stm32f3discovery.ld rename to hw/bsp/nucleo-f303k8/link/include/memory_regions.ld.h index 4509320b31..8fc56b43d4 100644 --- a/hw/bsp/stm32f3discovery/boot-stm32f3discovery.ld +++ b/hw/bsp/nucleo-f303k8/link/include/memory_regions.ld.h @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -6,7 +6,7 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, @@ -16,16 +16,10 @@ * specific language governing permissions and limitations * under the License. */ -ENTRY(Reset_Handler) - -/* - * Memory map - */ -MEMORY { - FLASH (rx): ORIGIN = 0x08000000, LENGTH = 16K - CCRAM (rw): ORIGIN = 0x10000000, LENGTH = 8K - SRAM (rw): ORIGIN = 0x20000000, LENGTH = 40K -} -/* The bootloader does not contain an image header */ -_imghdr_size = 0x0; +#ifdef STACK_REGION + CCM (rwx) : ORIGIN = 0x10000000, LENGTH = (4K - STACK_SIZE) + STACK_RAM (rw) : ORIGIN = 0x10001000 - STACK_SIZE, LENGTH = STACK_SIZE +#else + CCM (rwx) : ORIGIN = 0x10000000, LENGTH = 4K +#endif diff --git a/hw/bsp/nucleo-f303k8/nucleo-f303k8_debug.cmd b/hw/bsp/nucleo-f303k8/nucleo-f303k8_debug.cmd deleted file mode 100644 index 3444fd3279..0000000000 --- a/hw/bsp/nucleo-f303k8/nucleo-f303k8_debug.cmd +++ /dev/null @@ -1,22 +0,0 @@ -@rem -@rem Licensed to the Apache Software Foundation (ASF) under one -@rem or more contributor license agreements. See the NOTICE file -@rem distributed with this work for additional information -@rem regarding copyright ownership. The ASF licenses this file -@rem to you under the Apache License, Version 2.0 (the -@rem "License"); you may not use this file except in compliance -@rem with the License. You may obtain a copy of the License at -@rem -@rem http://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, -@rem software distributed under the License is distributed on an -@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@rem KIND, either express or implied. See the License for the -@rem specific language governing permissions and limitations -@rem under the License. -@rem - -@rem Execute a shell with a script of the same name and .sh extension - -@bash "%~dp0%~n0.sh" diff --git a/hw/bsp/nucleo-f303k8/nucleo-f303k8_download.cmd b/hw/bsp/nucleo-f303k8/nucleo-f303k8_download.cmd deleted file mode 100644 index 3444fd3279..0000000000 --- a/hw/bsp/nucleo-f303k8/nucleo-f303k8_download.cmd +++ /dev/null @@ -1,22 +0,0 @@ -@rem -@rem Licensed to the Apache Software Foundation (ASF) under one -@rem or more contributor license agreements. See the NOTICE file -@rem distributed with this work for additional information -@rem regarding copyright ownership. The ASF licenses this file -@rem to you under the Apache License, Version 2.0 (the -@rem "License"); you may not use this file except in compliance -@rem with the License. You may obtain a copy of the License at -@rem -@rem http://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, -@rem software distributed under the License is distributed on an -@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@rem KIND, either express or implied. See the License for the -@rem specific language governing permissions and limitations -@rem under the License. -@rem - -@rem Execute a shell with a script of the same name and .sh extension - -@bash "%~dp0%~n0.sh" diff --git a/hw/bsp/nucleo-f303k8/nucleo-f303k8_download.sh b/hw/bsp/nucleo-f303k8/nucleo-f303k8_download.sh deleted file mode 100755 index 23d43dc2d2..0000000000 --- a/hw/bsp/nucleo-f303k8/nucleo-f303k8_download.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -# Called with following variables set: -# - BSP_PATH is absolute path to hw/bsp/bsp_name -# - BIN_BASENAME is the path to prefix to target binary, -# .elf appended to name is the ELF file -# - IMAGE_SLOT is the image slot to download to (for non-mfg-image, non-boot) -# - FEATURES holds the target features string -# - EXTRA_JTAG_CMD holds extra parameters to pass to jtag software -# - MFG_IMAGE is "1" if this is a manufacturing image - -if [ -z "$BIN_BASENAME" ]; then - echo "Need binary to download" - exit 1 -fi - -IS_BOOTLOADER=0 - -# Look for 'bootloader' in FEATURES -for feature in $FEATURES; do - if [ $feature == "bootloader" ]; then - IS_BOOTLOADER=1 - fi -done - -if [ "$MFG_IMAGE" == "1" ]; then - FILE_NAME=$BASENAME.bin -elif [ $IS_BOOTLOADER -eq 1 ]; then - FILE_NAME=$BIN_BASENAME.elf.bin -else - FILE_NAME=$BIN_BASENAME.elf -fi -FLASH_OFFSET=0x08000000 - -echo "Downloading" $FILE_NAME "to" $FLASH_OFFSET - -openocd -d0 -f board/st_nucleo_f3.cfg -c "init; reset halt; flash write_image erase $FILE_NAME; reset run; shutdown" 2>&1 | tee /tmp/newt.log - diff --git a/hw/bsp/nucleo-f303k8/pkg.yml b/hw/bsp/nucleo-f303k8/pkg.yml index a083902c1e..5b6e9edc55 100644 --- a/hw/bsp/nucleo-f303k8/pkg.yml +++ b/hw/bsp/nucleo-f303k8/pkg.yml @@ -35,3 +35,5 @@ pkg.cflags.HARDFLOAT: pkg.deps: - "@apache-mynewt-core/hw/mcu/stm/stm32f3xx" - "@apache-mynewt-core/libc" + - "@apache-mynewt-core/hw/scripts" + - "@apache-mynewt-core/boot/startup" diff --git a/hw/bsp/nucleo-f303k8/src/arch/cortex_m4/startup_stm32f303x8.s b/hw/bsp/nucleo-f303k8/src/arch/cortex_m4/startup_stm32f303x8.s deleted file mode 100644 index 36fa04d8ce..0000000000 --- a/hw/bsp/nucleo-f303k8/src/arch/cortex_m4/startup_stm32f303x8.s +++ /dev/null @@ -1,408 +0,0 @@ -/** - ****************************************************************************** - * @file startup_stm32f303x8.s - * @author MCD Application Team - * @brief STM32F303x6/STM32F303x8 devices vector table for GCC toolchain. - * This module performs: - * - Set the initial SP - * - Set the initial PC == Reset_Handler, - * - Set the vector table entries with the exceptions ISR address, - * - Configure the clock system - * - 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. - ****************************************************************************** - * - * 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. - * - ****************************************************************************** - */ - - .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 - -.equ BootRAM, 0xF1E0F85F -/** - * @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 /* Atollic update: set stack pointer */ - -/* Copy the data segment initializers from flash to SRAM */ - movs r1, #0 - b LoopCopyDataInit - -CopyDataInit: - ldr r3, =_sidata - ldr r3, [r3, r1] - str r3, [r0, r1] - adds r1, r1, #4 - -LoopCopyDataInit: - ldr r0, =_sdata - ldr r3, =_edata - adds r2, r0, r1 - cmp r2, r3 - bcc CopyDataInit - ldr r2, =_sbss - b LoopFillZerobss -/* Zero fill the bss segment. */ -FillZerobss: - movs r3, #0 - str r3, [r2], #4 - -LoopFillZerobss: - ldr r3, = _ebss - cmp r2, r3 - bcc FillZerobss - - ldr r0, =__HeapBase - ldr r1, =__HeapLimit - bl _sbrkInit - -/* Call the clock system intitialization function.*/ - bl SystemInit -/* Call the application's entry point.*/ - bl _start - -LoopForever: - b LoopForever - -.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-M4. 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 - .size g_pfnVectors, .-g_pfnVectors - - -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 - .word WWDG_IRQHandler - .word PVD_IRQHandler - .word TAMP_STAMP_IRQHandler - .word RTC_WKUP_IRQHandler - .word FLASH_IRQHandler - .word RCC_IRQHandler - .word EXTI0_IRQHandler - .word EXTI1_IRQHandler - .word EXTI2_TSC_IRQHandler - .word EXTI3_IRQHandler - .word EXTI4_IRQHandler - .word DMA1_Channel1_IRQHandler - .word DMA1_Channel2_IRQHandler - .word DMA1_Channel3_IRQHandler - .word DMA1_Channel4_IRQHandler - .word DMA1_Channel5_IRQHandler - .word DMA1_Channel6_IRQHandler - .word DMA1_Channel7_IRQHandler - .word ADC1_2_IRQHandler - .word CAN_TX_IRQHandler - .word CAN_RX0_IRQHandler - .word CAN_RX1_IRQHandler - .word CAN_SCE_IRQHandler - .word EXTI9_5_IRQHandler - .word TIM1_BRK_TIM15_IRQHandler - .word TIM1_UP_TIM16_IRQHandler - .word TIM1_TRG_COM_TIM17_IRQHandler - .word TIM1_CC_IRQHandler - .word TIM2_IRQHandler - .word TIM3_IRQHandler - .word 0 - .word I2C1_EV_IRQHandler - .word I2C1_ER_IRQHandler - .word 0 - .word 0 - .word SPI1_IRQHandler - .word 0 - .word USART1_IRQHandler - .word USART2_IRQHandler - .word USART3_IRQHandler - .word EXTI15_10_IRQHandler - .word RTC_Alarm_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word TIM6_DAC1_IRQHandler - .word TIM7_DAC2_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word COMP2_IRQHandler - .word COMP4_6_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word FPU_IRQHandler - -/******************************************************************************* -* -* 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_TSC_IRQHandler - .thumb_set EXTI2_TSC_IRQHandler,Default_Handler - - .weak EXTI3_IRQHandler - .thumb_set EXTI3_IRQHandler,Default_Handler - - .weak EXTI4_IRQHandler - .thumb_set EXTI4_IRQHandler,Default_Handler - - .weak DMA1_Channel1_IRQHandler - .thumb_set DMA1_Channel1_IRQHandler,Default_Handler - - .weak DMA1_Channel2_IRQHandler - .thumb_set DMA1_Channel2_IRQHandler,Default_Handler - - .weak DMA1_Channel3_IRQHandler - .thumb_set DMA1_Channel3_IRQHandler,Default_Handler - - .weak DMA1_Channel4_IRQHandler - .thumb_set DMA1_Channel4_IRQHandler,Default_Handler - - .weak DMA1_Channel5_IRQHandler - .thumb_set DMA1_Channel5_IRQHandler,Default_Handler - - .weak DMA1_Channel6_IRQHandler - .thumb_set DMA1_Channel6_IRQHandler,Default_Handler - - .weak DMA1_Channel7_IRQHandler - .thumb_set DMA1_Channel7_IRQHandler,Default_Handler - - .weak ADC1_2_IRQHandler - .thumb_set ADC1_2_IRQHandler,Default_Handler - - .weak CAN_TX_IRQHandler - .thumb_set CAN_TX_IRQHandler,Default_Handler - - .weak CAN_RX0_IRQHandler - .thumb_set CAN_RX0_IRQHandler,Default_Handler - - .weak CAN_RX1_IRQHandler - .thumb_set CAN_RX1_IRQHandler,Default_Handler - - .weak CAN_SCE_IRQHandler - .thumb_set CAN_SCE_IRQHandler,Default_Handler - - .weak EXTI9_5_IRQHandler - .thumb_set EXTI9_5_IRQHandler,Default_Handler - - .weak TIM1_BRK_TIM15_IRQHandler - .thumb_set TIM1_BRK_TIM15_IRQHandler,Default_Handler - - .weak TIM1_UP_TIM16_IRQHandler - .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler - - .weak TIM1_TRG_COM_TIM17_IRQHandler - .thumb_set TIM1_TRG_COM_TIM17_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 I2C1_EV_IRQHandler - .thumb_set I2C1_EV_IRQHandler,Default_Handler - - .weak I2C1_ER_IRQHandler - .thumb_set I2C1_ER_IRQHandler,Default_Handler - - .weak SPI1_IRQHandler - .thumb_set SPI1_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 TIM6_DAC1_IRQHandler - .thumb_set TIM6_DAC1_IRQHandler,Default_Handler - - .weak TIM7_DAC2_IRQHandler - .thumb_set TIM7_DAC2_IRQHandler,Default_Handler - - .weak COMP2_IRQHandler - .thumb_set COMP2_IRQHandler,Default_Handler - - .weak COMP4_6_IRQHandler - .thumb_set COMP4_6_IRQHandler,Default_Handler - - .weak FPU_IRQHandler - .thumb_set FPU_IRQHandler,Default_Handler -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/hw/bsp/nucleo-f303k8/syscfg.yml b/hw/bsp/nucleo-f303k8/syscfg.yml index 3a464adb1b..b442618fc7 100644 --- a/hw/bsp/nucleo-f303k8/syscfg.yml +++ b/hw/bsp/nucleo-f303k8/syscfg.yml @@ -23,6 +23,8 @@ syscfg.defs: value: 64 syscfg.vals: + MCU_RAM_START: 0x20000000 + MCU_RAM_SIZE: 12K REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS NFFS_FLASH_AREA: FLASH_AREA_NFFS @@ -47,3 +49,9 @@ syscfg.vals: UART_1_PIN_RTS: 'MCU_GPIO_PORTA(12)' UART_1_PIN_CTS: 'MCU_GPIO_PORTA(11)' TIMER_0_TIM: 'TIM15' + + # Flasher parameters + MYNEWT_DOWNLOADER: openocd + MYNEWT_DOWNLOADER_OPENOCD_BOARD: board/st_nucleo_f3.cfg + MYNEWT_DOWNLOADER_MFG_IMAGE_FLASH_OFFSET: 0x08000000 + JLINK_TARGET: STM32F303K8 diff --git a/hw/bsp/nucleo-f303re/bsp.yml b/hw/bsp/nucleo-f303re/bsp.yml index 9a41b0cabf..ca0034debe 100644 --- a/hw/bsp/nucleo-f303re/bsp.yml +++ b/hw/bsp/nucleo-f303re/bsp.yml @@ -22,16 +22,9 @@ bsp.url: https://www.st.com/en/evaluation-tools/nucleo-f303re.html bsp.maker: "STMicroelectronics" bsp.arch: cortex_m4 bsp.compiler: compiler/arm-none-eabi-m4 -bsp.linkerscript: - - "hw/bsp/nucleo-f303re/nucleo-f303re.ld" - - "@apache-mynewt-core/hw/mcu/stm/stm32f3xx/stm32f303.ld" -bsp.linkerscript.BOOT_LOADER.OVERWRITE: - - "hw/bsp/nucleo-f303re/boot-nucleo-f303re.ld" - - "@apache-mynewt-core/hw/mcu/stm/stm32f3xx/stm32f303.ld" -bsp.downloadscript: "hw/bsp/nucleo-f303re/nucleo-f303re_download.sh" +bsp.linkerscript: autogenerated +bsp.downloadscript: "hw/scripts/download.sh" bsp.debugscript: "hw/bsp/nucleo-f303re/nucleo-f303re_debug.sh" -bsp.downloadscript.WINDOWS.OVERWRITE: "hw/bsp/nucleo-f303re/nucleo-f303re_download.cmd" -bsp.debugscript.WINDOWS.OVERWRITE: "hw/bsp/nucleo-f303re/nucleo-f303re_debug.cmd" bsp.flash_map: areas: diff --git a/hw/bsp/nucleo-f303re/link/include/mcu_config.ld.h b/hw/bsp/nucleo-f303re/link/include/mcu_config.ld.h new file mode 100644 index 0000000000..3596fc2cc1 --- /dev/null +++ b/hw/bsp/nucleo-f303re/link/include/mcu_config.ld.h @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/* + * Memory regions placed in CCM + * If stack or core data or other section should be place in RAM + * /link/include/target_config.ld.h should just do: + * #undef BSSNZ_RAM + * #undef COREBSS_RAM + * #undef COREDATA_RAM + * #undef STACK_REGION + */ + +#define BSSNZ_RAM CCM +#define COREBSS_RAM CCM +#define COREDATA_RAM CCM +#define STACK_REGION CCM diff --git a/hw/bsp/nucleo-f303re/boot-nucleo-f303re.ld b/hw/bsp/nucleo-f303re/link/include/memory_regions.ld.h similarity index 74% rename from hw/bsp/nucleo-f303re/boot-nucleo-f303re.ld rename to hw/bsp/nucleo-f303re/link/include/memory_regions.ld.h index 7653199243..63fa7bae44 100644 --- a/hw/bsp/nucleo-f303re/boot-nucleo-f303re.ld +++ b/hw/bsp/nucleo-f303re/link/include/memory_regions.ld.h @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -6,7 +6,7 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, @@ -16,16 +16,10 @@ * specific language governing permissions and limitations * under the License. */ -ENTRY(Reset_Handler) - -/* - * Memory map - */ -MEMORY { - FLASH (rx): ORIGIN = 0x08000000, LENGTH = 36K - CCRAM (rw): ORIGIN = 0x10000000, LENGTH = 16K - SRAM (rw): ORIGIN = 0x20000000, LENGTH = 64K -} -/* The bootloader does not contain an image header */ -_imghdr_size = 0x0; +#ifdef STACK_REGION + CCM (rwx) : ORIGIN = 0x10000000, LENGTH = (16K - STACK_SIZE) + STACK_RAM (rw) : ORIGIN = 0x10004000 - STACK_SIZE, LENGTH = STACK_SIZE +#else + CCM (rwx) : ORIGIN = 0x10000000, LENGTH = 16K +#endif diff --git a/hw/bsp/nucleo-f303re/nucleo-f303re_debug.cmd b/hw/bsp/nucleo-f303re/nucleo-f303re_debug.cmd deleted file mode 100644 index 3444fd3279..0000000000 --- a/hw/bsp/nucleo-f303re/nucleo-f303re_debug.cmd +++ /dev/null @@ -1,22 +0,0 @@ -@rem -@rem Licensed to the Apache Software Foundation (ASF) under one -@rem or more contributor license agreements. See the NOTICE file -@rem distributed with this work for additional information -@rem regarding copyright ownership. The ASF licenses this file -@rem to you under the Apache License, Version 2.0 (the -@rem "License"); you may not use this file except in compliance -@rem with the License. You may obtain a copy of the License at -@rem -@rem http://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, -@rem software distributed under the License is distributed on an -@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@rem KIND, either express or implied. See the License for the -@rem specific language governing permissions and limitations -@rem under the License. -@rem - -@rem Execute a shell with a script of the same name and .sh extension - -@bash "%~dp0%~n0.sh" diff --git a/hw/bsp/nucleo-f303re/nucleo-f303re_download.cmd b/hw/bsp/nucleo-f303re/nucleo-f303re_download.cmd deleted file mode 100644 index 3444fd3279..0000000000 --- a/hw/bsp/nucleo-f303re/nucleo-f303re_download.cmd +++ /dev/null @@ -1,22 +0,0 @@ -@rem -@rem Licensed to the Apache Software Foundation (ASF) under one -@rem or more contributor license agreements. See the NOTICE file -@rem distributed with this work for additional information -@rem regarding copyright ownership. The ASF licenses this file -@rem to you under the Apache License, Version 2.0 (the -@rem "License"); you may not use this file except in compliance -@rem with the License. You may obtain a copy of the License at -@rem -@rem http://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, -@rem software distributed under the License is distributed on an -@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@rem KIND, either express or implied. See the License for the -@rem specific language governing permissions and limitations -@rem under the License. -@rem - -@rem Execute a shell with a script of the same name and .sh extension - -@bash "%~dp0%~n0.sh" diff --git a/hw/bsp/nucleo-f303re/nucleo-f303re_download.sh b/hw/bsp/nucleo-f303re/nucleo-f303re_download.sh deleted file mode 100755 index d58c590406..0000000000 --- a/hw/bsp/nucleo-f303re/nucleo-f303re_download.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -# Called with following variables set: -# - BSP_PATH is absolute path to hw/bsp/bsp_name -# - BIN_BASENAME is the path to prefix to target binary, -# .elf appended to name is the ELF file -# - IMAGE_SLOT is the image slot to download to (for non-mfg-image, non-boot) -# - FEATURES holds the target features string -# - EXTRA_JTAG_CMD holds extra parameters to pass to jtag software -# - MFG_IMAGE is "1" if this is a manufacturing image - -if [ -z "$BIN_BASENAME" ]; then - echo "Need binary to download" - exit 1 -fi - -IS_BOOTLOADER=0 - -# Look for 'bootloader' in FEATURES -for feature in $FEATURES; do - if [ $feature == "bootloader" ]; then - IS_BOOTLOADER=1 - fi -done - -if [ $MFG_IMAGE -eq 1 ]; then - FLASH_OFFSET=0x08000000 - FILE_NAME=$BASENAME.bin -elif [ $IS_BOOTLOADER -eq 1 ]; then - FLASH_OFFSET=0x08000000 - FILE_NAME=$BIN_BASENAME.elf.bin -else - FLASH_OFFSET=0x08008000 - FILE_NAME=$BIN_BASENAME.img -fi - -echo "Downloading" $FILE_NAME "to" $FLASH_OFFSET - -openocd -f board/st_nucleo_f3.cfg -c "$EXTRA_JTAG_CMD" -c "init; reset halt; flash write_image erase $FILE_NAME $FLASH_OFFSET; reset run; shutdown" - diff --git a/hw/bsp/nucleo-f303re/pkg.yml b/hw/bsp/nucleo-f303re/pkg.yml index 3d1f108196..a6f0165d49 100644 --- a/hw/bsp/nucleo-f303re/pkg.yml +++ b/hw/bsp/nucleo-f303re/pkg.yml @@ -35,3 +35,5 @@ pkg.cflags.HARDFLOAT: pkg.deps: - "@apache-mynewt-core/hw/mcu/stm/stm32f3xx" - "@apache-mynewt-core/libc" + - "@apache-mynewt-core/hw/scripts" + - "@apache-mynewt-core/boot/startup" diff --git a/hw/bsp/nucleo-f303re/src/arch/cortex_m4/startup_stm32f303xe.s b/hw/bsp/nucleo-f303re/src/arch/cortex_m4/startup_stm32f303xe.s deleted file mode 100644 index b5b58acb19..0000000000 --- a/hw/bsp/nucleo-f303re/src/arch/cortex_m4/startup_stm32f303xe.s +++ /dev/null @@ -1,506 +0,0 @@ -/** - ****************************************************************************** - * @file startup_stm32f303xe.s - * @author MCD Application Team - * @brief STM32F303xE devices vector table for GCC toolchain. - * This module performs: - * - Set the initial SP - * - Set the initial PC == Reset_Handler, - * - Set the vector table entries with the exceptions ISR address, - * - Configure the clock system - * - 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. - ****************************************************************************** - * - * 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. - * - ****************************************************************************** - */ - - .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 - -.equ BootRAM, 0xF1E0F85F -/** - * @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 /* Atollic update: set stack pointer */ - -/* Copy the data segment initializers from flash to SRAM */ - movs r1, #0 - b LoopCopyDataInit - -CopyDataInit: - ldr r3, =_sidata - ldr r3, [r3, r1] - str r3, [r0, r1] - adds r1, r1, #4 - -LoopCopyDataInit: - ldr r0, =_sdata - ldr r3, =_edata - adds r2, r0, r1 - cmp r2, r3 - bcc CopyDataInit - ldr r2, =_sbss - b LoopFillZerobss -/* Zero fill the bss segment. */ -FillZerobss: - movs r3, #0 - str r3, [r2], #4 - -LoopFillZerobss: - ldr r3, = _ebss - cmp r2, r3 - bcc FillZerobss - - ldr r0, =__HeapBase - ldr r1, =__HeapLimit - bl _sbrkInit - -/* Call the clock system intitialization function.*/ - bl SystemInit -/* Call static constructors */ - bl __libc_init_array -/* Call the application's entry point.*/ - bl _start - -LoopForever: - b LoopForever - -.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-M4. 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 - .size g_pfnVectors, .-g_pfnVectors - - -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 - .word WWDG_IRQHandler - .word PVD_IRQHandler - .word TAMP_STAMP_IRQHandler - .word RTC_WKUP_IRQHandler - .word FLASH_IRQHandler - .word RCC_IRQHandler - .word EXTI0_IRQHandler - .word EXTI1_IRQHandler - .word EXTI2_TSC_IRQHandler - .word EXTI3_IRQHandler - .word EXTI4_IRQHandler - .word DMA1_Channel1_IRQHandler - .word DMA1_Channel2_IRQHandler - .word DMA1_Channel3_IRQHandler - .word DMA1_Channel4_IRQHandler - .word DMA1_Channel5_IRQHandler - .word DMA1_Channel6_IRQHandler - .word DMA1_Channel7_IRQHandler - .word ADC1_2_IRQHandler - .word USB_HP_CAN_TX_IRQHandler - .word USB_LP_CAN_RX0_IRQHandler - .word CAN_RX1_IRQHandler - .word CAN_SCE_IRQHandler - .word EXTI9_5_IRQHandler - .word TIM1_BRK_TIM15_IRQHandler - .word TIM1_UP_TIM16_IRQHandler - .word TIM1_TRG_COM_TIM17_IRQHandler - .word TIM1_CC_IRQHandler - .word TIM2_IRQHandler - .word TIM3_IRQHandler - .word TIM4_IRQHandler - .word I2C1_EV_IRQHandler - .word I2C1_ER_IRQHandler - .word I2C2_EV_IRQHandler - .word I2C2_ER_IRQHandler - .word SPI1_IRQHandler - .word SPI2_IRQHandler - .word USART1_IRQHandler - .word USART2_IRQHandler - .word USART3_IRQHandler - .word EXTI15_10_IRQHandler - .word RTC_Alarm_IRQHandler - .word USBWakeUp_IRQHandler - .word TIM8_BRK_IRQHandler - .word TIM8_UP_IRQHandler - .word TIM8_TRG_COM_IRQHandler - .word TIM8_CC_IRQHandler - .word ADC3_IRQHandler - .word FMC_IRQHandler - .word 0 - .word 0 - .word SPI3_IRQHandler - .word UART4_IRQHandler - .word UART5_IRQHandler - .word TIM6_DAC_IRQHandler - .word TIM7_IRQHandler - .word DMA2_Channel1_IRQHandler - .word DMA2_Channel2_IRQHandler - .word DMA2_Channel3_IRQHandler - .word DMA2_Channel4_IRQHandler - .word DMA2_Channel5_IRQHandler - .word ADC4_IRQHandler - .word 0 - .word 0 - .word COMP1_2_3_IRQHandler - .word COMP4_5_6_IRQHandler - .word COMP7_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word I2C3_EV_IRQHandler - .word I2C3_ER_IRQHandler - .word USB_HP_IRQHandler - .word USB_LP_IRQHandler - .word USBWakeUp_RMP_IRQHandler - .word TIM20_BRK_IRQHandler - .word TIM20_UP_IRQHandler - .word TIM20_TRG_COM_IRQHandler - .word TIM20_CC_IRQHandler - .word FPU_IRQHandler - .word 0 - .word 0 - .word SPI4_IRQHandler - -/******************************************************************************* -* -* 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_TSC_IRQHandler - .thumb_set EXTI2_TSC_IRQHandler,Default_Handler - - .weak EXTI3_IRQHandler - .thumb_set EXTI3_IRQHandler,Default_Handler - - .weak EXTI4_IRQHandler - .thumb_set EXTI4_IRQHandler,Default_Handler - - .weak DMA1_Channel1_IRQHandler - .thumb_set DMA1_Channel1_IRQHandler,Default_Handler - - .weak DMA1_Channel2_IRQHandler - .thumb_set DMA1_Channel2_IRQHandler,Default_Handler - - .weak DMA1_Channel3_IRQHandler - .thumb_set DMA1_Channel3_IRQHandler,Default_Handler - - .weak DMA1_Channel4_IRQHandler - .thumb_set DMA1_Channel4_IRQHandler,Default_Handler - - .weak DMA1_Channel5_IRQHandler - .thumb_set DMA1_Channel5_IRQHandler,Default_Handler - - .weak DMA1_Channel6_IRQHandler - .thumb_set DMA1_Channel6_IRQHandler,Default_Handler - - .weak DMA1_Channel7_IRQHandler - .thumb_set DMA1_Channel7_IRQHandler,Default_Handler - - .weak ADC1_2_IRQHandler - .thumb_set ADC1_2_IRQHandler,Default_Handler - - .weak USB_HP_CAN_TX_IRQHandler - .thumb_set USB_HP_CAN_TX_IRQHandler,Default_Handler - - .weak USB_LP_CAN_RX0_IRQHandler - .thumb_set USB_LP_CAN_RX0_IRQHandler,Default_Handler - - .weak CAN_RX1_IRQHandler - .thumb_set CAN_RX1_IRQHandler,Default_Handler - - .weak CAN_SCE_IRQHandler - .thumb_set CAN_SCE_IRQHandler,Default_Handler - - .weak EXTI9_5_IRQHandler - .thumb_set EXTI9_5_IRQHandler,Default_Handler - - .weak TIM1_BRK_TIM15_IRQHandler - .thumb_set TIM1_BRK_TIM15_IRQHandler,Default_Handler - - .weak TIM1_UP_TIM16_IRQHandler - .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler - - .weak TIM1_TRG_COM_TIM17_IRQHandler - .thumb_set TIM1_TRG_COM_TIM17_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 USBWakeUp_IRQHandler - .thumb_set USBWakeUp_IRQHandler,Default_Handler - - .weak TIM8_BRK_IRQHandler - .thumb_set TIM8_BRK_IRQHandler,Default_Handler - - .weak TIM8_UP_IRQHandler - .thumb_set TIM8_UP_IRQHandler,Default_Handler - - .weak TIM8_TRG_COM_IRQHandler - .thumb_set TIM8_TRG_COM_IRQHandler,Default_Handler - - .weak TIM8_CC_IRQHandler - .thumb_set TIM8_CC_IRQHandler,Default_Handler - - .weak ADC3_IRQHandler - .thumb_set ADC3_IRQHandler,Default_Handler - - .weak FMC_IRQHandler - .thumb_set FMC_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_Channel1_IRQHandler - .thumb_set DMA2_Channel1_IRQHandler,Default_Handler - - .weak DMA2_Channel2_IRQHandler - .thumb_set DMA2_Channel2_IRQHandler,Default_Handler - - .weak DMA2_Channel3_IRQHandler - .thumb_set DMA2_Channel3_IRQHandler,Default_Handler - - .weak DMA2_Channel4_IRQHandler - .thumb_set DMA2_Channel4_IRQHandler,Default_Handler - - .weak DMA2_Channel5_IRQHandler - .thumb_set DMA2_Channel5_IRQHandler,Default_Handler - - .weak ADC4_IRQHandler - .thumb_set ADC4_IRQHandler,Default_Handler - - .weak COMP1_2_3_IRQHandler - .thumb_set COMP1_2_3_IRQHandler,Default_Handler - - .weak COMP4_5_6_IRQHandler - .thumb_set COMP4_5_6_IRQHandler,Default_Handler - - .weak COMP7_IRQHandler - .thumb_set COMP7_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 USB_HP_IRQHandler - .thumb_set USB_HP_IRQHandler,Default_Handler - - .weak USB_LP_IRQHandler - .thumb_set USB_LP_IRQHandler,Default_Handler - - .weak USBWakeUp_RMP_IRQHandler - .thumb_set USBWakeUp_RMP_IRQHandler,Default_Handler - - .weak TIM20_BRK_IRQHandler - .thumb_set TIM20_BRK_IRQHandler,Default_Handler - - .weak TIM20_UP_IRQHandler - .thumb_set TIM20_UP_IRQHandler,Default_Handler - - .weak TIM20_TRG_COM_IRQHandler - .thumb_set TIM20_TRG_COM_IRQHandler,Default_Handler - - .weak TIM20_CC_IRQHandler - .thumb_set TIM20_CC_IRQHandler,Default_Handler - - .weak FPU_IRQHandler - .thumb_set FPU_IRQHandler,Default_Handler - - .weak SPI4_IRQHandler - .thumb_set SPI4_IRQHandler,Default_Handler -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/hw/bsp/nucleo-f303re/syscfg.yml b/hw/bsp/nucleo-f303re/syscfg.yml index 24090ce005..c8529144eb 100644 --- a/hw/bsp/nucleo-f303re/syscfg.yml +++ b/hw/bsp/nucleo-f303re/syscfg.yml @@ -23,8 +23,11 @@ syscfg.defs: value: 512 syscfg.vals: + MCU_RAM_START: 0x20000000 + MCU_RAM_SIZE: 64K REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS + CONFIG_FCB_NUM_AREAS: 23 NFFS_FLASH_AREA: FLASH_AREA_NFFS COREDUMP_FLASH_AREA: FLASH_AREA_IMAGE_1 STM32_CLOCK_HSI: 1 @@ -47,3 +50,9 @@ syscfg.vals: UART_1_PIN_RTS: 'MCU_GPIO_PORTA(12)' UART_1_PIN_CTS: 'MCU_GPIO_PORTA(11)' TIMER_0_TIM: 'TIM15' + + # Flasher parameters + MYNEWT_DOWNLOADER: openocd + MYNEWT_DOWNLOADER_OPENOCD_BOARD: board/st_nucleo_f3.cfg + MYNEWT_DOWNLOADER_MFG_IMAGE_FLASH_OFFSET: 0x08000000 + JLINK_TARGET: STM32F303RE diff --git a/hw/bsp/stm32f3discovery/bsp.yml b/hw/bsp/stm32f3discovery/bsp.yml index 308dadf700..7ce292e86d 100644 --- a/hw/bsp/stm32f3discovery/bsp.yml +++ b/hw/bsp/stm32f3discovery/bsp.yml @@ -22,16 +22,9 @@ bsp.url: https://www.st.com/en/evaluation-tools/stm32f3discovery.html bsp.maker: "STMicroelectronics" bsp.arch: cortex_m4 bsp.compiler: compiler/arm-none-eabi-m4 -bsp.linkerscript: - - "hw/bsp/stm32f3discovery/stm32f3discovery.ld" - - "@apache-mynewt-core/hw/mcu/stm/stm32f3xx/stm32f303.ld" -bsp.linkerscript.BOOT_LOADER.OVERWRITE: - - "hw/bsp/stm32f3discovery/boot-stm32f3discovery.ld" - - "@apache-mynewt-core/hw/mcu/stm/stm32f3xx/stm32f303.ld" -bsp.downloadscript: "hw/bsp/stm32f3discovery/stm32f3discovery_download.sh" +bsp.linkerscript: autogenerated +bsp.downloadscript: "hw/scripts/download.sh" bsp.debugscript: "hw/bsp/stm32f3discovery/stm32f3discovery_debug.sh" -bsp.downloadscript.WINDOWS.OVERWRITE: "hw/bsp/stm32f3discovery/stm32f3discovery_download.cmd" -bsp.debugscript.WINDOWS.OVERWRITE: "hw/bsp/stm32f3discovery/stm32f3discovery_debug.cmd" bsp.flash_map: areas: diff --git a/hw/bsp/stm32f3discovery/link/include/mcu_config.ld.h b/hw/bsp/stm32f3discovery/link/include/mcu_config.ld.h new file mode 100644 index 0000000000..3596fc2cc1 --- /dev/null +++ b/hw/bsp/stm32f3discovery/link/include/mcu_config.ld.h @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/* + * Memory regions placed in CCM + * If stack or core data or other section should be place in RAM + * /link/include/target_config.ld.h should just do: + * #undef BSSNZ_RAM + * #undef COREBSS_RAM + * #undef COREDATA_RAM + * #undef STACK_REGION + */ + +#define BSSNZ_RAM CCM +#define COREBSS_RAM CCM +#define COREDATA_RAM CCM +#define STACK_REGION CCM diff --git a/hw/bsp/nucleo-f303re/nucleo-f303re.ld b/hw/bsp/stm32f3discovery/link/include/memory_regions.ld.h similarity index 73% rename from hw/bsp/nucleo-f303re/nucleo-f303re.ld rename to hw/bsp/stm32f3discovery/link/include/memory_regions.ld.h index ce600e5f6f..9a1e8d1f3a 100644 --- a/hw/bsp/nucleo-f303re/nucleo-f303re.ld +++ b/hw/bsp/stm32f3discovery/link/include/memory_regions.ld.h @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -6,7 +6,7 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, @@ -16,17 +16,10 @@ * specific language governing permissions and limitations * under the License. */ -ENTRY(Reset_Handler) -/* - * Memory map - */ -MEMORY { - FLASH (rx): ORIGIN = 0x08008000, LENGTH = 192K - CCRAM (rw): ORIGIN = 0x10000000, LENGTH = 16K - SRAM (rw): ORIGIN = 0x20000000, LENGTH = 64K -} -/* - * Image header size - no bootloader support, no header. - */ -_imghdr_size = 0x20; +#ifdef STACK_REGION + CCM (rwx) : ORIGIN = 0x10000000, LENGTH = (8K - STACK_SIZE) + STACK_RAM (rw) : ORIGIN = 0x10002000 - STACK_SIZE, LENGTH = STACK_SIZE +#else + CCM (rwx) : ORIGIN = 0x10000000, LENGTH = 8K +#endif diff --git a/hw/bsp/stm32f3discovery/pkg.yml b/hw/bsp/stm32f3discovery/pkg.yml index d6ff24ebe4..b1e06542dc 100644 --- a/hw/bsp/stm32f3discovery/pkg.yml +++ b/hw/bsp/stm32f3discovery/pkg.yml @@ -35,6 +35,8 @@ pkg.cflags.HARDFLOAT: pkg.deps: - "@apache-mynewt-core/hw/mcu/stm/stm32f3xx" - "@apache-mynewt-core/libc" + - "@apache-mynewt-core/hw/scripts" + - "@apache-mynewt-core/boot/startup" pkg.deps.LSM303DLHC_ONB: - "@apache-mynewt-core/hw/drivers/sensors/lsm303dlhc" diff --git a/hw/bsp/stm32f3discovery/src/arch/cortex_m4/startup_stm32f303xc.s b/hw/bsp/stm32f3discovery/src/arch/cortex_m4/startup_stm32f303xc.s deleted file mode 100644 index d62443f19e..0000000000 --- a/hw/bsp/stm32f3discovery/src/arch/cortex_m4/startup_stm32f303xc.s +++ /dev/null @@ -1,493 +0,0 @@ -/** - ****************************************************************************** - * @file startup_stm32f303xc.s - * @author MCD Application Team - * @brief STM32F303xB/STM32F303xC devices vector table for GCC toolchain. - * This module performs: - * - Set the initial SP - * - Set the initial PC == Reset_Handler, - * - Set the vector table entries with the exceptions ISR address, - * - Configure the clock system - * - 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. - ****************************************************************************** - * - * 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. - * - ****************************************************************************** - */ - - .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 - -.equ BootRAM, 0xF1E0F85F -/** - * @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 /* Atollic update: set stack pointer */ - -/* Copy the data segment initializers from flash to SRAM */ - movs r1, #0 - b LoopCopyDataInit - -CopyDataInit: - ldr r3, =_sidata - ldr r3, [r3, r1] - str r3, [r0, r1] - adds r1, r1, #4 - -LoopCopyDataInit: - ldr r0, =_sdata - ldr r3, =_edata - adds r2, r0, r1 - cmp r2, r3 - bcc CopyDataInit - ldr r2, =_sbss - b LoopFillZerobss -/* Zero fill the bss segment. */ -FillZerobss: - movs r3, #0 - str r3, [r2], #4 - -LoopFillZerobss: - ldr r3, = _ebss - cmp r2, r3 - bcc FillZerobss - -/* - * Mynewt specific corebss clearing. - */ - ldr r2, =__corebss_start__ - b LoopFillZeroCoreBss - -/* Zero fill the bss segment. */ -FillZeroCoreBss: - movs r3, #0 - str r3, [r2], #4 - -LoopFillZeroCoreBss: - ldr r3, =__corebss_end__ - cmp r2, r3 - bcc FillZeroCoreBss - - ldr r0, =__HeapBase - ldr r1, =__HeapLimit - bl _sbrkInit - -/* Call the clock system initialization function.*/ - bl SystemInit -/* Call the application's entry point.*/ - bl _start - -LoopForever: - b LoopForever - -.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-M4. 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 - .size g_pfnVectors, .-g_pfnVectors - - -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 - .word WWDG_IRQHandler - .word PVD_IRQHandler - .word TAMP_STAMP_IRQHandler - .word RTC_WKUP_IRQHandler - .word FLASH_IRQHandler - .word RCC_IRQHandler - .word EXTI0_IRQHandler - .word EXTI1_IRQHandler - .word EXTI2_TSC_IRQHandler - .word EXTI3_IRQHandler - .word EXTI4_IRQHandler - .word DMA1_Channel1_IRQHandler - .word DMA1_Channel2_IRQHandler - .word DMA1_Channel3_IRQHandler - .word DMA1_Channel4_IRQHandler - .word DMA1_Channel5_IRQHandler - .word DMA1_Channel6_IRQHandler - .word DMA1_Channel7_IRQHandler - .word ADC1_2_IRQHandler - .word USB_HP_CAN_TX_IRQHandler - .word USB_LP_CAN_RX0_IRQHandler - .word CAN_RX1_IRQHandler - .word CAN_SCE_IRQHandler - .word EXTI9_5_IRQHandler - .word TIM1_BRK_TIM15_IRQHandler - .word TIM1_UP_TIM16_IRQHandler - .word TIM1_TRG_COM_TIM17_IRQHandler - .word TIM1_CC_IRQHandler - .word TIM2_IRQHandler - .word TIM3_IRQHandler - .word TIM4_IRQHandler - .word I2C1_EV_IRQHandler - .word I2C1_ER_IRQHandler - .word I2C2_EV_IRQHandler - .word I2C2_ER_IRQHandler - .word SPI1_IRQHandler - .word SPI2_IRQHandler - .word USART1_IRQHandler - .word USART2_IRQHandler - .word USART3_IRQHandler - .word EXTI15_10_IRQHandler - .word RTC_Alarm_IRQHandler - .word USBWakeUp_IRQHandler - .word TIM8_BRK_IRQHandler - .word TIM8_UP_IRQHandler - .word TIM8_TRG_COM_IRQHandler - .word TIM8_CC_IRQHandler - .word ADC3_IRQHandler - .word 0 - .word 0 - .word 0 - .word SPI3_IRQHandler - .word UART4_IRQHandler - .word UART5_IRQHandler - .word TIM6_DAC_IRQHandler - .word TIM7_IRQHandler - .word DMA2_Channel1_IRQHandler - .word DMA2_Channel2_IRQHandler - .word DMA2_Channel3_IRQHandler - .word DMA2_Channel4_IRQHandler - .word DMA2_Channel5_IRQHandler - .word ADC4_IRQHandler - .word 0 - .word 0 - .word COMP1_2_3_IRQHandler - .word COMP4_5_6_IRQHandler - .word COMP7_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word USB_HP_IRQHandler - .word USB_LP_IRQHandler - .word USBWakeUp_RMP_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word FPU_IRQHandler - -/******************************************************************************* -* -* 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_TSC_IRQHandler - .thumb_set EXTI2_TSC_IRQHandler,Default_Handler - - .weak EXTI3_IRQHandler - .thumb_set EXTI3_IRQHandler,Default_Handler - - .weak EXTI4_IRQHandler - .thumb_set EXTI4_IRQHandler,Default_Handler - - .weak DMA1_Channel1_IRQHandler - .thumb_set DMA1_Channel1_IRQHandler,Default_Handler - - .weak DMA1_Channel2_IRQHandler - .thumb_set DMA1_Channel2_IRQHandler,Default_Handler - - .weak DMA1_Channel3_IRQHandler - .thumb_set DMA1_Channel3_IRQHandler,Default_Handler - - .weak DMA1_Channel4_IRQHandler - .thumb_set DMA1_Channel4_IRQHandler,Default_Handler - - .weak DMA1_Channel5_IRQHandler - .thumb_set DMA1_Channel5_IRQHandler,Default_Handler - - .weak DMA1_Channel6_IRQHandler - .thumb_set DMA1_Channel6_IRQHandler,Default_Handler - - .weak DMA1_Channel7_IRQHandler - .thumb_set DMA1_Channel7_IRQHandler,Default_Handler - - .weak ADC1_2_IRQHandler - .thumb_set ADC1_2_IRQHandler,Default_Handler - - .weak USB_HP_CAN_TX_IRQHandler - .thumb_set USB_HP_CAN_TX_IRQHandler,Default_Handler - - .weak USB_LP_CAN_RX0_IRQHandler - .thumb_set USB_LP_CAN_RX0_IRQHandler,Default_Handler - - .weak CAN_RX1_IRQHandler - .thumb_set CAN_RX1_IRQHandler,Default_Handler - - .weak CAN_SCE_IRQHandler - .thumb_set CAN_SCE_IRQHandler,Default_Handler - - .weak EXTI9_5_IRQHandler - .thumb_set EXTI9_5_IRQHandler,Default_Handler - - .weak TIM1_BRK_TIM15_IRQHandler - .thumb_set TIM1_BRK_TIM15_IRQHandler,Default_Handler - - .weak TIM1_UP_TIM16_IRQHandler - .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler - - .weak TIM1_TRG_COM_TIM17_IRQHandler - .thumb_set TIM1_TRG_COM_TIM17_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 USBWakeUp_IRQHandler - .thumb_set USBWakeUp_IRQHandler,Default_Handler - - .weak TIM8_BRK_IRQHandler - .thumb_set TIM8_BRK_IRQHandler,Default_Handler - - .weak TIM8_UP_IRQHandler - .thumb_set TIM8_UP_IRQHandler,Default_Handler - - .weak TIM8_TRG_COM_IRQHandler - .thumb_set TIM8_TRG_COM_IRQHandler,Default_Handler - - .weak TIM8_CC_IRQHandler - .thumb_set TIM8_CC_IRQHandler,Default_Handler - - .weak ADC3_IRQHandler - .thumb_set ADC3_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_Channel1_IRQHandler - .thumb_set DMA2_Channel1_IRQHandler,Default_Handler - - .weak DMA2_Channel2_IRQHandler - .thumb_set DMA2_Channel2_IRQHandler,Default_Handler - - .weak DMA2_Channel3_IRQHandler - .thumb_set DMA2_Channel3_IRQHandler,Default_Handler - - .weak DMA2_Channel4_IRQHandler - .thumb_set DMA2_Channel4_IRQHandler,Default_Handler - - .weak DMA2_Channel5_IRQHandler - .thumb_set DMA2_Channel5_IRQHandler,Default_Handler - - .weak ADC4_IRQHandler - .thumb_set ADC4_IRQHandler,Default_Handler - - .weak COMP1_2_3_IRQHandler - .thumb_set COMP1_2_3_IRQHandler,Default_Handler - - .weak COMP4_5_6_IRQHandler - .thumb_set COMP4_5_6_IRQHandler,Default_Handler - - .weak COMP7_IRQHandler - .thumb_set COMP7_IRQHandler,Default_Handler - - .weak USB_HP_IRQHandler - .thumb_set USB_HP_IRQHandler,Default_Handler - - .weak USB_LP_IRQHandler - .thumb_set USB_LP_IRQHandler,Default_Handler - - .weak USBWakeUp_RMP_IRQHandler - .thumb_set USBWakeUp_RMP_IRQHandler,Default_Handler - - .weak FPU_IRQHandler - .thumb_set FPU_IRQHandler,Default_Handler -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/hw/bsp/stm32f3discovery/stm32f3discovery_debug.cmd b/hw/bsp/stm32f3discovery/stm32f3discovery_debug.cmd deleted file mode 100644 index 3444fd3279..0000000000 --- a/hw/bsp/stm32f3discovery/stm32f3discovery_debug.cmd +++ /dev/null @@ -1,22 +0,0 @@ -@rem -@rem Licensed to the Apache Software Foundation (ASF) under one -@rem or more contributor license agreements. See the NOTICE file -@rem distributed with this work for additional information -@rem regarding copyright ownership. The ASF licenses this file -@rem to you under the Apache License, Version 2.0 (the -@rem "License"); you may not use this file except in compliance -@rem with the License. You may obtain a copy of the License at -@rem -@rem http://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, -@rem software distributed under the License is distributed on an -@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@rem KIND, either express or implied. See the License for the -@rem specific language governing permissions and limitations -@rem under the License. -@rem - -@rem Execute a shell with a script of the same name and .sh extension - -@bash "%~dp0%~n0.sh" diff --git a/hw/bsp/stm32f3discovery/stm32f3discovery_download.cmd b/hw/bsp/stm32f3discovery/stm32f3discovery_download.cmd deleted file mode 100644 index 3444fd3279..0000000000 --- a/hw/bsp/stm32f3discovery/stm32f3discovery_download.cmd +++ /dev/null @@ -1,22 +0,0 @@ -@rem -@rem Licensed to the Apache Software Foundation (ASF) under one -@rem or more contributor license agreements. See the NOTICE file -@rem distributed with this work for additional information -@rem regarding copyright ownership. The ASF licenses this file -@rem to you under the Apache License, Version 2.0 (the -@rem "License"); you may not use this file except in compliance -@rem with the License. You may obtain a copy of the License at -@rem -@rem http://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, -@rem software distributed under the License is distributed on an -@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@rem KIND, either express or implied. See the License for the -@rem specific language governing permissions and limitations -@rem under the License. -@rem - -@rem Execute a shell with a script of the same name and .sh extension - -@bash "%~dp0%~n0.sh" diff --git a/hw/bsp/stm32f3discovery/stm32f3discovery_download.sh b/hw/bsp/stm32f3discovery/stm32f3discovery_download.sh deleted file mode 100755 index da98d4209c..0000000000 --- a/hw/bsp/stm32f3discovery/stm32f3discovery_download.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -# Called with following variables set: -# - CORE_PATH is absolute path to @apache-mynewt-core -# - BSP_PATH is absolute path to hw/bsp/bsp_name -# - BIN_BASENAME is the path to prefix to target binary, -# .elf appended to name is the ELF file -# - IMAGE_SLOT is the image slot to download to (for non-mfg-image, non-boot) -# - FEATURES holds the target features string -# - EXTRA_JTAG_CMD holds extra parameters to pass to jtag software -# - MFG_IMAGE is "1" if this is a manufacturing image -# - FLASH_OFFSET contains the flash offset to download to -# - BOOT_LOADER is set if downloading a bootloader -. $CORE_PATH/hw/scripts/openocd.sh - -CFG="-f board/stm32f3discovery.cfg" - -if [ "$MFG_IMAGE" ]; then - FLASH_OFFSET=0x08000000 -fi - -common_file_to_load -openocd_load -openocd_reset_run diff --git a/hw/bsp/stm32f3discovery/syscfg.yml b/hw/bsp/stm32f3discovery/syscfg.yml index 8cf94dffdf..c00eedbbcf 100644 --- a/hw/bsp/stm32f3discovery/syscfg.yml +++ b/hw/bsp/stm32f3discovery/syscfg.yml @@ -32,6 +32,8 @@ syscfg.defs: value: 400 syscfg.vals: + MCU_RAM_START: 0x20000000 + MCU_RAM_SIZE: 48K REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS CONFIG_FCB_NUM_AREAS: 16 @@ -67,5 +69,11 @@ syscfg.vals: TIMER_1_TIM: 'TIM16' TIMER_2_TIM: 'TIM17' + # Flasher parameters + MYNEWT_DOWNLOADER: openocd + MYNEWT_DOWNLOADER_OPENOCD_BOARD: board/stm32f3discovery.cfg + MYNEWT_DOWNLOADER_MFG_IMAGE_FLASH_OFFSET: 0x08000000 + JLINK_TARGET: STM32F303VC + syscfg.restrictions: - "!LSM303DLHC_ONB || I2C_0" From 0af6177e3ec18617653a90c045e9f7adc5590723 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Wed, 5 Jun 2024 23:10:24 +0200 Subject: [PATCH 5/6] Update STM32F3xx RAT style and license excludes Signed-off-by: Jerzy Kasenberg --- .rat-excludes | 7 +------ .style_ignored_dirs | 1 + LICENSE | 3 --- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/.rat-excludes b/.rat-excludes index ce3f98ca02..3b49e655d1 100644 --- a/.rat-excludes +++ b/.rat-excludes @@ -255,9 +255,6 @@ ppic32mx.h stm32f7xx_hal_conf.h startup_stm32f746xx.s -# STM32F3 Discovery BSP - BSD License -startup_stm32f303xc.s - # STM32L152C BSP - BSD License stm32l1xx_hal_conf.h startup_stm32l152xc.s @@ -334,9 +331,7 @@ system_apollo3.h clock_stm32f3xx.c system_stm32f3xx.c -# Nucleo-F303K8, Nucleo-F303RE - BSD License. -startup_stm32f303x8.s -startup_stm32f303xe.s +# Nucleo-F303K8, Nucleo-F303RE, STM32F3 Discovery - BSD License. stm32f3xx_hal_conf.h # Ignore documentation folder diff --git a/.style_ignored_dirs b/.style_ignored_dirs index d2f32bc776..cd3d83dc47 100644 --- a/.style_ignored_dirs +++ b/.style_ignored_dirs @@ -45,6 +45,7 @@ hw/bsp/stm32f7discovery/include/bsp/stm32f7xx_hal_conf.h hw/bsp/stm32l152discovery/include/bsp/stm32l1xx_hal_conf.h hw/bsp/nucleo-u575zi-q/include/bsp/stm32u5xx_hal_conf.h hw/bsp/weact_g431cb/include/bsp/stm32g4xx_hal_conf.h +hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c hw/mcu/stm/stm32g0xx/src/system_stm32g0xx.c hw/mcu/stm/stm32g4xx/src/system_stm32g4xx.c hw/mcu/stm/stm32u5xx/src/system_stm32u5xx.c diff --git a/LICENSE b/LICENSE index 76e463a3bc..591c58955d 100644 --- a/LICENSE +++ b/LICENSE @@ -320,11 +320,8 @@ This product bundles parts of STM32CubeF3, which is available under the * hw/mcu/stm/stm32f3xx/src/clock_stm32f3xx.c * hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c * hw/bsp/stm32f3discovery/include/bsp/stm32f3xx_hal_conf.h - * hw/bsp/stm32f3discovery/src/arch/cortex_m4/startup_stm32f303xc.s * hw/bsp/nucleo-f303k8/include/bsp/stm32f3xx_hal_conf.h - * hw/bsp/nucleo-f303k8/src/arch/cortex_m4/startup_stm32f303x8.s * hw/bsp/nucleo-f303re/include/bsp/stm32f3xx_hal_conf.h - * hw/bsp/nucleo-f303re/src/arch/cortex_m4/startup_stm32f303xe.s This product bundles parts of STM32CubeH7, which is available under the "3-clause BSD" license. Bundled files are: From 8fd5f8ef0dad65b1d06bd11afe5033a65074191a Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Thu, 6 Jun 2024 08:07:06 +0200 Subject: [PATCH 6/6] ci: Update ignored BSP list for bootloader build test STM32F303K8 board don't have space for bootloader in bsp. Signed-off-by: Jerzy Kasenberg --- .github/test_build_bootloader.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/test_build_bootloader.sh b/.github/test_build_bootloader.sh index 8389a7a9ff..96caa9f85a 100644 --- a/.github/test_build_bootloader.sh +++ b/.github/test_build_bootloader.sh @@ -22,6 +22,7 @@ EXIT_CODE=0 BSPS=$(ls repos/apache-mynewt-core/hw/bsp) IGNORED_BSPS="ci40 dialog_cmac embarc_emsk hifive1 native native-armv7\ native-mips nucleo-f030r8 nucleo-f072rb\ + nucleo-f303k8\ olimex-p103 olimex-pic32-emz64 olimex-pic32-hmz144\ pic32mx470_6lp_clicker pic32mz2048_wi-fire usbmkw41z\ weact_g431cb"