Skip to content

Commit

Permalink
hw/mcu/stm32f7: Use common startup code
Browse files Browse the repository at this point in the history
STM32F7 now uses common startup code for Cortex-M7 and
autogenerated linker script.

Flash cache initialization moved to hal_system_init.c to
make system_stm32f7xx.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 <jerzy.kasenberg@codecoup.pl>
  • Loading branch information
kasjer committed Jun 10, 2024
1 parent ff7b6f0 commit dd61b09
Show file tree
Hide file tree
Showing 21 changed files with 2,056 additions and 459 deletions.
12 changes: 4 additions & 8 deletions hw/mcu/stm/stm32f7xx/include/mcu/cmsis_nvic.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,12 @@

#include <stdint.h>

#if defined(STM32F746xx)
#define MCU_NUM_PERIPH_VECTORS 98
#elif defined(STM32F767xx)
#define MCU_NUM_PERIPH_VECTORS 110
#else
#error "Number of peripheral vectors not defined for this MCU."
#endif
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
#define NVIC_NUM_VECTORS (16 + MCU_NUM_PERIPH_VECTORS)

#include "stm32f7xx.h"

Expand Down
50 changes: 50 additions & 0 deletions hw/mcu/stm/stm32f7xx/include/mcu/mcu_vectors.h
Original file line number Diff line number Diff line change
@@ -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(STM32F722xx)
#include "vectors/stm32f722xx_vectors.h"
#elif defined(STM32F723xx)
#include "vectors/stm32f723xx_vectors.h"
#elif defined(STM32F732xx)
#include "vectors/stm32f732xx_vectors.h"
#elif defined(STM32F733xx)
#include "vectors/stm32f733xx_vectors.h"
#elif defined(STM32F756xx)
#include "vectors/stm32f756xx_vectors.h"
#elif defined(STM32F746xx)
#include "vectors/stm32f746xx_vectors.h"
#elif defined(STM32F745xx)
#include "vectors/stm32f745xx_vectors.h"
#elif defined(STM32F765xx)
#include "vectors/stm32f765xx_vectors.h"
#elif defined(STM32F767xx)
#include "vectors/stm32f767xx_vectors.h"
#elif defined(STM32F769xx)
#include "vectors/stm32f769xx_vectors.h"
#elif defined(STM32F777xx)
#include "vectors/stm32f777xx_vectors.h"
#elif defined(STM32F779xx)
#include "vectors/stm32f779xx_vectors.h"
#elif defined(STM32F730xx)
#include "vectors/stm32f730xx_vectors.h"
#elif defined(STM32F750xx)
#include "vectors/stm32f750xx_vectors.h"
#else
#error "Please select first the target STM32F7xx device used in your application"
#endif
139 changes: 139 additions & 0 deletions hw/mcu/stm/stm32f7xx/include/mcu/vectors/stm32f722xx_vectors.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
/*
* 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_IRQHandler)
INT_VECTOR(EXTI3_IRQHandler)
INT_VECTOR(EXTI4_IRQHandler)
INT_VECTOR(DMA1_Stream0_IRQHandler)
INT_VECTOR(DMA1_Stream1_IRQHandler)
INT_VECTOR(DMA1_Stream2_IRQHandler)
INT_VECTOR(DMA1_Stream3_IRQHandler)
INT_VECTOR(DMA1_Stream4_IRQHandler)
INT_VECTOR(DMA1_Stream5_IRQHandler)
INT_VECTOR(DMA1_Stream6_IRQHandler)
INT_VECTOR(ADC_IRQHandler)
INT_VECTOR(CAN1_TX_IRQHandler)
INT_VECTOR(CAN1_RX0_IRQHandler)
INT_VECTOR(CAN1_RX1_IRQHandler)
INT_VECTOR(CAN1_SCE_IRQHandler)
INT_VECTOR(EXTI9_5_IRQHandler)
INT_VECTOR(TIM1_BRK_TIM9_IRQHandler)
INT_VECTOR(TIM1_UP_TIM10_IRQHandler)
INT_VECTOR(TIM1_TRG_COM_TIM11_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(OTG_FS_WKUP_IRQHandler)
INT_VECTOR(TIM8_BRK_TIM12_IRQHandler)
INT_VECTOR(TIM8_UP_TIM13_IRQHandler)
INT_VECTOR(TIM8_TRG_COM_TIM14_IRQHandler)
INT_VECTOR(TIM8_CC_IRQHandler)
INT_VECTOR(DMA1_Stream7_IRQHandler)
INT_VECTOR(FMC_IRQHandler)
INT_VECTOR(SDMMC1_IRQHandler)
INT_VECTOR(TIM5_IRQHandler)
INT_VECTOR(SPI3_IRQHandler)
INT_VECTOR(UART4_IRQHandler)
INT_VECTOR(UART5_IRQHandler)
INT_VECTOR(TIM6_DAC_IRQHandler)
INT_VECTOR(TIM7_IRQHandler)
INT_VECTOR(DMA2_Stream0_IRQHandler)
INT_VECTOR(DMA2_Stream1_IRQHandler)
INT_VECTOR(DMA2_Stream2_IRQHandler)
INT_VECTOR(DMA2_Stream3_IRQHandler)
INT_VECTOR(DMA2_Stream4_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(OTG_FS_IRQHandler)
INT_VECTOR(DMA2_Stream5_IRQHandler)
INT_VECTOR(DMA2_Stream6_IRQHandler)
INT_VECTOR(DMA2_Stream7_IRQHandler)
INT_VECTOR(USART6_IRQHandler)
INT_VECTOR(I2C3_EV_IRQHandler)
INT_VECTOR(I2C3_ER_IRQHandler)
INT_VECTOR(OTG_HS_EP1_OUT_IRQHandler)
INT_VECTOR(OTG_HS_EP1_IN_IRQHandler)
INT_VECTOR(OTG_HS_WKUP_IRQHandler)
INT_VECTOR(OTG_HS_IRQHandler)
INT_VECTOR_UNUSED(0)
INT_VECTOR_UNUSED(0)
INT_VECTOR(RNG_IRQHandler)
INT_VECTOR(FPU_IRQHandler)
INT_VECTOR(UART7_IRQHandler)
INT_VECTOR(UART8_IRQHandler)
INT_VECTOR(SPI4_IRQHandler)
INT_VECTOR(SPI5_IRQHandler)
INT_VECTOR_UNUSED(0)
INT_VECTOR(SAI1_IRQHandler)
INT_VECTOR_UNUSED(0)
INT_VECTOR_UNUSED(0)
INT_VECTOR_UNUSED(0)
INT_VECTOR(SAI2_IRQHandler)
INT_VECTOR(QUADSPI_IRQHandler)
INT_VECTOR(LPTIM1_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(SDMMC2_IRQHandler)
139 changes: 139 additions & 0 deletions hw/mcu/stm/stm32f7xx/include/mcu/vectors/stm32f723xx_vectors.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
/*
* 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_IRQHandler)
INT_VECTOR(EXTI3_IRQHandler)
INT_VECTOR(EXTI4_IRQHandler)
INT_VECTOR(DMA1_Stream0_IRQHandler)
INT_VECTOR(DMA1_Stream1_IRQHandler)
INT_VECTOR(DMA1_Stream2_IRQHandler)
INT_VECTOR(DMA1_Stream3_IRQHandler)
INT_VECTOR(DMA1_Stream4_IRQHandler)
INT_VECTOR(DMA1_Stream5_IRQHandler)
INT_VECTOR(DMA1_Stream6_IRQHandler)
INT_VECTOR(ADC_IRQHandler)
INT_VECTOR(CAN1_TX_IRQHandler)
INT_VECTOR(CAN1_RX0_IRQHandler)
INT_VECTOR(CAN1_RX1_IRQHandler)
INT_VECTOR(CAN1_SCE_IRQHandler)
INT_VECTOR(EXTI9_5_IRQHandler)
INT_VECTOR(TIM1_BRK_TIM9_IRQHandler)
INT_VECTOR(TIM1_UP_TIM10_IRQHandler)
INT_VECTOR(TIM1_TRG_COM_TIM11_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(OTG_FS_WKUP_IRQHandler)
INT_VECTOR(TIM8_BRK_TIM12_IRQHandler)
INT_VECTOR(TIM8_UP_TIM13_IRQHandler)
INT_VECTOR(TIM8_TRG_COM_TIM14_IRQHandler)
INT_VECTOR(TIM8_CC_IRQHandler)
INT_VECTOR(DMA1_Stream7_IRQHandler)
INT_VECTOR(FMC_IRQHandler)
INT_VECTOR(SDMMC1_IRQHandler)
INT_VECTOR(TIM5_IRQHandler)
INT_VECTOR(SPI3_IRQHandler)
INT_VECTOR(UART4_IRQHandler)
INT_VECTOR(UART5_IRQHandler)
INT_VECTOR(TIM6_DAC_IRQHandler)
INT_VECTOR(TIM7_IRQHandler)
INT_VECTOR(DMA2_Stream0_IRQHandler)
INT_VECTOR(DMA2_Stream1_IRQHandler)
INT_VECTOR(DMA2_Stream2_IRQHandler)
INT_VECTOR(DMA2_Stream3_IRQHandler)
INT_VECTOR(DMA2_Stream4_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(OTG_FS_IRQHandler)
INT_VECTOR(DMA2_Stream5_IRQHandler)
INT_VECTOR(DMA2_Stream6_IRQHandler)
INT_VECTOR(DMA2_Stream7_IRQHandler)
INT_VECTOR(USART6_IRQHandler)
INT_VECTOR(I2C3_EV_IRQHandler)
INT_VECTOR(I2C3_ER_IRQHandler)
INT_VECTOR(OTG_HS_EP1_OUT_IRQHandler)
INT_VECTOR(OTG_HS_EP1_IN_IRQHandler)
INT_VECTOR(OTG_HS_WKUP_IRQHandler)
INT_VECTOR(OTG_HS_IRQHandler)
INT_VECTOR_UNUSED(0)
INT_VECTOR_UNUSED(0)
INT_VECTOR(RNG_IRQHandler)
INT_VECTOR(FPU_IRQHandler)
INT_VECTOR(UART7_IRQHandler)
INT_VECTOR(UART8_IRQHandler)
INT_VECTOR(SPI4_IRQHandler)
INT_VECTOR(SPI5_IRQHandler)
INT_VECTOR_UNUSED(0)
INT_VECTOR(SAI1_IRQHandler)
INT_VECTOR_UNUSED(0)
INT_VECTOR_UNUSED(0)
INT_VECTOR_UNUSED(0)
INT_VECTOR(SAI2_IRQHandler)
INT_VECTOR(QUADSPI_IRQHandler)
INT_VECTOR(LPTIM1_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(SDMMC2_IRQHandler)
Loading

0 comments on commit dd61b09

Please sign in to comment.