summaryrefslogtreecommitdiff
path: root/Project/src/platform/stm32f0-gcc/startup
diff options
context:
space:
mode:
Diffstat (limited to 'Project/src/platform/stm32f0-gcc/startup')
-rw-r--r--Project/src/platform/stm32f0-gcc/startup/handlers_cm.c113
-rw-r--r--Project/src/platform/stm32f0-gcc/startup/stack.cpp7
-rw-r--r--Project/src/platform/stm32f0-gcc/startup/startup.cpp96
3 files changed, 0 insertions, 216 deletions
diff --git a/Project/src/platform/stm32f0-gcc/startup/handlers_cm.c b/Project/src/platform/stm32f0-gcc/startup/handlers_cm.c
deleted file mode 100644
index 95b59a9..0000000
--- a/Project/src/platform/stm32f0-gcc/startup/handlers_cm.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Handlers setup code for Cortex-M.
- */
-
-typedef void (*ptr_func_t)();
-
-// Undefined handler is pointing to this function, this stop MCU.
-// This function name must by not mangled, so must be C,
-// because alias("..") is working only with C code
-void __stop() { while (1); }
-
-// Handlers for Cortex-M core.
-// These handler are with attribute 'weak' and can be overwritten
-// by non-weak function, default is __stop() function
-__attribute__((weak, alias("__stop"))) void RESET_handler();
-__attribute__((weak, alias("__stop"))) void NMI_handler();
-__attribute__((weak, alias("__stop"))) void HARDFAULT_handler();
-__attribute__((weak, alias("__stop"))) void MEMMANAGE_handler();
-__attribute__((weak, alias("__stop"))) void BUSFAULT_handler();
-__attribute__((weak, alias("__stop"))) void USAGEFAULT_handler();
-__attribute__((weak, alias("__stop"))) void SVCALL_handler();
-__attribute__((weak, alias("__stop"))) void DEBUGMONITOR_handler();
-__attribute__((weak, alias("__stop"))) void PENDSV_handler();
-__attribute__((weak, alias("__stop"))) void SYSTICK_handler();
-
-// Handlers for peripherals' interrupts
-__attribute__((weak, alias("__stop"))) void WWDG_handler();
-__attribute__((weak, alias("__stop"))) void PVD_VDDIO2_handler();
-__attribute__((weak, alias("__stop"))) void RTC_handler();
-__attribute__((weak, alias("__stop"))) void FLASH_handler();
-__attribute__((weak, alias("__stop"))) void RCC_CRS_handler();
-__attribute__((weak, alias("__stop"))) void EXTI0_1_handler();
-__attribute__((weak, alias("__stop"))) void EXTI2_3_handler();
-__attribute__((weak, alias("__stop"))) void EXTI4_15_handler();
-__attribute__((weak, alias("__stop"))) void TSC_handler();
-__attribute__((weak, alias("__stop"))) void DMA_0064_handler();
-__attribute__((weak, alias("__stop"))) void DMA_DMA2_0068_handler();
-__attribute__((weak, alias("__stop"))) void DMA_DMA2_006C_handler();
-__attribute__((weak, alias("__stop"))) void ADC_COMP_handler();
-__attribute__((weak, alias("__stop"))) void TIM1_0074_handler();
-__attribute__((weak, alias("__stop"))) void TIM1_0078_handler();
-__attribute__((weak, alias("__stop"))) void TIM2_handler();
-__attribute__((weak, alias("__stop"))) void TIM3_handler();
-__attribute__((weak, alias("__stop"))) void TIM6_DAC_handler();
-__attribute__((weak, alias("__stop"))) void TIM7_handler();
-__attribute__((weak, alias("__stop"))) void TIM14_handler();
-__attribute__((weak, alias("__stop"))) void TIM15_handler();
-__attribute__((weak, alias("__stop"))) void TIM16_handler();
-__attribute__((weak, alias("__stop"))) void TIM17_handler();
-__attribute__((weak, alias("__stop"))) void I2C1_handler();
-__attribute__((weak, alias("__stop"))) void I2C2_handler();
-__attribute__((weak, alias("__stop"))) void SPI1_handler();
-__attribute__((weak, alias("__stop"))) void SPI2_handler();
-__attribute__((weak, alias("__stop"))) void USART1_handler();
-__attribute__((weak, alias("__stop"))) void USART2_handler();
-__attribute__((weak, alias("__stop"))) void USART_00B3_handler();
-__attribute__((weak, alias("__stop"))) void CEC_CAN_handler();
-__attribute__((weak, alias("__stop"))) void USB_handler();
-
-// Dummy handler (for unused vectors)
-__attribute__((weak, alias("__stop"))) void DUMMY_handler();
-
-// Vector table for handlers
-// This array will be placed in ".vectors" section defined in linker script.
-__attribute__((section(".vectors"), used)) ptr_func_t __isr_vectors[] = {
- RESET_handler,
- NMI_handler,
- HARDFAULT_handler,
- MEMMANAGE_handler,
- BUSFAULT_handler,
- USAGEFAULT_handler,
- DUMMY_handler,
- DUMMY_handler,
- DUMMY_handler,
- DUMMY_handler,
- SVCALL_handler,
- DEBUGMONITOR_handler,
- DUMMY_handler,
- PENDSV_handler,
- SYSTICK_handler,
- WWDG_handler,
- PVD_VDDIO2_handler,
- RTC_handler,
- FLASH_handler,
- RCC_CRS_handler,
- EXTI0_1_handler,
- EXTI2_3_handler,
- EXTI4_15_handler,
- TSC_handler,
- DMA_0064_handler,
- DMA_DMA2_0068_handler,
- DMA_DMA2_006C_handler,
- ADC_COMP_handler,
- TIM1_0074_handler,
- TIM1_0078_handler,
- TIM2_handler,
- TIM3_handler,
- TIM6_DAC_handler,
- TIM7_handler,
- TIM14_handler,
- TIM15_handler,
- TIM16_handler,
- TIM17_handler,
- I2C1_handler,
- I2C2_handler,
- SPI1_handler,
- SPI2_handler,
- USART1_handler,
- USART2_handler,
- USART_00B3_handler,
- CEC_CAN_handler,
- USB_handler,
-};
diff --git a/Project/src/platform/stm32f0-gcc/startup/stack.cpp b/Project/src/platform/stm32f0-gcc/startup/stack.cpp
deleted file mode 100644
index d10595c..0000000
--- a/Project/src/platform/stm32f0-gcc/startup/stack.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-// stack definition code
-
-// top of stack
-extern unsigned __stacktop;
-
-// initial stack pointer is first address of program
-__attribute__((section(".stack"), used)) unsigned *__stack_init = &__stacktop;
diff --git a/Project/src/platform/stm32f0-gcc/startup/startup.cpp b/Project/src/platform/stm32f0-gcc/startup/startup.cpp
deleted file mode 100644
index 95276ae..0000000
--- a/Project/src/platform/stm32f0-gcc/startup/startup.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-// very simple startup code with definition of handlers for all cortex-m cores
-
-typedef void (*ptr_func_t)();
-
-// main application
-extern "C" int main();
-
-// location of these variables is defined in linker script
-extern unsigned __data_start;
-extern unsigned __data_end;
-extern unsigned __data_load;
-
-extern unsigned __bss_start;
-extern unsigned __bss_end;
-
-extern unsigned __heap_start;
-
-extern ptr_func_t __preinit_array_start[];
-extern ptr_func_t __preinit_array_end[];
-
-extern ptr_func_t __init_array_start[];
-extern ptr_func_t __init_array_end[];
-
-extern ptr_func_t __fini_array_start[];
-extern ptr_func_t __fini_array_end[];
-
-
-/** Copy default data to DATA section
- */
-void copy_data() {
- unsigned *src = &__data_load;
- unsigned *dst = &__data_start;
- while (dst < &__data_end) {
- *dst++ = *src++;
- }
-}
-
-/** Erase BSS section
- */
-void zero_bss() {
- unsigned *dst = &__bss_start;
- while (dst < &__bss_end) {
- *dst++ = 0;
- }
-}
-
-/** Fill heap memory
- */
-void fill_heap(unsigned fill=0x45455246) {
- unsigned *dst = &__heap_start;
- unsigned *msp_reg;
- __asm__("mrs %0, msp\n" : "=r" (msp_reg) );
- while (dst < msp_reg) {
- *dst++ = fill;
- }
-}
-
-/** Call constructors for static objects
- */
-void call_init_array() {
- auto array = __preinit_array_start;
- while (array < __preinit_array_end) {
- (*array)();
- array++;
- }
-
- array = __init_array_start;
- while (array < __init_array_end) {
- (*array)();
- array++;
- }
-}
-
-/** Call destructors for static objects
- */
-void call_fini_array() {
- auto array = __fini_array_start;
- while (array < __fini_array_end) {
- (*array)();
- array++;
- }
-}
-
-// reset handler
-extern "C" void RESET_handler() {
- copy_data();
- zero_bss();
- fill_heap();
- call_init_array();
- // run application
- main();
- // call destructors for static instances
- call_fini_array();
- // stop
- while (true);
-}