You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by je...@apache.org on 2024/06/10 10:06:59 UTC
(mynewt-core) branch master updated (f48267d02 -> 7939d1e50)
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
from f48267d02 bsp: Leave HSI on for STM32F1
new 209fbe6b4 mcu/stm32f3: Fix reset reason
new cd4bffd31 hw/mcu/stm32f3: Covert CRLF to LF
new 76415488c hw/mcu/stm32f3: Use common startup code
new c287f6089 hw/bsp: Update all STMF3 BSPs to use common startup
new 58a56243b Update STM32F3xx RAT style and license excludes
new 7939d1e50 ci: Update ignored BSP list for bootloader build test
The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/test_build_bootloader.sh | 1 +
.rat-excludes | 7 +-
.style_ignored_dirs | 1 +
LICENSE | 3 -
hw/bsp/nucleo-f303k8/bsp.yml | 8 +-
.../link/include/mcu_config.ld.h | 0
.../link/include/memory_regions.ld.h | 6 +-
hw/bsp/nucleo-f303k8/nucleo-f303k8.ld | 33 --
hw/bsp/nucleo-f303k8/nucleo-f303k8_debug.cmd | 22 -
hw/bsp/nucleo-f303k8/nucleo-f303k8_download.cmd | 22 -
hw/bsp/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/boot-nucleo-f303re.ld | 31 --
hw/bsp/nucleo-f303re/bsp.yml | 11 +-
.../link/include/mcu_config.ld.h | 0
.../link/include/memory_regions.ld.h | 6 +-
hw/bsp/nucleo-f303re/nucleo-f303re.ld | 32 --
hw/bsp/nucleo-f303re/nucleo-f303re_debug.cmd | 22 -
hw/bsp/nucleo-f303re/nucleo-f303re_download.cmd | 22 -
hw/bsp/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/boot-stm32f3discovery.ld | 31 --
hw/bsp/stm32f3discovery/bsp.yml | 11 +-
.../link/include/mcu_config.ld.h | 0
.../link/include/memory_regions.ld.h | 6 +-
hw/bsp/stm32f3discovery/pkg.yml | 2 +
.../src/arch/cortex_m4/startup_stm32f303xc.s | 493 --------------------
hw/bsp/stm32f3discovery/stm32f3discovery.ld | 32 --
hw/bsp/stm32f3discovery/stm32f3discovery_debug.cmd | 22 -
.../stm32f3discovery/stm32f3discovery_download.cmd | 22 -
.../stm32f3discovery/stm32f3discovery_download.sh | 41 --
hw/bsp/stm32f3discovery/syscfg.yml | 8 +
hw/mcu/stm/stm32f3xx/include/mcu/cmsis_nvic.h | 6 +-
hw/mcu/stm/stm32f3xx/include/mcu/mcu_vectors.h | 50 ++
.../include/mcu/vectors/stm32f301x8_vectors.h} | 43 +-
.../include/mcu/vectors/stm32f302x8_vectors.h} | 53 ++-
.../include/mcu/vectors/stm32f302xc_vectors.h} | 55 ++-
.../include/mcu/vectors/stm32f302xe_vectors.h} | 58 +--
.../include/mcu/vectors/stm32f303x8_vectors.h} | 59 ++-
.../include/mcu/vectors/stm32f303xc_vectors.h} | 50 +-
.../include/mcu/vectors/stm32f303xe_vectors.h} | 55 +--
.../include/mcu/vectors/stm32f318xx_vectors.h} | 43 +-
.../include/mcu/vectors/stm32f328xx_vectors.h} | 59 ++-
.../include/mcu/vectors/stm32f334x8_vectors.h} | 59 ++-
.../include/mcu/vectors/stm32f358xx_vectors.h} | 57 ++-
.../include/mcu/vectors/stm32f373xc_vectors.h} | 63 ++-
.../include/mcu/vectors/stm32f378xx_vectors.h} | 63 ++-
.../include/mcu/vectors/stm32f398xx_vectors.h} | 53 ++-
hw/mcu/stm/stm32f3xx/src/hal_reset_cause.c | 8 +-
.../{stm32f1xx => stm32f3xx}/src/hal_system_init.c | 6 +-
hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c | 415 +++++++++--------
hw/mcu/stm/stm32f3xx/stm32f303.ld | 214 ---------
56 files changed, 687 insertions(+), 2724 deletions(-)
copy hw/bsp/{ada_feather_stm32f405 => nucleo-f303k8}/link/include/mcu_config.ld.h (100%)
copy hw/bsp/{ada_feather_stm32f405 => nucleo-f303k8}/link/include/memory_regions.ld.h (82%)
delete mode 100644 hw/bsp/nucleo-f303k8/nucleo-f303k8.ld
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
delete mode 100644 hw/bsp/nucleo-f303re/boot-nucleo-f303re.ld
copy hw/bsp/{ada_feather_stm32f405 => nucleo-f303re}/link/include/mcu_config.ld.h (100%)
copy hw/bsp/{ada_feather_stm32f405 => nucleo-f303re}/link/include/memory_regions.ld.h (82%)
delete mode 100644 hw/bsp/nucleo-f303re/nucleo-f303re.ld
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
delete mode 100644 hw/bsp/stm32f3discovery/boot-stm32f3discovery.ld
copy hw/bsp/{ada_feather_stm32f405 => stm32f3discovery}/link/include/mcu_config.ld.h (100%)
copy hw/bsp/{ada_feather_stm32f405 => stm32f3discovery}/link/include/memory_regions.ld.h (82%)
delete mode 100644 hw/bsp/stm32f3discovery/src/arch/cortex_m4/startup_stm32f303xc.s
delete mode 100644 hw/bsp/stm32f3discovery/stm32f3discovery.ld
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
create mode 100644 hw/mcu/stm/stm32f3xx/include/mcu/mcu_vectors.h
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l412xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f301x8_vectors.h} (81%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l412xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f302x8_vectors.h} (81%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l422xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f302xc_vectors.h} (83%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l451xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f302xe_vectors.h} (80%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l412xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f303x8_vectors.h} (78%)
copy hw/mcu/stm/{stm32g4xx/include/mcu/vectors/stm32g471xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f303xc_vectors.h} (79%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l471xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f303xe_vectors.h} (80%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l412xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f318xx_vectors.h} (81%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l412xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f328xx_vectors.h} (78%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l412xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f334x8_vectors.h} (78%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l422xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f358xx_vectors.h} (81%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l431xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f373xc_vectors.h} (78%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l412xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f378xx_vectors.h} (80%)
copy hw/mcu/stm/{stm32l4xx/include/mcu/vectors/stm32l471xx_vectors.h => stm32f3xx/include/mcu/vectors/stm32f398xx_vectors.h} (81%)
copy hw/mcu/stm/{stm32f1xx => stm32f3xx}/src/hal_system_init.c (100%)
delete mode 100644 hw/mcu/stm/stm32f3xx/stm32f303.ld
(mynewt-core) 04/06: hw/bsp: Update all STMF3 BSPs to use common startup
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit c287f6089f89453dcef5df8a750ff450e9df6d21
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 5 22:11:51 2024 +0200
hw/bsp: Update all STMF3 BSPs to use common startup
This removes local startup code and linker scripts
Signed-off-by: Jerzy Kasenberg <je...@apache.org>
---
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 -
hw/bsp/nucleo-f303k8/nucleo-f303k8_download.cmd | 22 -
hw/bsp/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 +-
.../include/mcu_config.ld.h} | 27 +-
.../include/memory_regions.ld.h} | 22 +-
hw/bsp/nucleo-f303re/nucleo-f303re_debug.cmd | 22 -
hw/bsp/nucleo-f303re/nucleo-f303re_download.cmd | 22 -
hw/bsp/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} | 27 +-
.../link/include/memory_regions.ld.h} | 23 +-
hw/bsp/stm32f3discovery/pkg.yml | 2 +
.../src/arch/cortex_m4/startup_stm32f303xc.s | 493 --------------------
hw/bsp/stm32f3discovery/stm32f3discovery_debug.cmd | 22 -
.../stm32f3discovery/stm32f3discovery_download.cmd | 22 -
.../stm32f3discovery/stm32f3discovery_download.sh | 41 --
hw/bsp/stm32f3discovery/syscfg.yml | 8 +
27 files changed, 103 insertions(+), 1798 deletions(-)
diff --git a/hw/bsp/nucleo-f303k8/bsp.yml b/hw/bsp/nucleo-f303k8/bsp.yml
index 89e7d8bb6..e910ac0d6 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 0316a347b..3596fc2cc 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
+ * <target_name>/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 4509320b3..8fc56b43d 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 3444fd327..000000000
--- 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 3444fd327..000000000
--- 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 23d43dc2d..000000000
--- 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 a083902c1..5b6e9edc5 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 36fa04d8c..000000000
--- 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 3a464adb1..b442618fc 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 9a41b0cab..ca0034deb 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/nucleo-f303re.ld b/hw/bsp/nucleo-f303re/link/include/mcu_config.ld.h
similarity index 69%
copy from hw/bsp/nucleo-f303re/nucleo-f303re.ld
copy to hw/bsp/nucleo-f303re/link/include/mcu_config.ld.h
index ce600e5f6..3596fc2cc 100644
--- a/hw/bsp/nucleo-f303re/nucleo-f303re.ld
+++ b/hw/bsp/nucleo-f303re/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
+ * <target_name>/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 = 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;
+
+#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 765319924..63fa7bae4 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 3444fd327..000000000
--- 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 3444fd327..000000000
--- 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 d58c59040..000000000
--- 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 3d1f10819..a6f0165d4 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 b5b58acb1..000000000
--- 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 24090ce00..c8529144e 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 308dadf70..7ce292e86 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/nucleo-f303re/nucleo-f303re.ld b/hw/bsp/stm32f3discovery/link/include/mcu_config.ld.h
similarity index 69%
copy from hw/bsp/nucleo-f303re/nucleo-f303re.ld
copy to hw/bsp/stm32f3discovery/link/include/mcu_config.ld.h
index ce600e5f6..3596fc2cc 100644
--- a/hw/bsp/nucleo-f303re/nucleo-f303re.ld
+++ b/hw/bsp/stm32f3discovery/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
+ * <target_name>/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 = 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;
+
+#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 ce600e5f6..9a1e8d1f3 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 d6ff24ebe..b1e06542d 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 d62443f19..000000000
--- 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 3444fd327..000000000
--- 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 3444fd327..000000000
--- 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 da98d4209..000000000
--- 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 8cf94dffd..c00eedbbc 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"
(mynewt-core) 05/06: Update STM32F3xx RAT style and license excludes
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 58a56243befaeabc77fd593f22ea18cd0bd92818
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 5 23:10:24 2024 +0200
Update STM32F3xx RAT style and license excludes
Signed-off-by: Jerzy Kasenberg <je...@apache.org>
---
.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 ce3f98ca0..3b49e655d 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 d2f32bc77..cd3d83dc4 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 76e463a3b..591c58955 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:
(mynewt-core) 06/06: ci: Update ignored BSP list for bootloader build test
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 7939d1e50958921979c3443722ef6e52f9c62fad
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Thu Jun 6 08:07:06 2024 +0200
ci: Update ignored BSP list for bootloader build test
STM32F303K8 board don't have space for bootloader in bsp.
Signed-off-by: Jerzy Kasenberg <je...@codecoup.pl>
---
.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 8389a7a9f..96caa9f85 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"
(mynewt-core) 02/06: hw/mcu/stm32f3: Covert CRLF to LF
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit cd4bffd31cbd83c8e3b2096ed4dd574f3f880107
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 5 22:01:24 2024 +0200
hw/mcu/stm32f3: Covert CRLF to LF
Signed-off-by: Jerzy Kasenberg <je...@apache.org>
---
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 57c652679..c351c51b0 100644
--- a/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c
+++ b/hw/mcu/stm/stm32f3xx/src/system_stm32f3xx.c
@@ -1,212 +1,212 @@
-/**
- * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
- *
- * 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****/
+/**
+ * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
+ *
+ * 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****/
(mynewt-core) 03/06: hw/mcu/stm32f3: Use common startup code
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 76415488c23c3baf8fbcc26babb5d1b15bdf0b97
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 5 22:03:51 2024 +0200
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 <je...@apache.org>
---
hw/mcu/stm/stm32f3xx/include/mcu/cmsis_nvic.h | 6 +-
hw/mcu/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(-)
diff --git a/hw/mcu/stm/stm32f3xx/include/mcu/cmsis_nvic.h b/hw/mcu/stm/stm32f3xx/include/mcu/cmsis_nvic.h
index df47262dc..ceb3f8651 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 <stdint.h>
-#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 000000000..24e2bf3ba
--- /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 000000000..c42b1bbe8
--- /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 000000000..966e28e6e
--- /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 000000000..c5346e0b8
--- /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 000000000..04b27ff30
--- /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 000000000..db632b542
--- /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 000000000..d85c6fadf
--- /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 000000000..de8d7e9dc
--- /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 000000000..99a029c5a
--- /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 000000000..a0fc7ffca
--- /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 000000000..b00cd8acd
--- /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 000000000..c55b42dd4
--- /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 000000000..97689685f
--- /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 000000000..840870e17
--- /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 000000000..35d553e65
--- /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 9aeb145c5..0c8b67a20 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 <hal/hal_system.h>
+
+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 c351c51b0..8fa2a5b2e 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 8636a22fd..000000000
--- 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!")
-}
-
(mynewt-core) 01/06: mcu/stm32f3: Fix reset reason
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 209fbe6b46cfe2b744eb0fc53f35cb559cfc2dfe
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 5 21:53:37 2024 +0200
mcu/stm32f3: Fix reset reason
POR was not correctly reported.
Signed-off-by: Jerzy Kasenberg <je...@apache.org>
---
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 e3e28013e..be974a186 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;