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>&copy; 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>&copy; 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;