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 4e5614991e91195b709a5c668b4d16bc617d4525
Author: Jerzy Kasenberg <[email protected]>
AuthorDate: Mon Jun 10 13:20:14 2024 +0200

    hw/bsp: Update all STMF7 BSPs to use common startup
    
    This removes local startup code and linker scripts
    
    Signed-off-by: Jerzy Kasenberg <[email protected]>
---
 hw/bsp/nucleo-f746zg/bsp.yml                       |   9 +-
 hw/bsp/nucleo-f746zg/include/bsp/bsp.h             |  12 +-
 .../include/mcu_config.ld.h}                       |  28 +-
 .../link/include/memory_regions.ld.h}              |  28 +-
 hw/bsp/nucleo-f746zg/nucleo-f746zg_debug.cmd       |  22 -
 hw/bsp/nucleo-f746zg/nucleo-f746zg_download.cmd    |  22 -
 hw/bsp/nucleo-f746zg/pkg.yml                       |   2 +
 .../src/arch/cortex_m7/startup_stm32f746xx.s       | 609 -------------------
 hw/bsp/nucleo-f746zg/src/hal_bsp.c                 |  10 +-
 hw/bsp/nucleo-f746zg/syscfg.yml                    |   7 +
 hw/bsp/nucleo-f767zi/bsp.yml                       |   7 +-
 hw/bsp/nucleo-f767zi/include/bsp/bsp.h             |  12 +-
 .../include/mcu_config.ld.h}                       |  28 +-
 .../link/include/memory_regions.ld.h}              |  28 +-
 hw/bsp/nucleo-f767zi/pkg.yml                       |   1 +
 .../src/arch/cortex_m7/startup_stm32f767xx.s       | 656 ---------------------
 hw/bsp/nucleo-f767zi/src/hal_bsp.c                 |  10 +-
 hw/bsp/nucleo-f767zi/syscfg.yml                    |   2 +
 hw/bsp/stm32f7discovery/bsp.yml                    |   7 +-
 hw/bsp/stm32f7discovery/include/bsp/bsp.h          |  16 +-
 hw/bsp/stm32f7discovery/pkg.yml                    |   2 +
 .../src/arch/cortex_m7/startup_stm32f746xx.s       | 609 -------------------
 hw/bsp/stm32f7discovery/src/hal_bsp.c              |  15 +-
 hw/bsp/stm32f7discovery/syscfg.yml                 |   9 +-
 24 files changed, 134 insertions(+), 2017 deletions(-)

diff --git a/hw/bsp/nucleo-f746zg/bsp.yml b/hw/bsp/nucleo-f746zg/bsp.yml
index 3ae5e0f89..708639e82 100644
--- a/hw/bsp/nucleo-f746zg/bsp.yml
+++ b/hw/bsp/nucleo-f746zg/bsp.yml
@@ -22,16 +22,9 @@ bsp.url: 
https://www.st.com/en/evaluation-tools/nucleo-f746zg.html
 bsp.maker: "STMicroelectronics"
 bsp.arch: cortex_m7
 bsp.compiler: compiler/arm-none-eabi-m7
-bsp.linkerscript:
-    - "hw/bsp/nucleo-f746zg/nucleo-f746zg.ld"
-    - "@apache-mynewt-core/hw/mcu/stm/stm32f7xx/stm32f746.ld"
-bsp.linkerscript.BOOT_LOADER.OVERWRITE:
-    - "hw/bsp/nucleo-f746zg/boot-nucleo-f746zg.ld"
-    - "@apache-mynewt-core/hw/mcu/stm/stm32f7xx/stm32f746.ld"
+bsp.linkerscript: autogenerated
 bsp.downloadscript: "hw/bsp/nucleo-f746zg/nucleo-f746zg_download.sh"
 bsp.debugscript: "hw/bsp/nucleo-f746zg/nucleo-f746zg_debug.sh"
-bsp.downloadscript.WINDOWS.OVERWRITE: 
"hw/bsp/nucleo-f746zg/nucleo-f746zg_download.cmd"
-bsp.debugscript.WINDOWS.OVERWRITE: 
"hw/bsp/nucleo-f746zg/nucleo-f746zg_debug.cmd"
 
 bsp.flash_map:
     areas:
diff --git a/hw/bsp/nucleo-f746zg/include/bsp/bsp.h 
b/hw/bsp/nucleo-f746zg/include/bsp/bsp.h
index 34c447ee4..bde2851bf 100644
--- a/hw/bsp/nucleo-f746zg/include/bsp/bsp.h
+++ b/hw/bsp/nucleo-f746zg/include/bsp/bsp.h
@@ -34,15 +34,15 @@ extern "C" {
 /* More convenient section placement macros. */
 #define bssnz_t         sec_bss_nz_core
 
-extern uint8_t _ram_start;
-extern uint8_t _dtcmram_start;
-extern uint8_t _itcmram_start;
-extern uint8_t _ram2_start;
+extern uint8_t _ram_start[];
+extern uint8_t _dtcm_start[];
+extern uint8_t _itcm_start[];
+extern uint8_t _ram2_start[];
 
 #define RAM_SIZE        (240 * 1024)
 #define RAM2_SIZE       (16 * 1024)
-#define DTCMRAM_SIZE    (64 * 1024)
-#define ITCMRAM_SIZE    (16 * 1024)
+#define DTCM_SIZE       (64 * 1024)
+#define ITCM_SIZE       (16 * 1024)
 
 /* LED pins */
 #define LED_1           MCU_GPIO_PORTB(0)
diff --git a/hw/bsp/nucleo-f746zg/boot-nucleo-f746zg.ld 
b/hw/bsp/nucleo-f746zg/link/include/mcu_config.ld.h
similarity index 63%
rename from hw/bsp/nucleo-f746zg/boot-nucleo-f746zg.ld
rename to hw/bsp/nucleo-f746zg/link/include/mcu_config.ld.h
index b5f64df1b..cdf034b78 100644
--- a/hw/bsp/nucleo-f746zg/boot-nucleo-f746zg.ld
+++ b/hw/bsp/nucleo-f746zg/link/include/mcu_config.ld.h
@@ -17,14 +17,22 @@
  * under the License.
  */
 
-/* Linker script to configure memory regions. */
-MEMORY
-{
-  FLASH (rx) :  ORIGIN = 0x08000000, LENGTH = 32K
-  ITCM (rx)  :  ORIGIN = 0x00000000, LENGTH = 16K
-  DTCM (rwx) :  ORIGIN = 0x20000000, LENGTH = 64K
-  RAM (rwx)  :  ORIGIN = 0x20010000, LENGTH = 256K
-}
+/*
+ * Memory regions placed in DTCM
+ * 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
+ *  #undef VECTOR_RELOCATION_RAM DTCM
+ */
+
+#define BSSNZ_RAM DTCM
+#define COREBSS_RAM DTCM
+#define COREDATA_RAM DTCM
+#define STACK_REGION DTCM
+#define VECTOR_RELOCATION_RAM DTCM
+
+#define TEXT_RAM ITCM
 
-/* The bootloader does not contain an image header */
-_imghdr_size = 0x0;
diff --git a/hw/bsp/stm32f7discovery/boot-stm32f7discovery.ld 
b/hw/bsp/nucleo-f746zg/link/include/memory_regions.ld.h
similarity index 57%
rename from hw/bsp/stm32f7discovery/boot-stm32f7discovery.ld
rename to hw/bsp/nucleo-f746zg/link/include/memory_regions.ld.h
index 049d1fde4..32e5efe16 100644
--- a/hw/bsp/stm32f7discovery/boot-stm32f7discovery.ld
+++ b/hw/bsp/nucleo-f746zg/link/include/memory_regions.ld.h
@@ -17,16 +17,22 @@
  * under the License.
  */
 
-/* Linker script for STM32F746 when running the bootloader */
+/* Fragment that goes to MEMORY section */
+#ifndef SECTIONS_REGIONS
 
-/* Linker script to configure memory regions. */
-MEMORY
-{
-  FLASH (rx) :  ORIGIN = 0x08000000, LENGTH = 32K  /* FLASHAXI_BASE */
-  ITCM (rx)  :  ORIGIN = 0x00000000, LENGTH = 16K  /* RAMITCM_BASE */
-  DTCM (rwx) :  ORIGIN = 0x20000000, LENGTH = 64K  /* RAMDTCM_BASE */
-  RAM (rwx)  :  ORIGIN = 0x20010000, LENGTH = 256K /* SRAM1_BASE */
-}
+#ifdef STACK_REGION
+    DTCM (rwx) :  ORIGIN = 0x20000000, LENGTH = (64K - STACK_SIZE)
+    STACK_RAM (rw) : ORIGIN = 0x20020000 - STACK_SIZE, LENGTH = STACK_SIZE
+#else
+    DTCM (rwx) :  ORIGIN = 0x20000000, LENGTH = 64K
+#endif
+    ITCM (rx)  :  ORIGIN = 0x00000000, LENGTH = 16K
 
-/* The bootloader does not contain an image header */
-_imghdr_size = 0x0;
+#else
+/* Fragment that goes into SECTIONS, can provide definition and sections if 
needed */
+    _itcm_start = ORIGIN(ITCM);
+    _itcm_end = ORIGIN(ITCM) + LENGTH(ITCM);
+    _dtcm_start = ORIGIN(DTCM);
+    _dtcm_end = ORIGIN(DTCM) + LENGTH(DTCM);
+
+#endif
diff --git a/hw/bsp/nucleo-f746zg/nucleo-f746zg_debug.cmd 
b/hw/bsp/nucleo-f746zg/nucleo-f746zg_debug.cmd
deleted file mode 100644
index 3444fd327..000000000
--- a/hw/bsp/nucleo-f746zg/nucleo-f746zg_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-f746zg/nucleo-f746zg_download.cmd 
b/hw/bsp/nucleo-f746zg/nucleo-f746zg_download.cmd
deleted file mode 100644
index 3444fd327..000000000
--- a/hw/bsp/nucleo-f746zg/nucleo-f746zg_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-f746zg/pkg.yml b/hw/bsp/nucleo-f746zg/pkg.yml
index 3c9c3e7e6..1fdc76beb 100644
--- a/hw/bsp/nucleo-f746zg/pkg.yml
+++ b/hw/bsp/nucleo-f746zg/pkg.yml
@@ -35,3 +35,5 @@ pkg.cflags.HARDFLOAT:
 pkg.deps:
     - "@apache-mynewt-core/hw/mcu/stm/stm32f7xx"
     - "@apache-mynewt-core/libc"
+    - "@apache-mynewt-core/hw/scripts"
+    - "@apache-mynewt-core/boot/startup"
diff --git a/hw/bsp/nucleo-f746zg/src/arch/cortex_m7/startup_stm32f746xx.s 
b/hw/bsp/nucleo-f746zg/src/arch/cortex_m7/startup_stm32f746xx.s
deleted file mode 100644
index 40f107316..000000000
--- a/hw/bsp/nucleo-f746zg/src/arch/cortex_m7/startup_stm32f746xx.s
+++ /dev/null
@@ -1,609 +0,0 @@
-/**
-  
******************************************************************************
-  * @file      startup_stm32f746xx.s
-  * @author    MCD Application Team
-  * @brief     STM32F746xx Devices vector table for GCC based toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR 
address
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M7 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  
******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 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.
-  *
-  
******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m7
-  .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
-/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
-
-/**
- * @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      /* 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 libc entry point.*/
-  bl  _start
-.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 M7. 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:
-  .globl __isr_vector
-__isr_vector:
-  .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
-
-  /* External Interrupts */
-  .word     WWDG_IRQHandler                   /* Window WatchDog              
*/
-  .word     PVD_IRQHandler                    /* PVD through EXTI Line 
detection */
-  .word     TAMP_STAMP_IRQHandler             /* Tamper and TimeStamps through 
the EXTI line */
-  .word     RTC_WKUP_IRQHandler               /* RTC Wakeup through the EXTI 
line */
-  .word     FLASH_IRQHandler                  /* FLASH                        
*/
-  .word     RCC_IRQHandler                    /* RCC                          
*/
-  .word     EXTI0_IRQHandler                  /* EXTI Line0                   
*/
-  .word     EXTI1_IRQHandler                  /* EXTI Line1                   
*/
-  .word     EXTI2_IRQHandler                  /* EXTI Line2                   
*/
-  .word     EXTI3_IRQHandler                  /* EXTI Line3                   
*/
-  .word     EXTI4_IRQHandler                  /* EXTI Line4                   
*/
-  .word     DMA1_Stream0_IRQHandler           /* DMA1 Stream 0                
*/
-  .word     DMA1_Stream1_IRQHandler           /* DMA1 Stream 1                
*/
-  .word     DMA1_Stream2_IRQHandler           /* DMA1 Stream 2                
*/
-  .word     DMA1_Stream3_IRQHandler           /* DMA1 Stream 3                
*/
-  .word     DMA1_Stream4_IRQHandler           /* DMA1 Stream 4                
*/
-  .word     DMA1_Stream5_IRQHandler           /* DMA1 Stream 5                
*/
-  .word     DMA1_Stream6_IRQHandler           /* DMA1 Stream 6                
*/
-  .word     ADC_IRQHandler                    /* ADC1, ADC2 and ADC3s         
*/
-  .word     CAN1_TX_IRQHandler                /* CAN1 TX                      
*/
-  .word     CAN1_RX0_IRQHandler               /* CAN1 RX0                     
*/
-  .word     CAN1_RX1_IRQHandler               /* CAN1 RX1                     
*/
-  .word     CAN1_SCE_IRQHandler               /* CAN1 SCE                     
*/
-  .word     EXTI9_5_IRQHandler                /* External Line[9:5]s          
*/
-  .word     TIM1_BRK_TIM9_IRQHandler          /* TIM1 Break and TIM9          
*/
-  .word     TIM1_UP_TIM10_IRQHandler          /* TIM1 Update and TIM10        
*/
-  .word     TIM1_TRG_COM_TIM11_IRQHandler     /* TIM1 Trigger and Commutation 
and TIM11 */
-  .word     TIM1_CC_IRQHandler                /* TIM1 Capture Compare         
*/
-  .word     TIM2_IRQHandler                   /* TIM2                         
*/
-  .word     TIM3_IRQHandler                   /* TIM3                         
*/
-  .word     TIM4_IRQHandler                   /* TIM4                         
*/
-  .word     I2C1_EV_IRQHandler                /* I2C1 Event                   
*/
-  .word     I2C1_ER_IRQHandler                /* I2C1 Error                   
*/
-  .word     I2C2_EV_IRQHandler                /* I2C2 Event                   
*/
-  .word     I2C2_ER_IRQHandler                /* I2C2 Error                   
*/
-  .word     SPI1_IRQHandler                   /* SPI1                         
*/
-  .word     SPI2_IRQHandler                   /* SPI2                         
*/
-  .word     USART1_IRQHandler                 /* USART1                       
*/
-  .word     USART2_IRQHandler                 /* USART2                       
*/
-  .word     USART3_IRQHandler                 /* USART3                       
*/
-  .word     EXTI15_10_IRQHandler              /* External Line[15:10]s        
*/
-  .word     RTC_Alarm_IRQHandler              /* RTC Alarm (A and B) through 
EXTI Line */
-  .word     OTG_FS_WKUP_IRQHandler            /* USB OTG FS Wakeup through 
EXTI line */
-  .word     TIM8_BRK_TIM12_IRQHandler         /* TIM8 Break and TIM12         
*/
-  .word     TIM8_UP_TIM13_IRQHandler          /* TIM8 Update and TIM13        
*/
-  .word     TIM8_TRG_COM_TIM14_IRQHandler     /* TIM8 Trigger and Commutation 
and TIM14 */
-  .word     TIM8_CC_IRQHandler                /* TIM8 Capture Compare         
*/
-  .word     DMA1_Stream7_IRQHandler           /* DMA1 Stream7                 
*/
-  .word     FMC_IRQHandler                    /* FMC                          
*/
-  .word     SDMMC1_IRQHandler                 /* SDMMC1                       
*/
-  .word     TIM5_IRQHandler                   /* TIM5                         
*/
-  .word     SPI3_IRQHandler                   /* SPI3                         
*/
-  .word     UART4_IRQHandler                  /* UART4                        
*/
-  .word     UART5_IRQHandler                  /* UART5                        
*/
-  .word     TIM6_DAC_IRQHandler               /* TIM6 and DAC1&2 underrun 
errors */
-  .word     TIM7_IRQHandler                   /* TIM7                         
*/
-  .word     DMA2_Stream0_IRQHandler           /* DMA2 Stream 0                
*/
-  .word     DMA2_Stream1_IRQHandler           /* DMA2 Stream 1                
*/
-  .word     DMA2_Stream2_IRQHandler           /* DMA2 Stream 2                
*/
-  .word     DMA2_Stream3_IRQHandler           /* DMA2 Stream 3                
*/
-  .word     DMA2_Stream4_IRQHandler           /* DMA2 Stream 4                
*/
-  .word     ETH_IRQHandler                    /* Ethernet                     
*/
-  .word     ETH_WKUP_IRQHandler               /* Ethernet Wakeup through EXTI 
line */
-  .word     CAN2_TX_IRQHandler                /* CAN2 TX                      
*/
-  .word     CAN2_RX0_IRQHandler               /* CAN2 RX0                     
*/
-  .word     CAN2_RX1_IRQHandler               /* CAN2 RX1                     
*/
-  .word     CAN2_SCE_IRQHandler               /* CAN2 SCE                     
*/
-  .word     OTG_FS_IRQHandler                 /* USB OTG FS                   
*/
-  .word     DMA2_Stream5_IRQHandler           /* DMA2 Stream 5                
*/
-  .word     DMA2_Stream6_IRQHandler           /* DMA2 Stream 6                
*/
-  .word     DMA2_Stream7_IRQHandler           /* DMA2 Stream 7                
*/
-  .word     USART6_IRQHandler                 /* USART6                       
*/
-  .word     I2C3_EV_IRQHandler                /* I2C3 event                   
*/
-  .word     I2C3_ER_IRQHandler                /* I2C3 error                   
*/
-  .word     OTG_HS_EP1_OUT_IRQHandler         /* USB OTG HS End Point 1 Out   
*/
-  .word     OTG_HS_EP1_IN_IRQHandler          /* USB OTG HS End Point 1 In    
*/
-  .word     OTG_HS_WKUP_IRQHandler            /* USB OTG HS Wakeup through 
EXTI */
-  .word     OTG_HS_IRQHandler                 /* USB OTG HS                   
*/
-  .word     DCMI_IRQHandler                   /* DCMI                         
*/
-  .word     0                                 /* Reserved                     
*/
-  .word     RNG_IRQHandler                    /* Rng                          
*/
-  .word     FPU_IRQHandler                    /* FPU                          
*/
-  .word     UART7_IRQHandler                  /* UART7                        
*/
-  .word     UART8_IRQHandler                  /* UART8                        
*/
-  .word     SPI4_IRQHandler                   /* SPI4                         
*/
-  .word     SPI5_IRQHandler                   /* SPI5                          
      */
-  .word     SPI6_IRQHandler                   /* SPI6                          
          */
-  .word     SAI1_IRQHandler                   /* SAI1                          
                  */
-  .word     LTDC_IRQHandler                   /* LTDC                          
              */
-  .word     LTDC_ER_IRQHandler                /* LTDC error                    
                  */
-  .word     DMA2D_IRQHandler                  /* DMA2D                         
              */
-  .word     SAI2_IRQHandler                   /* SAI2                         
*/
-  .word     QUADSPI_IRQHandler                /* QUADSPI                      
*/
-  .word     LPTIM1_IRQHandler                 /* LPTIM1                       
*/
-  .word     CEC_IRQHandler                    /* HDMI_CEC                     
*/
-  .word     I2C4_EV_IRQHandler                /* I2C4 Event                   
*/
-  .word     I2C4_ER_IRQHandler                /* I2C4 Error                   
*/
-  .word     SPDIF_RX_IRQHandler               /* SPDIF_RX                     
*/
-
-/*******************************************************************************
-*
-* 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_IRQHandler
-   .thumb_set EXTI2_IRQHandler,Default_Handler
-
-   .weak      EXTI3_IRQHandler
-   .thumb_set EXTI3_IRQHandler,Default_Handler
-
-   .weak      EXTI4_IRQHandler
-   .thumb_set EXTI4_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream0_IRQHandler
-   .thumb_set DMA1_Stream0_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream1_IRQHandler
-   .thumb_set DMA1_Stream1_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream2_IRQHandler
-   .thumb_set DMA1_Stream2_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream3_IRQHandler
-   .thumb_set DMA1_Stream3_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream4_IRQHandler
-   .thumb_set DMA1_Stream4_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream5_IRQHandler
-   .thumb_set DMA1_Stream5_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream6_IRQHandler
-   .thumb_set DMA1_Stream6_IRQHandler,Default_Handler
-
-   .weak      ADC_IRQHandler
-   .thumb_set ADC_IRQHandler,Default_Handler
-
-   .weak      CAN1_TX_IRQHandler
-   .thumb_set CAN1_TX_IRQHandler,Default_Handler
-
-   .weak      CAN1_RX0_IRQHandler
-   .thumb_set CAN1_RX0_IRQHandler,Default_Handler
-
-   .weak      CAN1_RX1_IRQHandler
-   .thumb_set CAN1_RX1_IRQHandler,Default_Handler
-
-   .weak      CAN1_SCE_IRQHandler
-   .thumb_set CAN1_SCE_IRQHandler,Default_Handler
-
-   .weak      EXTI9_5_IRQHandler
-   .thumb_set EXTI9_5_IRQHandler,Default_Handler
-
-   .weak      TIM1_BRK_TIM9_IRQHandler
-   .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
-
-   .weak      TIM1_UP_TIM10_IRQHandler
-   .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
-
-   .weak      TIM1_TRG_COM_TIM11_IRQHandler
-   .thumb_set TIM1_TRG_COM_TIM11_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      OTG_FS_WKUP_IRQHandler
-   .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
-
-   .weak      TIM8_BRK_TIM12_IRQHandler
-   .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler
-
-   .weak      TIM8_UP_TIM13_IRQHandler
-   .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler
-
-   .weak      TIM8_TRG_COM_TIM14_IRQHandler
-   .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler
-
-   .weak      TIM8_CC_IRQHandler
-   .thumb_set TIM8_CC_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream7_IRQHandler
-   .thumb_set DMA1_Stream7_IRQHandler,Default_Handler
-
-   .weak      FMC_IRQHandler
-   .thumb_set FMC_IRQHandler,Default_Handler
-
-   .weak      SDMMC1_IRQHandler
-   .thumb_set SDMMC1_IRQHandler,Default_Handler
-
-   .weak      TIM5_IRQHandler
-   .thumb_set TIM5_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_Stream0_IRQHandler
-   .thumb_set DMA2_Stream0_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream1_IRQHandler
-   .thumb_set DMA2_Stream1_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream2_IRQHandler
-   .thumb_set DMA2_Stream2_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream3_IRQHandler
-   .thumb_set DMA2_Stream3_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream4_IRQHandler
-   .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream4_IRQHandler
-   .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
-
-   .weak      ETH_IRQHandler
-   .thumb_set ETH_IRQHandler,Default_Handler
-
-   .weak      ETH_WKUP_IRQHandler
-   .thumb_set ETH_WKUP_IRQHandler,Default_Handler
-
-   .weak      CAN2_TX_IRQHandler
-   .thumb_set CAN2_TX_IRQHandler,Default_Handler
-
-   .weak      CAN2_RX0_IRQHandler
-   .thumb_set CAN2_RX0_IRQHandler,Default_Handler
-
-   .weak      CAN2_RX1_IRQHandler
-   .thumb_set CAN2_RX1_IRQHandler,Default_Handler
-
-   .weak      CAN2_SCE_IRQHandler
-   .thumb_set CAN2_SCE_IRQHandler,Default_Handler
-
-   .weak      OTG_FS_IRQHandler
-   .thumb_set OTG_FS_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream5_IRQHandler
-   .thumb_set DMA2_Stream5_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream6_IRQHandler
-   .thumb_set DMA2_Stream6_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream7_IRQHandler
-   .thumb_set DMA2_Stream7_IRQHandler,Default_Handler
-
-   .weak      USART6_IRQHandler
-   .thumb_set USART6_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      OTG_HS_EP1_OUT_IRQHandler
-   .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler
-
-   .weak      OTG_HS_EP1_IN_IRQHandler
-   .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler
-
-   .weak      OTG_HS_WKUP_IRQHandler
-   .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler
-
-   .weak      OTG_HS_IRQHandler
-   .thumb_set OTG_HS_IRQHandler,Default_Handler
-
-   .weak      DCMI_IRQHandler
-   .thumb_set DCMI_IRQHandler,Default_Handler
-
-   .weak      RNG_IRQHandler
-   .thumb_set RNG_IRQHandler,Default_Handler
-
-   .weak      FPU_IRQHandler
-   .thumb_set FPU_IRQHandler,Default_Handler
-
-   .weak      UART7_IRQHandler
-   .thumb_set UART7_IRQHandler,Default_Handler
-
-   .weak      UART8_IRQHandler
-   .thumb_set UART8_IRQHandler,Default_Handler
-
-   .weak      SPI4_IRQHandler
-   .thumb_set SPI4_IRQHandler,Default_Handler
-
-   .weak      SPI5_IRQHandler
-   .thumb_set SPI5_IRQHandler,Default_Handler
-
-   .weak      SPI6_IRQHandler
-   .thumb_set SPI6_IRQHandler,Default_Handler
-
-   .weak      SAI1_IRQHandler
-   .thumb_set SAI1_IRQHandler,Default_Handler
-
-   .weak      LTDC_IRQHandler
-   .thumb_set LTDC_IRQHandler,Default_Handler
-
-   .weak      LTDC_ER_IRQHandler
-   .thumb_set LTDC_ER_IRQHandler,Default_Handler
-
-   .weak      DMA2D_IRQHandler
-   .thumb_set DMA2D_IRQHandler,Default_Handler
-
-   .weak      SAI2_IRQHandler
-   .thumb_set SAI2_IRQHandler,Default_Handler
-
-   .weak      QUADSPI_IRQHandler
-   .thumb_set QUADSPI_IRQHandler,Default_Handler
-
-   .weak      LPTIM1_IRQHandler
-   .thumb_set LPTIM1_IRQHandler,Default_Handler
-
-   .weak      CEC_IRQHandler
-   .thumb_set CEC_IRQHandler,Default_Handler
-
-   .weak      I2C4_EV_IRQHandler
-   .thumb_set I2C4_EV_IRQHandler,Default_Handler
-
-   .weak      I2C4_ER_IRQHandler
-   .thumb_set I2C4_ER_IRQHandler,Default_Handler
-
-   .weak      SPDIF_RX_IRQHandler
-   .thumb_set SPDIF_RX_IRQHandler,Default_Handler
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF 
FILE****/
-
diff --git a/hw/bsp/nucleo-f746zg/src/hal_bsp.c 
b/hw/bsp/nucleo-f746zg/src/hal_bsp.c
index 954cf9359..08815d447 100644
--- a/hw/bsp/nucleo-f746zg/src/hal_bsp.c
+++ b/hw/bsp/nucleo-f746zg/src/hal_bsp.c
@@ -143,16 +143,16 @@ const struct stm32_eth_cfg os_bsp_eth0_cfg = {
 /* FIXME */
 static const struct hal_bsp_mem_dump dump_cfg[] = {
     [0] = {
-        .hbmd_start = &_ram_start,
+        .hbmd_start = _ram_start,
         .hbmd_size = RAM_SIZE,
     },
     [1] = {
-        .hbmd_start = &_dtcmram_start,
-        .hbmd_size = DTCMRAM_SIZE,
+        .hbmd_start = _dtcm_start,
+        .hbmd_size = DTCM_SIZE,
     },
     [2] = {
-        .hbmd_start = &_itcmram_start,
-        .hbmd_size = ITCMRAM_SIZE,
+        .hbmd_start = _itcm_start,
+        .hbmd_size = ITCM_SIZE,
     },
 };
 
diff --git a/hw/bsp/nucleo-f746zg/syscfg.yml b/hw/bsp/nucleo-f746zg/syscfg.yml
index aa6285725..7a863eb35 100644
--- a/hw/bsp/nucleo-f746zg/syscfg.yml
+++ b/hw/bsp/nucleo-f746zg/syscfg.yml
@@ -27,6 +27,8 @@ syscfg.defs:
         value: 8
 
 syscfg.vals:
+    MCU_RAM_START: 0x20020000
+    MCU_RAM_SIZE: 240K
     REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
     CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS
     NFFS_FLASH_AREA: FLASH_AREA_NFFS
@@ -58,3 +60,8 @@ syscfg.vals:
     TIMER_0_TIM: 'TIM9'
     TIMER_1_TIM: 'TIM10'
     TIMER_2_TIM: 'TIM11'
+    MYNEWT_DOWNLOADER: openocd
+    MYNEWT_DOWNLOADER_OPENOCD_CFG: nucleo-f746zg.cfg
+    MYNEWT_DOWNLOADER_OPENOCD_INTERFACE: interface/stlink-v2-1.cfg
+    MYNEWT_DOWNLOADER_MFG_IMAGE_FLASH_OFFSET: 0x08000000
+    JLINK_TARGET: STM32F746ZG
diff --git a/hw/bsp/nucleo-f767zi/bsp.yml b/hw/bsp/nucleo-f767zi/bsp.yml
index f1da74b33..4d9d843f1 100644
--- a/hw/bsp/nucleo-f767zi/bsp.yml
+++ b/hw/bsp/nucleo-f767zi/bsp.yml
@@ -22,12 +22,7 @@ bsp.url: 
https://www.st.com/en/evaluation-tools/nucleo-f767zi.html
 bsp.maker: "STMicroelectronics"
 bsp.arch: cortex_m7
 bsp.compiler: compiler/arm-none-eabi-m7
-bsp.linkerscript:
-    - "hw/bsp/nucleo-f767zi/nucleo-f767zi.ld"
-    - "@apache-mynewt-core/hw/mcu/stm/stm32f7xx/stm32f767.ld"
-bsp.linkerscript.BOOT_LOADER.OVERWRITE:
-    - "hw/bsp/nucleo-f767zi/boot-nucleo-f767zi.ld"
-    - "@apache-mynewt-core/hw/mcu/stm/stm32f7xx/stm32f767.ld"
+bsp.linkerscript: autogenerated
 bsp.downloadscript: "hw/scripts/download.sh"
 bsp.debugscript: "hw/bsp/nucleo-f767zi/nucleo-f767zi_debug.sh"
 
diff --git a/hw/bsp/nucleo-f767zi/include/bsp/bsp.h 
b/hw/bsp/nucleo-f767zi/include/bsp/bsp.h
index 6421dea1b..2c1d0efef 100644
--- a/hw/bsp/nucleo-f767zi/include/bsp/bsp.h
+++ b/hw/bsp/nucleo-f767zi/include/bsp/bsp.h
@@ -34,15 +34,15 @@ extern "C" {
 /* More convenient section placement macros. */
 #define bssnz_t         sec_bss_nz_core
 
-extern uint8_t _ram_start;
-extern uint8_t _dtcmram_start;
-extern uint8_t _itcmram_start;
-extern uint8_t _ram2_start;
+extern uint8_t _ram_start[];
+extern uint8_t _dtcm_start[];
+extern uint8_t _itcm_start[];
+extern uint8_t _ram2_start[];
 
 #define RAM_SIZE        (368 * 1024)
 #define RAM2_SIZE       (16 * 1024)
-#define DTCMRAM_SIZE    (128 * 1024)
-#define ITCMRAM_SIZE    (16 * 1024)
+#define DTCM_SIZE       (128 * 1024)
+#define ITCM_SIZE       (16 * 1024)
 
 /* LED pins */
 #define LED_1           MCU_GPIO_PORTB(0)
diff --git a/hw/bsp/nucleo-f767zi/boot-nucleo-f767zi.ld 
b/hw/bsp/nucleo-f767zi/link/include/mcu_config.ld.h
similarity index 63%
rename from hw/bsp/nucleo-f767zi/boot-nucleo-f767zi.ld
rename to hw/bsp/nucleo-f767zi/link/include/mcu_config.ld.h
index 6abf3f4d9..cdf034b78 100644
--- a/hw/bsp/nucleo-f767zi/boot-nucleo-f767zi.ld
+++ b/hw/bsp/nucleo-f767zi/link/include/mcu_config.ld.h
@@ -17,14 +17,22 @@
  * under the License.
  */
 
-/* Linker script to configure memory regions. */
-MEMORY
-{
-  FLASH (rx) :  ORIGIN = 0x08000000, LENGTH = 32K
-  ITCM (rx)  :  ORIGIN = 0x00000000, LENGTH = 16K
-  DTCM (rwx) :  ORIGIN = 0x20000000, LENGTH = 128K
-  RAM (rwx)  :  ORIGIN = 0x20020000, LENGTH = 384K
-}
+/*
+ * Memory regions placed in DTCM
+ * 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
+ *  #undef VECTOR_RELOCATION_RAM DTCM
+ */
+
+#define BSSNZ_RAM DTCM
+#define COREBSS_RAM DTCM
+#define COREDATA_RAM DTCM
+#define STACK_REGION DTCM
+#define VECTOR_RELOCATION_RAM DTCM
+
+#define TEXT_RAM ITCM
 
-/* The bootloader does not contain an image header */
-_imghdr_size = 0x0;
diff --git a/hw/bsp/stm32f7discovery/stm32f7discovery.ld 
b/hw/bsp/nucleo-f767zi/link/include/memory_regions.ld.h
similarity index 57%
rename from hw/bsp/stm32f7discovery/stm32f7discovery.ld
rename to hw/bsp/nucleo-f767zi/link/include/memory_regions.ld.h
index c59d71325..0c209b03e 100644
--- a/hw/bsp/stm32f7discovery/stm32f7discovery.ld
+++ b/hw/bsp/nucleo-f767zi/link/include/memory_regions.ld.h
@@ -17,16 +17,22 @@
  * under the License.
  */
 
-/* Linker script for STM32F746 when running from flash and using the 
bootloader */
+/* Fragment that goes to MEMORY section */
+#ifndef SECTIONS_REGIONS
 
-/* Linker script to configure memory regions. */
-MEMORY
-{
-  FLASH (rx) :  ORIGIN = 0x08020000, LENGTH = 384K /* Image slot 1: 
FLASHAXI_BASE + 128KiB */
-  ITCM (rx)  :  ORIGIN = 0x00000000, LENGTH = 16K  /* RAMITCM_BASE */
-  DTCM (rwx) :  ORIGIN = 0x20000000, LENGTH = 64K  /* RAMDTCM_BASE */
-  RAM (rwx)  :  ORIGIN = 0x20010000, LENGTH = 256K /* SRAM1_BASE */
-}
+#ifdef STACK_REGION
+    DTCM (rwx) :  ORIGIN = 0x20000000, LENGTH = (128K - STACK_SIZE)
+    STACK_RAM (rw) : ORIGIN = 0x20020000 - STACK_SIZE, LENGTH = STACK_SIZE
+#else
+    DTCM (rwx) :  ORIGIN = 0x20000000, LENGTH = 128K
+#endif
+    ITCM (rx)  :  ORIGIN = 0x00000000, LENGTH = 16K
 
-/* This linker script is used for images and thus contains an image header */
-_imghdr_size = 0x20;
+#else
+/* Fragment that goes into SECTIONS, can provide definition and sections if 
needed */
+    _itcm_start = ORIGIN(ITCM);
+    _itcm_end = ORIGIN(ITCM) + LENGTH(ITCM);
+    _dtcm_start = ORIGIN(DTCM);
+    _dtcm_end = ORIGIN(DTCM) + LENGTH(DTCM);
+
+#endif
diff --git a/hw/bsp/nucleo-f767zi/pkg.yml b/hw/bsp/nucleo-f767zi/pkg.yml
index 4d7cfc261..177b3a1ef 100644
--- a/hw/bsp/nucleo-f767zi/pkg.yml
+++ b/hw/bsp/nucleo-f767zi/pkg.yml
@@ -36,3 +36,4 @@ pkg.deps:
     - "@apache-mynewt-core/hw/mcu/stm/stm32f7xx"
     - "@apache-mynewt-core/libc"
     - "@apache-mynewt-core/hw/scripts"
+    - "@apache-mynewt-core/boot/startup"
diff --git a/hw/bsp/nucleo-f767zi/src/arch/cortex_m7/startup_stm32f767xx.s 
b/hw/bsp/nucleo-f767zi/src/arch/cortex_m7/startup_stm32f767xx.s
deleted file mode 100644
index 51c7e132d..000000000
--- a/hw/bsp/nucleo-f767zi/src/arch/cortex_m7/startup_stm32f767xx.s
+++ /dev/null
@@ -1,656 +0,0 @@
-/**
-  
******************************************************************************
-  * @file      startup_stm32f767xx.s
-  * @author    MCD Application Team
-  * @version   V1.2.0
-  * @date      30-December-2016
-  * @brief     STM32F767xx Devices vector table for GCC based toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR 
address
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M7 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  
******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 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.
-  *
-  
******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m7
-  .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
-/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
-
-/**
- * @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      /* 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 libc entry point.*/
-  bl  _start
-.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 M7. 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:
-  .globl __isr_vector
-__isr_vector:
-  .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
-
-  /* External Interrupts */
-  .word     WWDG_IRQHandler                   /* Window WatchDog              
*/
-  .word     PVD_IRQHandler                    /* PVD through EXTI Line 
detection */
-  .word     TAMP_STAMP_IRQHandler             /* Tamper and TimeStamps through 
the EXTI line */
-  .word     RTC_WKUP_IRQHandler               /* RTC Wakeup through the EXTI 
line */
-  .word     FLASH_IRQHandler                  /* FLASH                        
*/
-  .word     RCC_IRQHandler                    /* RCC                          
*/
-  .word     EXTI0_IRQHandler                  /* EXTI Line0                   
*/
-  .word     EXTI1_IRQHandler                  /* EXTI Line1                   
*/
-  .word     EXTI2_IRQHandler                  /* EXTI Line2                   
*/
-  .word     EXTI3_IRQHandler                  /* EXTI Line3                   
*/
-  .word     EXTI4_IRQHandler                  /* EXTI Line4                   
*/
-  .word     DMA1_Stream0_IRQHandler           /* DMA1 Stream 0                
*/
-  .word     DMA1_Stream1_IRQHandler           /* DMA1 Stream 1                
*/
-  .word     DMA1_Stream2_IRQHandler           /* DMA1 Stream 2                
*/
-  .word     DMA1_Stream3_IRQHandler           /* DMA1 Stream 3                
*/
-  .word     DMA1_Stream4_IRQHandler           /* DMA1 Stream 4                
*/
-  .word     DMA1_Stream5_IRQHandler           /* DMA1 Stream 5                
*/
-  .word     DMA1_Stream6_IRQHandler           /* DMA1 Stream 6                
*/
-  .word     ADC_IRQHandler                    /* ADC1, ADC2 and ADC3s         
*/
-  .word     CAN1_TX_IRQHandler                /* CAN1 TX                      
*/
-  .word     CAN1_RX0_IRQHandler               /* CAN1 RX0                     
*/
-  .word     CAN1_RX1_IRQHandler               /* CAN1 RX1                     
*/
-  .word     CAN1_SCE_IRQHandler               /* CAN1 SCE                     
*/
-  .word     EXTI9_5_IRQHandler                /* External Line[9:5]s          
*/
-  .word     TIM1_BRK_TIM9_IRQHandler          /* TIM1 Break and TIM9          
*/
-  .word     TIM1_UP_TIM10_IRQHandler          /* TIM1 Update and TIM10        
*/
-  .word     TIM1_TRG_COM_TIM11_IRQHandler     /* TIM1 Trigger and Commutation 
and TIM11 */
-  .word     TIM1_CC_IRQHandler                /* TIM1 Capture Compare         
*/
-  .word     TIM2_IRQHandler                   /* TIM2                         
*/
-  .word     TIM3_IRQHandler                   /* TIM3                         
*/
-  .word     TIM4_IRQHandler                   /* TIM4                         
*/
-  .word     I2C1_EV_IRQHandler                /* I2C1 Event                   
*/
-  .word     I2C1_ER_IRQHandler                /* I2C1 Error                   
*/
-  .word     I2C2_EV_IRQHandler                /* I2C2 Event                   
*/
-  .word     I2C2_ER_IRQHandler                /* I2C2 Error                   
*/
-  .word     SPI1_IRQHandler                   /* SPI1                         
*/
-  .word     SPI2_IRQHandler                   /* SPI2                         
*/
-  .word     USART1_IRQHandler                 /* USART1                       
*/
-  .word     USART2_IRQHandler                 /* USART2                       
*/
-  .word     USART3_IRQHandler                 /* USART3                       
*/
-  .word     EXTI15_10_IRQHandler              /* External Line[15:10]s        
*/
-  .word     RTC_Alarm_IRQHandler              /* RTC Alarm (A and B) through 
EXTI Line */
-  .word     OTG_FS_WKUP_IRQHandler            /* USB OTG FS Wakeup through 
EXTI line */
-  .word     TIM8_BRK_TIM12_IRQHandler         /* TIM8 Break and TIM12         
*/
-  .word     TIM8_UP_TIM13_IRQHandler          /* TIM8 Update and TIM13        
*/
-  .word     TIM8_TRG_COM_TIM14_IRQHandler     /* TIM8 Trigger and Commutation 
and TIM14 */
-  .word     TIM8_CC_IRQHandler                /* TIM8 Capture Compare         
*/
-  .word     DMA1_Stream7_IRQHandler           /* DMA1 Stream7                 
*/
-  .word     FMC_IRQHandler                    /* FMC                          
*/
-  .word     SDMMC1_IRQHandler                 /* SDMMC1                       
*/
-  .word     TIM5_IRQHandler                   /* TIM5                         
*/
-  .word     SPI3_IRQHandler                   /* SPI3                         
*/
-  .word     UART4_IRQHandler                  /* UART4                        
*/
-  .word     UART5_IRQHandler                  /* UART5                        
*/
-  .word     TIM6_DAC_IRQHandler               /* TIM6 and DAC1&2 underrun 
errors */
-  .word     TIM7_IRQHandler                   /* TIM7                         
*/
-  .word     DMA2_Stream0_IRQHandler           /* DMA2 Stream 0                
*/
-  .word     DMA2_Stream1_IRQHandler           /* DMA2 Stream 1                
*/
-  .word     DMA2_Stream2_IRQHandler           /* DMA2 Stream 2                
*/
-  .word     DMA2_Stream3_IRQHandler           /* DMA2 Stream 3                
*/
-  .word     DMA2_Stream4_IRQHandler           /* DMA2 Stream 4                
*/
-  .word     ETH_IRQHandler                    /* Ethernet                     
*/
-  .word     ETH_WKUP_IRQHandler               /* Ethernet Wakeup through EXTI 
line */
-  .word     CAN2_TX_IRQHandler                /* CAN2 TX                      
*/
-  .word     CAN2_RX0_IRQHandler               /* CAN2 RX0                     
*/
-  .word     CAN2_RX1_IRQHandler               /* CAN2 RX1                     
*/
-  .word     CAN2_SCE_IRQHandler               /* CAN2 SCE                     
*/
-  .word     OTG_FS_IRQHandler                 /* USB OTG FS                   
*/
-  .word     DMA2_Stream5_IRQHandler           /* DMA2 Stream 5                
*/
-  .word     DMA2_Stream6_IRQHandler           /* DMA2 Stream 6                
*/
-  .word     DMA2_Stream7_IRQHandler           /* DMA2 Stream 7                
*/
-  .word     USART6_IRQHandler                 /* USART6                       
*/
-  .word     I2C3_EV_IRQHandler                /* I2C3 event                   
*/
-  .word     I2C3_ER_IRQHandler                /* I2C3 error                   
*/
-  .word     OTG_HS_EP1_OUT_IRQHandler         /* USB OTG HS End Point 1 Out   
*/
-  .word     OTG_HS_EP1_IN_IRQHandler          /* USB OTG HS End Point 1 In    
*/
-  .word     OTG_HS_WKUP_IRQHandler            /* USB OTG HS Wakeup through 
EXTI */
-  .word     OTG_HS_IRQHandler                 /* USB OTG HS                   
*/
-  .word     DCMI_IRQHandler                   /* DCMI                         
*/
-  .word     0                                 /* Reserved                     
*/
-  .word     RNG_IRQHandler                    /* RNG                          
*/
-  .word     FPU_IRQHandler                    /* FPU                          
*/
-  .word     UART7_IRQHandler                  /* UART7                        
*/
-  .word     UART8_IRQHandler                  /* UART8                        
*/
-  .word     SPI4_IRQHandler                   /* SPI4                         
*/
-  .word     SPI5_IRQHandler                   /* SPI5                         
*/
-  .word     SPI6_IRQHandler                   /* SPI6                         
*/
-  .word     SAI1_IRQHandler                   /* SAI1                         
*/
-  .word     LTDC_IRQHandler                   /* LTDC                         
*/
-  .word     LTDC_ER_IRQHandler                /* LTDC error                   
*/
-  .word     DMA2D_IRQHandler                  /* DMA2D                        
*/
-  .word     SAI2_IRQHandler                   /* SAI2                         
*/
-  .word     QUADSPI_IRQHandler                /* QUADSPI                      
*/
-  .word     LPTIM1_IRQHandler                 /* LPTIM1                       
*/
-  .word     CEC_IRQHandler                    /* HDMI_CEC                     
*/
-  .word     I2C4_EV_IRQHandler                /* I2C4 Event                   
*/
-  .word     I2C4_ER_IRQHandler                /* I2C4 Error                   
*/
-  .word     SPDIF_RX_IRQHandler               /* SPDIF_RX                     
*/
-  .word     0                                 /* Reserved                     
*/
-  .word     DFSDM1_FLT0_IRQHandler            /* DFSDM1 Filter 0 global 
Interrupt */
-  .word     DFSDM1_FLT1_IRQHandler            /* DFSDM1 Filter 1 global 
Interrupt */
-  .word     DFSDM1_FLT2_IRQHandler            /* DFSDM1 Filter 2 global 
Interrupt */
-  .word     DFSDM1_FLT3_IRQHandler            /* DFSDM1 Filter 3 global 
Interrupt */
-  .word     SDMMC2_IRQHandler                 /* SDMMC2                       
*/
-  .word     CAN3_TX_IRQHandler                /* CAN3 TX                      
*/
-  .word     CAN3_RX0_IRQHandler               /* CAN3 RX0                     
*/
-  .word     CAN3_RX1_IRQHandler               /* CAN3 RX1                     
*/
-  .word     CAN3_SCE_IRQHandler               /* CAN3 SCE                     
*/
-  .word     JPEG_IRQHandler                   /* JPEG                         
*/
-  .word     MDIOS_IRQHandler                  /* MDIOS                        
*/
-  .size     __isr_vector, . - __isr_vector
-
-/*******************************************************************************
-*
-* 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_IRQHandler
-   .thumb_set EXTI2_IRQHandler,Default_Handler
-
-   .weak      EXTI3_IRQHandler
-   .thumb_set EXTI3_IRQHandler,Default_Handler
-
-   .weak      EXTI4_IRQHandler
-   .thumb_set EXTI4_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream0_IRQHandler
-   .thumb_set DMA1_Stream0_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream1_IRQHandler
-   .thumb_set DMA1_Stream1_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream2_IRQHandler
-   .thumb_set DMA1_Stream2_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream3_IRQHandler
-   .thumb_set DMA1_Stream3_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream4_IRQHandler
-   .thumb_set DMA1_Stream4_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream5_IRQHandler
-   .thumb_set DMA1_Stream5_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream6_IRQHandler
-   .thumb_set DMA1_Stream6_IRQHandler,Default_Handler
-
-   .weak      ADC_IRQHandler
-   .thumb_set ADC_IRQHandler,Default_Handler
-
-   .weak      CAN1_TX_IRQHandler
-   .thumb_set CAN1_TX_IRQHandler,Default_Handler
-
-   .weak      CAN1_RX0_IRQHandler
-   .thumb_set CAN1_RX0_IRQHandler,Default_Handler
-
-   .weak      CAN1_RX1_IRQHandler
-   .thumb_set CAN1_RX1_IRQHandler,Default_Handler
-
-   .weak      CAN1_SCE_IRQHandler
-   .thumb_set CAN1_SCE_IRQHandler,Default_Handler
-
-   .weak      EXTI9_5_IRQHandler
-   .thumb_set EXTI9_5_IRQHandler,Default_Handler
-
-   .weak      TIM1_BRK_TIM9_IRQHandler
-   .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
-
-   .weak      TIM1_UP_TIM10_IRQHandler
-   .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
-
-   .weak      TIM1_TRG_COM_TIM11_IRQHandler
-   .thumb_set TIM1_TRG_COM_TIM11_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      OTG_FS_WKUP_IRQHandler
-   .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
-
-   .weak      TIM8_BRK_TIM12_IRQHandler
-   .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler
-
-   .weak      TIM8_UP_TIM13_IRQHandler
-   .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler
-
-   .weak      TIM8_TRG_COM_TIM14_IRQHandler
-   .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler
-
-   .weak      TIM8_CC_IRQHandler
-   .thumb_set TIM8_CC_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream7_IRQHandler
-   .thumb_set DMA1_Stream7_IRQHandler,Default_Handler
-
-   .weak      FMC_IRQHandler
-   .thumb_set FMC_IRQHandler,Default_Handler
-
-   .weak      SDMMC1_IRQHandler
-   .thumb_set SDMMC1_IRQHandler,Default_Handler
-
-   .weak      TIM5_IRQHandler
-   .thumb_set TIM5_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_Stream0_IRQHandler
-   .thumb_set DMA2_Stream0_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream1_IRQHandler
-   .thumb_set DMA2_Stream1_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream2_IRQHandler
-   .thumb_set DMA2_Stream2_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream3_IRQHandler
-   .thumb_set DMA2_Stream3_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream4_IRQHandler
-   .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream4_IRQHandler
-   .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
-
-   .weak      ETH_IRQHandler
-   .thumb_set ETH_IRQHandler,Default_Handler
-
-   .weak      ETH_WKUP_IRQHandler
-   .thumb_set ETH_WKUP_IRQHandler,Default_Handler
-
-   .weak      CAN2_TX_IRQHandler
-   .thumb_set CAN2_TX_IRQHandler,Default_Handler
-
-   .weak      CAN2_RX0_IRQHandler
-   .thumb_set CAN2_RX0_IRQHandler,Default_Handler
-
-   .weak      CAN2_RX1_IRQHandler
-   .thumb_set CAN2_RX1_IRQHandler,Default_Handler
-
-   .weak      CAN2_SCE_IRQHandler
-   .thumb_set CAN2_SCE_IRQHandler,Default_Handler
-
-   .weak      OTG_FS_IRQHandler
-   .thumb_set OTG_FS_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream5_IRQHandler
-   .thumb_set DMA2_Stream5_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream6_IRQHandler
-   .thumb_set DMA2_Stream6_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream7_IRQHandler
-   .thumb_set DMA2_Stream7_IRQHandler,Default_Handler
-
-   .weak      USART6_IRQHandler
-   .thumb_set USART6_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      OTG_HS_EP1_OUT_IRQHandler
-   .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler
-
-   .weak      OTG_HS_EP1_IN_IRQHandler
-   .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler
-
-   .weak      OTG_HS_WKUP_IRQHandler
-   .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler
-
-   .weak      OTG_HS_IRQHandler
-   .thumb_set OTG_HS_IRQHandler,Default_Handler
-
-   .weak      DCMI_IRQHandler
-   .thumb_set DCMI_IRQHandler,Default_Handler
-
-   .weak      RNG_IRQHandler
-   .thumb_set RNG_IRQHandler,Default_Handler
-
-   .weak      FPU_IRQHandler
-   .thumb_set FPU_IRQHandler,Default_Handler
-
-   .weak      UART7_IRQHandler
-   .thumb_set UART7_IRQHandler,Default_Handler
-
-   .weak      UART8_IRQHandler
-   .thumb_set UART8_IRQHandler,Default_Handler
-
-   .weak      SPI4_IRQHandler
-   .thumb_set SPI4_IRQHandler,Default_Handler
-
-   .weak      SPI5_IRQHandler
-   .thumb_set SPI5_IRQHandler,Default_Handler
-
-   .weak      SPI6_IRQHandler
-   .thumb_set SPI6_IRQHandler,Default_Handler
-
-   .weak      SAI1_IRQHandler
-   .thumb_set SAI1_IRQHandler,Default_Handler
-
-   .weak      LTDC_IRQHandler
-   .thumb_set LTDC_IRQHandler,Default_Handler
-
-   .weak      LTDC_ER_IRQHandler
-   .thumb_set LTDC_ER_IRQHandler,Default_Handler
-
-   .weak      DMA2D_IRQHandler
-   .thumb_set DMA2D_IRQHandler,Default_Handler
-
-   .weak      SAI2_IRQHandler
-   .thumb_set SAI2_IRQHandler,Default_Handler
-
-   .weak      QUADSPI_IRQHandler
-   .thumb_set QUADSPI_IRQHandler,Default_Handler
-
-   .weak      LPTIM1_IRQHandler
-   .thumb_set LPTIM1_IRQHandler,Default_Handler
-
-   .weak      CEC_IRQHandler
-   .thumb_set CEC_IRQHandler,Default_Handler
-
-   .weak      I2C4_EV_IRQHandler
-   .thumb_set I2C4_EV_IRQHandler,Default_Handler
-
-   .weak      I2C4_ER_IRQHandler
-   .thumb_set I2C4_ER_IRQHandler,Default_Handler
-
-   .weak      SPDIF_RX_IRQHandler
-   .thumb_set SPDIF_RX_IRQHandler,Default_Handler
-
-   .weak      DFSDM1_FLT0_IRQHandler
-   .thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler
-
-   .weak      DFSDM1_FLT1_IRQHandler
-   .thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler
-
-   .weak      DFSDM1_FLT2_IRQHandler
-   .thumb_set DFSDM1_FLT2_IRQHandler,Default_Handler
-
-   .weak      DFSDM1_FLT3_IRQHandler
-   .thumb_set DFSDM1_FLT3_IRQHandler,Default_Handler
-
-   .weak      SDMMC2_IRQHandler
-   .thumb_set SDMMC2_IRQHandler,Default_Handler
-
-   .weak      CAN3_TX_IRQHandler
-   .thumb_set CAN3_TX_IRQHandler,Default_Handler
-
-   .weak      CAN3_RX0_IRQHandler
-   .thumb_set CAN3_RX0_IRQHandler,Default_Handler
-
-   .weak      CAN3_RX1_IRQHandler
-   .thumb_set CAN3_RX1_IRQHandler,Default_Handler
-
-   .weak      CAN3_SCE_IRQHandler
-   .thumb_set CAN3_SCE_IRQHandler,Default_Handler
-
-   .weak      JPEG_IRQHandler
-   .thumb_set JPEG_IRQHandler,Default_Handler
-
-   .weak      MDIOS_IRQHandler
-   .thumb_set MDIOS_IRQHandler,Default_Handler
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF 
FILE****/
diff --git a/hw/bsp/nucleo-f767zi/src/hal_bsp.c 
b/hw/bsp/nucleo-f767zi/src/hal_bsp.c
index a039e20a6..8fc726600 100644
--- a/hw/bsp/nucleo-f767zi/src/hal_bsp.c
+++ b/hw/bsp/nucleo-f767zi/src/hal_bsp.c
@@ -187,16 +187,16 @@ const struct stm32_eth_cfg os_bsp_eth0_cfg = {
 /* FIXME */
 static const struct hal_bsp_mem_dump dump_cfg[] = {
     [0] = {
-        .hbmd_start = &_ram_start,
+        .hbmd_start = _ram_start,
         .hbmd_size = RAM_SIZE,
     },
     [1] = {
-        .hbmd_start = &_dtcmram_start,
-        .hbmd_size = DTCMRAM_SIZE,
+        .hbmd_start = _dtcm_start,
+        .hbmd_size = DTCM_SIZE,
     },
     [2] = {
-        .hbmd_start = &_itcmram_start,
-        .hbmd_size = ITCMRAM_SIZE,
+        .hbmd_start = _itcm_start,
+        .hbmd_size = ITCM_SIZE,
     },
 };
 
diff --git a/hw/bsp/nucleo-f767zi/syscfg.yml b/hw/bsp/nucleo-f767zi/syscfg.yml
index 1da9462ad..3e2545d64 100644
--- a/hw/bsp/nucleo-f767zi/syscfg.yml
+++ b/hw/bsp/nucleo-f767zi/syscfg.yml
@@ -27,6 +27,8 @@ syscfg.defs:
         value: 12
 
 syscfg.vals:
+    MCU_RAM_START: 0x20020000
+    MCU_RAM_SIZE: 368K
     REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
     CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS
     NFFS_FLASH_AREA: FLASH_AREA_NFFS
diff --git a/hw/bsp/stm32f7discovery/bsp.yml b/hw/bsp/stm32f7discovery/bsp.yml
index 0aefce755..82a977c45 100644
--- a/hw/bsp/stm32f7discovery/bsp.yml
+++ b/hw/bsp/stm32f7discovery/bsp.yml
@@ -22,12 +22,7 @@ bsp.url: 
https://www.st.com/en/evaluation-tools/32f746gdiscovery.html
 bsp.maker: "STMicroelectronics"
 bsp.arch: cortex_m7
 bsp.compiler: compiler/arm-none-eabi-m7
-bsp.linkerscript:
-    - "hw/bsp/stm32f7discovery/stm32f7discovery.ld"
-    - "@apache-mynewt-core/hw/mcu/stm/stm32f7xx/stm32f746.ld"
-bsp.linkerscript.BOOT_LOADER.OVERWRITE:
-    - "hw/bsp/stm32f7discovery/boot-stm32f7discovery.ld"
-    - "@apache-mynewt-core/hw/mcu/stm/stm32f7xx/stm32f746.ld"
+bsp.linkerscript: autogenerated
 bsp.downloadscript: "hw/bsp/stm32f7discovery/stm32f7discovery_download.sh"
 bsp.debugscript: "hw/bsp/stm32f7discovery/stm32f7discovery_debug.sh"
 
diff --git a/hw/bsp/stm32f7discovery/include/bsp/bsp.h 
b/hw/bsp/stm32f7discovery/include/bsp/bsp.h
index 72d9a40a5..6624a4e92 100644
--- a/hw/bsp/stm32f7discovery/include/bsp/bsp.h
+++ b/hw/bsp/stm32f7discovery/include/bsp/bsp.h
@@ -34,13 +34,15 @@ extern "C" {
 /* More convenient section placement macros. */
 #define bssnz_t         sec_bss_nz_core
 
-extern uint8_t _ram_start;
-extern uint8_t _dtcmram_start;
-extern uint8_t _itcmram_start;
-
-#define RAM_SIZE        (256 * 1024)
-#define DTCMRAM_SIZE    (64 * 1024)
-#define ITCMRAM_SIZE    (16 * 1024)
+extern uint8_t _ram_start[];
+extern uint8_t _dtcm_start[];
+extern uint8_t _itcm_start[];
+extern uint8_t _ram2_start[];
+
+#define RAM_SIZE        (240 * 1024)
+#define RAM2_SIZE       (16 * 1024)
+#define DTCM_SIZE       (64 * 1024)
+#define ITCM_SIZE       (16 * 1024)
 
 /* LED pins */
 #define LED_BLINK_PIN   MCU_GPIO_PORTI(1)
diff --git a/hw/bsp/stm32f7discovery/pkg.yml b/hw/bsp/stm32f7discovery/pkg.yml
index b55c0b2ab..dfa09cdcd 100644
--- a/hw/bsp/stm32f7discovery/pkg.yml
+++ b/hw/bsp/stm32f7discovery/pkg.yml
@@ -35,3 +35,5 @@ pkg.cflags.HARDFLOAT:
 pkg.deps:
     - "@apache-mynewt-core/hw/mcu/stm/stm32f7xx"
     - "@apache-mynewt-core/libc"
+    - "@apache-mynewt-core/hw/scripts"
+    - "@apache-mynewt-core/boot/startup"
diff --git a/hw/bsp/stm32f7discovery/src/arch/cortex_m7/startup_stm32f746xx.s 
b/hw/bsp/stm32f7discovery/src/arch/cortex_m7/startup_stm32f746xx.s
deleted file mode 100644
index 80b06a24b..000000000
--- a/hw/bsp/stm32f7discovery/src/arch/cortex_m7/startup_stm32f746xx.s
+++ /dev/null
@@ -1,609 +0,0 @@
-/**
-  
******************************************************************************
-  * @file      startup_stm32f746xx.s
-  * @author    MCD Application Team
-  * @Version    V1.0.2
-  * @Date       21-September-2015
-  * @brief     STM32F746xx Devices vector table for GCC based toolchain.
-  *            This module performs:
-  *                - Set the initial SP
-  *                - Set the initial PC == Reset_Handler,
-  *                - Set the vector table entries with the exceptions ISR 
address
-  *                - Branches to main in the C library (which eventually
-  *                  calls main()).
-  *            After Reset the Cortex-M7 processor is in Thread mode,
-  *            priority is Privileged, and the Stack is set to Main.
-  
******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2015 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.
-  *
-  
******************************************************************************
-  */
-
-  .syntax unified
-  .cpu cortex-m7
-  .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
-/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
-
-/**
- * @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      /* 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 libc entry point.*/
-  bl  _start
-.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 M7. 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:
-  .globl __isr_vector
-__isr_vector:
-  .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
-
-  /* External Interrupts */
-  .word     WWDG_IRQHandler                   /* Window WatchDog              
*/
-  .word     PVD_IRQHandler                    /* PVD through EXTI Line 
detection */
-  .word     TAMP_STAMP_IRQHandler             /* Tamper and TimeStamps through 
the EXTI line */
-  .word     RTC_WKUP_IRQHandler               /* RTC Wakeup through the EXTI 
line */
-  .word     FLASH_IRQHandler                  /* FLASH                        
*/
-  .word     RCC_IRQHandler                    /* RCC                          
*/
-  .word     EXTI0_IRQHandler                  /* EXTI Line0                   
*/
-  .word     EXTI1_IRQHandler                  /* EXTI Line1                   
*/
-  .word     EXTI2_IRQHandler                  /* EXTI Line2                   
*/
-  .word     EXTI3_IRQHandler                  /* EXTI Line3                   
*/
-  .word     EXTI4_IRQHandler                  /* EXTI Line4                   
*/
-  .word     DMA1_Stream0_IRQHandler           /* DMA1 Stream 0                
*/
-  .word     DMA1_Stream1_IRQHandler           /* DMA1 Stream 1                
*/
-  .word     DMA1_Stream2_IRQHandler           /* DMA1 Stream 2                
*/
-  .word     DMA1_Stream3_IRQHandler           /* DMA1 Stream 3                
*/
-  .word     DMA1_Stream4_IRQHandler           /* DMA1 Stream 4                
*/
-  .word     DMA1_Stream5_IRQHandler           /* DMA1 Stream 5                
*/
-  .word     DMA1_Stream6_IRQHandler           /* DMA1 Stream 6                
*/
-  .word     ADC_IRQHandler                    /* ADC1, ADC2 and ADC3s         
*/
-  .word     CAN1_TX_IRQHandler                /* CAN1 TX                      
*/
-  .word     CAN1_RX0_IRQHandler               /* CAN1 RX0                     
*/
-  .word     CAN1_RX1_IRQHandler               /* CAN1 RX1                     
*/
-  .word     CAN1_SCE_IRQHandler               /* CAN1 SCE                     
*/
-  .word     EXTI9_5_IRQHandler                /* External Line[9:5]s          
*/
-  .word     TIM1_BRK_TIM9_IRQHandler          /* TIM1 Break and TIM9          
*/
-  .word     TIM1_UP_TIM10_IRQHandler          /* TIM1 Update and TIM10        
*/
-  .word     TIM1_TRG_COM_TIM11_IRQHandler     /* TIM1 Trigger and Commutation 
and TIM11 */
-  .word     TIM1_CC_IRQHandler                /* TIM1 Capture Compare         
*/
-  .word     TIM2_IRQHandler                   /* TIM2                         
*/
-  .word     TIM3_IRQHandler                   /* TIM3                         
*/
-  .word     TIM4_IRQHandler                   /* TIM4                         
*/
-  .word     I2C1_EV_IRQHandler                /* I2C1 Event                   
*/
-  .word     I2C1_ER_IRQHandler                /* I2C1 Error                   
*/
-  .word     I2C2_EV_IRQHandler                /* I2C2 Event                   
*/
-  .word     I2C2_ER_IRQHandler                /* I2C2 Error                   
*/
-  .word     SPI1_IRQHandler                   /* SPI1                         
*/
-  .word     SPI2_IRQHandler                   /* SPI2                         
*/
-  .word     USART1_IRQHandler                 /* USART1                       
*/
-  .word     USART2_IRQHandler                 /* USART2                       
*/
-  .word     USART3_IRQHandler                 /* USART3                       
*/
-  .word     EXTI15_10_IRQHandler              /* External Line[15:10]s        
*/
-  .word     RTC_Alarm_IRQHandler              /* RTC Alarm (A and B) through 
EXTI Line */
-  .word     OTG_FS_WKUP_IRQHandler            /* USB OTG FS Wakeup through 
EXTI line */
-  .word     TIM8_BRK_TIM12_IRQHandler         /* TIM8 Break and TIM12         
*/
-  .word     TIM8_UP_TIM13_IRQHandler          /* TIM8 Update and TIM13        
*/
-  .word     TIM8_TRG_COM_TIM14_IRQHandler     /* TIM8 Trigger and Commutation 
and TIM14 */
-  .word     TIM8_CC_IRQHandler                /* TIM8 Capture Compare         
*/
-  .word     DMA1_Stream7_IRQHandler           /* DMA1 Stream7                 
*/
-  .word     FMC_IRQHandler                    /* FMC                          
*/
-  .word     SDMMC1_IRQHandler                 /* SDMMC1                       
*/
-  .word     TIM5_IRQHandler                   /* TIM5                         
*/
-  .word     SPI3_IRQHandler                   /* SPI3                         
*/
-  .word     UART4_IRQHandler                  /* UART4                        
*/
-  .word     UART5_IRQHandler                  /* UART5                        
*/
-  .word     TIM6_DAC_IRQHandler               /* TIM6 and DAC1&2 underrun 
errors */
-  .word     TIM7_IRQHandler                   /* TIM7                         
*/
-  .word     DMA2_Stream0_IRQHandler           /* DMA2 Stream 0                
*/
-  .word     DMA2_Stream1_IRQHandler           /* DMA2 Stream 1                
*/
-  .word     DMA2_Stream2_IRQHandler           /* DMA2 Stream 2                
*/
-  .word     DMA2_Stream3_IRQHandler           /* DMA2 Stream 3                
*/
-  .word     DMA2_Stream4_IRQHandler           /* DMA2 Stream 4                
*/
-  .word     ETH_IRQHandler                    /* Ethernet                     
*/
-  .word     ETH_WKUP_IRQHandler               /* Ethernet Wakeup through EXTI 
line */
-  .word     CAN2_TX_IRQHandler                /* CAN2 TX                      
*/
-  .word     CAN2_RX0_IRQHandler               /* CAN2 RX0                     
*/
-  .word     CAN2_RX1_IRQHandler               /* CAN2 RX1                     
*/
-  .word     CAN2_SCE_IRQHandler               /* CAN2 SCE                     
*/
-  .word     OTG_FS_IRQHandler                 /* USB OTG FS                   
*/
-  .word     DMA2_Stream5_IRQHandler           /* DMA2 Stream 5                
*/
-  .word     DMA2_Stream6_IRQHandler           /* DMA2 Stream 6                
*/
-  .word     DMA2_Stream7_IRQHandler           /* DMA2 Stream 7                
*/
-  .word     USART6_IRQHandler                 /* USART6                       
*/
-  .word     I2C3_EV_IRQHandler                /* I2C3 event                   
*/
-  .word     I2C3_ER_IRQHandler                /* I2C3 error                   
*/
-  .word     OTG_HS_EP1_OUT_IRQHandler         /* USB OTG HS End Point 1 Out   
*/
-  .word     OTG_HS_EP1_IN_IRQHandler          /* USB OTG HS End Point 1 In    
*/
-  .word     OTG_HS_WKUP_IRQHandler            /* USB OTG HS Wakeup through 
EXTI */
-  .word     OTG_HS_IRQHandler                 /* USB OTG HS                   
*/
-  .word     DCMI_IRQHandler                   /* DCMI                         
*/
-  .word     0                                 /* Reserved                     
*/
-  .word     RNG_IRQHandler                    /* RNG                          
*/
-  .word     FPU_IRQHandler                    /* FPU                          
*/
-  .word     UART7_IRQHandler                  /* UART7                        
*/
-  .word     UART8_IRQHandler                  /* UART8                        
*/
-  .word     SPI4_IRQHandler                   /* SPI4                         
*/
-  .word     SPI5_IRQHandler                   /* SPI5                         
*/
-  .word     SPI6_IRQHandler                   /* SPI6                         
*/
-  .word     SAI1_IRQHandler                   /* SAI1                         
*/
-  .word     LTDC_IRQHandler                   /* LTDC                         
*/
-  .word     LTDC_ER_IRQHandler                /* LTDC error                   
*/
-  .word     DMA2D_IRQHandler                  /* DMA2D                        
*/
-  .word     SAI2_IRQHandler                   /* SAI2                         
*/
-  .word     QUADSPI_IRQHandler                /* QUADSPI                      
*/
-  .word     LPTIM1_IRQHandler                 /* LPTIM1                       
*/
-  .word     CEC_IRQHandler                    /* HDMI_CEC                     
*/
-  .word     I2C4_EV_IRQHandler                /* I2C4 Event                   
*/
-  .word     I2C4_ER_IRQHandler                /* I2C4 Error                   
*/
-  .word     SPDIF_RX_IRQHandler               /* SPDIF_RX                     
*/
-  .size     __isr_vector, . - __isr_vector
-
-/*******************************************************************************
-*
-* 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_IRQHandler
-   .thumb_set EXTI2_IRQHandler,Default_Handler
-
-   .weak      EXTI3_IRQHandler
-   .thumb_set EXTI3_IRQHandler,Default_Handler
-
-   .weak      EXTI4_IRQHandler
-   .thumb_set EXTI4_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream0_IRQHandler
-   .thumb_set DMA1_Stream0_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream1_IRQHandler
-   .thumb_set DMA1_Stream1_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream2_IRQHandler
-   .thumb_set DMA1_Stream2_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream3_IRQHandler
-   .thumb_set DMA1_Stream3_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream4_IRQHandler
-   .thumb_set DMA1_Stream4_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream5_IRQHandler
-   .thumb_set DMA1_Stream5_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream6_IRQHandler
-   .thumb_set DMA1_Stream6_IRQHandler,Default_Handler
-
-   .weak      ADC_IRQHandler
-   .thumb_set ADC_IRQHandler,Default_Handler
-
-   .weak      CAN1_TX_IRQHandler
-   .thumb_set CAN1_TX_IRQHandler,Default_Handler
-
-   .weak      CAN1_RX0_IRQHandler
-   .thumb_set CAN1_RX0_IRQHandler,Default_Handler
-
-   .weak      CAN1_RX1_IRQHandler
-   .thumb_set CAN1_RX1_IRQHandler,Default_Handler
-
-   .weak      CAN1_SCE_IRQHandler
-   .thumb_set CAN1_SCE_IRQHandler,Default_Handler
-
-   .weak      EXTI9_5_IRQHandler
-   .thumb_set EXTI9_5_IRQHandler,Default_Handler
-
-   .weak      TIM1_BRK_TIM9_IRQHandler
-   .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
-
-   .weak      TIM1_UP_TIM10_IRQHandler
-   .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
-
-   .weak      TIM1_TRG_COM_TIM11_IRQHandler
-   .thumb_set TIM1_TRG_COM_TIM11_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      OTG_FS_WKUP_IRQHandler
-   .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
-
-   .weak      TIM8_BRK_TIM12_IRQHandler
-   .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler
-
-   .weak      TIM8_UP_TIM13_IRQHandler
-   .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler
-
-   .weak      TIM8_TRG_COM_TIM14_IRQHandler
-   .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler
-
-   .weak      TIM8_CC_IRQHandler
-   .thumb_set TIM8_CC_IRQHandler,Default_Handler
-
-   .weak      DMA1_Stream7_IRQHandler
-   .thumb_set DMA1_Stream7_IRQHandler,Default_Handler
-
-   .weak      FMC_IRQHandler
-   .thumb_set FMC_IRQHandler,Default_Handler
-
-   .weak      SDMMC1_IRQHandler
-   .thumb_set SDMMC1_IRQHandler,Default_Handler
-
-   .weak      TIM5_IRQHandler
-   .thumb_set TIM5_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_Stream0_IRQHandler
-   .thumb_set DMA2_Stream0_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream1_IRQHandler
-   .thumb_set DMA2_Stream1_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream2_IRQHandler
-   .thumb_set DMA2_Stream2_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream3_IRQHandler
-   .thumb_set DMA2_Stream3_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream4_IRQHandler
-   .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream4_IRQHandler
-   .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
-
-   .weak      ETH_IRQHandler
-   .thumb_set ETH_IRQHandler,Default_Handler
-
-   .weak      ETH_WKUP_IRQHandler
-   .thumb_set ETH_WKUP_IRQHandler,Default_Handler
-
-   .weak      CAN2_TX_IRQHandler
-   .thumb_set CAN2_TX_IRQHandler,Default_Handler
-
-   .weak      CAN2_RX0_IRQHandler
-   .thumb_set CAN2_RX0_IRQHandler,Default_Handler
-
-   .weak      CAN2_RX1_IRQHandler
-   .thumb_set CAN2_RX1_IRQHandler,Default_Handler
-
-   .weak      CAN2_SCE_IRQHandler
-   .thumb_set CAN2_SCE_IRQHandler,Default_Handler
-
-   .weak      OTG_FS_IRQHandler
-   .thumb_set OTG_FS_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream5_IRQHandler
-   .thumb_set DMA2_Stream5_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream6_IRQHandler
-   .thumb_set DMA2_Stream6_IRQHandler,Default_Handler
-
-   .weak      DMA2_Stream7_IRQHandler
-   .thumb_set DMA2_Stream7_IRQHandler,Default_Handler
-
-   .weak      USART6_IRQHandler
-   .thumb_set USART6_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      OTG_HS_EP1_OUT_IRQHandler
-   .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler
-
-   .weak      OTG_HS_EP1_IN_IRQHandler
-   .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler
-
-   .weak      OTG_HS_WKUP_IRQHandler
-   .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler
-
-   .weak      OTG_HS_IRQHandler
-   .thumb_set OTG_HS_IRQHandler,Default_Handler
-
-   .weak      DCMI_IRQHandler
-   .thumb_set DCMI_IRQHandler,Default_Handler
-
-   .weak      RNG_IRQHandler
-   .thumb_set RNG_IRQHandler,Default_Handler
-
-   .weak      FPU_IRQHandler
-   .thumb_set FPU_IRQHandler,Default_Handler
-
-   .weak      UART7_IRQHandler
-   .thumb_set UART7_IRQHandler,Default_Handler
-
-   .weak      UART8_IRQHandler
-   .thumb_set UART8_IRQHandler,Default_Handler
-
-   .weak      SPI4_IRQHandler
-   .thumb_set SPI4_IRQHandler,Default_Handler
-
-   .weak      SPI5_IRQHandler
-   .thumb_set SPI5_IRQHandler,Default_Handler
-
-   .weak      SPI6_IRQHandler
-   .thumb_set SPI6_IRQHandler,Default_Handler
-
-   .weak      SAI1_IRQHandler
-   .thumb_set SAI1_IRQHandler,Default_Handler
-
-   .weak      LTDC_IRQHandler
-   .thumb_set LTDC_IRQHandler,Default_Handler
-
-   .weak      LTDC_ER_IRQHandler
-   .thumb_set LTDC_ER_IRQHandler,Default_Handler
-
-   .weak      DMA2D_IRQHandler
-   .thumb_set DMA2D_IRQHandler,Default_Handler
-
-   .weak      SAI2_IRQHandler
-   .thumb_set SAI2_IRQHandler,Default_Handler
-
-   .weak      QUADSPI_IRQHandler
-   .thumb_set QUADSPI_IRQHandler,Default_Handler
-
-   .weak      LPTIM1_IRQHandler
-   .thumb_set LPTIM1_IRQHandler,Default_Handler
-
-   .weak      CEC_IRQHandler
-   .thumb_set CEC_IRQHandler,Default_Handler
-
-   .weak      I2C4_EV_IRQHandler
-   .thumb_set I2C4_EV_IRQHandler,Default_Handler
-
-   .weak      I2C4_ER_IRQHandler
-   .thumb_set I2C4_ER_IRQHandler,Default_Handler
-
-   .weak      SPDIF_RX_IRQHandler
-   .thumb_set SPDIF_RX_IRQHandler,Default_Handler
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF 
FILE****/
-
diff --git a/hw/bsp/stm32f7discovery/src/hal_bsp.c 
b/hw/bsp/stm32f7discovery/src/hal_bsp.c
index 357c750fd..5bb0d5bd8 100644
--- a/hw/bsp/stm32f7discovery/src/hal_bsp.c
+++ b/hw/bsp/stm32f7discovery/src/hal_bsp.c
@@ -68,8 +68,9 @@ const uint32_t stm32_flash_sectors[] = {
     0x08100000,     /* End of flash */
 };
 
-const uint32_t STM32_FLASH_NUM_AREAS = (sizeof(stm32_flash_sectors) /
-                                        sizeof(stm32_flash_sectors[0]) - 1);
+#define SZ (sizeof(stm32_flash_sectors) / sizeof(stm32_flash_sectors[0]))
+static_assert(MYNEWT_VAL(STM32_FLASH_NUM_AREAS) + 1 == SZ,
+        "STM32_FLASH_NUM_AREAS does not match flash sectors");
 
 #if MYNEWT_VAL(UART_0)
 const struct stm32_uart_cfg os_bsp_uart0_cfg = {
@@ -120,16 +121,16 @@ const struct stm32_eth_cfg os_bsp_eth0_cfg = {
 /* FIXME */
 static const struct hal_bsp_mem_dump dump_cfg[] = {
     [0] = {
-        .hbmd_start = &_ram_start,
+        .hbmd_start = _ram_start,
         .hbmd_size = RAM_SIZE,
     },
     [1] = {
-        .hbmd_start = &_dtcmram_start,
-        .hbmd_size = DTCMRAM_SIZE,
+        .hbmd_start = _dtcm_start,
+        .hbmd_size = DTCM_SIZE,
     },
     [2] = {
-        .hbmd_start = &_itcmram_start,
-        .hbmd_size = ITCMRAM_SIZE,
+        .hbmd_start = _itcm_start,
+        .hbmd_size = ITCM_SIZE,
     },
 };
 
diff --git a/hw/bsp/stm32f7discovery/syscfg.yml 
b/hw/bsp/stm32f7discovery/syscfg.yml
index bc919cad4..878ea583a 100644
--- a/hw/bsp/stm32f7discovery/syscfg.yml
+++ b/hw/bsp/stm32f7discovery/syscfg.yml
@@ -24,9 +24,11 @@ syscfg.defs:
 
     STM32_FLASH_NUM_AREAS:
         description: 'Number of flash sectors for a non-linear STM32 MCU.'
-        value: 12
+        value: 8
 
 syscfg.vals:
+    MCU_RAM_START: 0x20020000
+    MCU_RAM_SIZE: 240K
     REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
     CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS
     NFFS_FLASH_AREA: FLASH_AREA_NFFS
@@ -52,3 +54,8 @@ syscfg.vals:
     TIMER_0_TIM: 'TIM1'
     TIMER_1_TIM: 'TIM8'
     TIMER_2_TIM: 'TIM9'
+    MYNEWT_DOWNLOADER: openocd
+    MYNEWT_DOWNLOADER_OPENOCD_CFG: stm32f7discovery.cfg
+    MYNEWT_DOWNLOADER_OPENOCD_INTERFACE: interface/stlink-v2-1.cfg
+    MYNEWT_DOWNLOADER_MFG_IMAGE_FLASH_OFFSET: 0x08000000
+    JLINK_TARGET: STM32F746NG


Reply via email to