From ec355e57114b6963eb9ff59c3216e1359f775989 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Fri, 7 Aug 2015 09:46:47 +0000 Subject: STM32L4xx startup support. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8176 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- .../ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld | 50 ++++++++++++ .../ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk | 11 +++ .../ports/ARMCMx/devices/STM32L4xx/cmparams.h | 90 ++++++++++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld create mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk create mode 100644 os/common/ports/ARMCMx/devices/STM32L4xx/cmparams.h (limited to 'os/common') diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld new file mode 100644 index 000000000..c88c78a94 --- /dev/null +++ b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld @@ -0,0 +1,50 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F303xC memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 1M + ram0 : org = 0x20000000, len = 96k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x10000000, len = 32k + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk new file mode 100644 index 000000000..225b7cbca --- /dev/null +++ b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk @@ -0,0 +1,11 @@ +# List of the ChibiOS generic STM32L4xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32L4xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/devices/STM32L4xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32L4xx/cmparams.h new file mode 100644 index 000000000..a3a4e09a4 --- /dev/null +++ b/os/common/ports/ARMCMx/devices/STM32L4xx/cmparams.h @@ -0,0 +1,90 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32F4xx/cmparams.h + * @brief ARM Cortex-M4 parameters for the STM32F4xx. + * + * @defgroup ARMCMx_STM32L$xx STM32L4xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M4 specific parameters for the + * STM32L4xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 4 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 1 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 4 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 88 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined(STM32L471xx) && !defined(STM32L475xx) && \ + !defined(STM32L476xx) && !defined(STM32L485xx) && \ + !defined (STM32L486xx) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32l4xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_HAS_FPU != __FPU_PRESENT +#error "CMSIS __FPU_PRESENT mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ -- cgit v1.2.3