Added support for STM32F412.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9936 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
Rocco Marco Guglielmi 2016-11-20 20:53:25 +00:00
parent 5a4dfe9066
commit 1ddf1e6ac0
4 changed files with 1102 additions and 613 deletions

View File

@ -0,0 +1,85 @@
/*
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
* STM32F412xE memory setup.
*/
MEMORY
{
flash0 : org = 0x08000000, len = 512k
flash1 : org = 0x00000000, len = 0
flash2 : org = 0x00000000, len = 0
flash3 : org = 0x00000000, len = 0
flash4 : org = 0x00000000, len = 0
flash5 : org = 0x00000000, len = 0
flash6 : org = 0x00000000, len = 0
flash7 : org = 0x00000000, len = 0
ram0 : org = 0x20000000, len = 256k
ram1 : org = 0x00000000, len = 0
ram2 : org = 0x00000000, len = 0
ram3 : org = 0x00000000, len = 0
ram4 : org = 0x00000000, len = 0
ram5 : org = 0x00000000, len = 0
ram6 : org = 0x00000000, len = 0
ram7 : org = 0x00000000, len = 0
}
/* For each data/text section two region are defined, a virtual region
and a load region (_LMA suffix).*/
/* Flash region to be used for exception vectors.*/
REGION_ALIAS("VECTORS_FLASH", flash0);
REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
/* Flash region to be used for constructors and destructors.*/
REGION_ALIAS("XTORS_FLASH", flash0);
REGION_ALIAS("XTORS_FLASH_LMA", flash0);
/* Flash region to be used for code text.*/
REGION_ALIAS("TEXT_FLASH", flash0);
REGION_ALIAS("TEXT_FLASH_LMA", flash0);
/* Flash region to be used for read only data.*/
REGION_ALIAS("RODATA_FLASH", flash0);
REGION_ALIAS("RODATA_FLASH_LMA", flash0);
/* Flash region to be used for various.*/
REGION_ALIAS("VARIOUS_FLASH", flash0);
REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
/* Flash region to be used for RAM(n) initialization data.*/
REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
/* 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);
REGION_ALIAS("DATA_RAM_LMA", flash0);
/* RAM region to be used for BSS segment.*/
REGION_ALIAS("BSS_RAM", ram0);
/* RAM region to be used for the default heap.*/
REGION_ALIAS("HEAP_RAM", ram0);
/* Generic rules inclusion.*/
INCLUDE rules.ld

View File

@ -0,0 +1,85 @@
/*
ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
* STM32F412xG memory setup.
*/
MEMORY
{
flash0 : org = 0x08000000, len = 1M
flash1 : org = 0x00000000, len = 0
flash2 : org = 0x00000000, len = 0
flash3 : org = 0x00000000, len = 0
flash4 : org = 0x00000000, len = 0
flash5 : org = 0x00000000, len = 0
flash6 : org = 0x00000000, len = 0
flash7 : org = 0x00000000, len = 0
ram0 : org = 0x20000000, len = 256k
ram1 : org = 0x00000000, len = 0
ram2 : org = 0x00000000, len = 0
ram3 : org = 0x00000000, len = 0
ram4 : org = 0x00000000, len = 0
ram5 : org = 0x00000000, len = 0
ram6 : org = 0x00000000, len = 0
ram7 : org = 0x00000000, len = 0
}
/* For each data/text section two region are defined, a virtual region
and a load region (_LMA suffix).*/
/* Flash region to be used for exception vectors.*/
REGION_ALIAS("VECTORS_FLASH", flash0);
REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
/* Flash region to be used for constructors and destructors.*/
REGION_ALIAS("XTORS_FLASH", flash0);
REGION_ALIAS("XTORS_FLASH_LMA", flash0);
/* Flash region to be used for code text.*/
REGION_ALIAS("TEXT_FLASH", flash0);
REGION_ALIAS("TEXT_FLASH_LMA", flash0);
/* Flash region to be used for read only data.*/
REGION_ALIAS("RODATA_FLASH", flash0);
REGION_ALIAS("RODATA_FLASH_LMA", flash0);
/* Flash region to be used for various.*/
REGION_ALIAS("VARIOUS_FLASH", flash0);
REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
/* Flash region to be used for RAM(n) initialization data.*/
REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
/* 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);
REGION_ALIAS("DATA_RAM_LMA", flash0);
/* RAM region to be used for BSS segment.*/
REGION_ALIAS("BSS_RAM", ram0);
/* RAM region to be used for the default heap.*/
REGION_ALIAS("HEAP_RAM", ram0);
/* Generic rules inclusion.*/
INCLUDE rules.ld

View File

@ -61,42 +61,39 @@
#if defined(STM32F205xx) || defined(__DOXYGEN__)
#define PLATFORM_NAME "STM32F205 High Performance"
#elif defined(STM32F215xx)
#define PLATFORM_NAME "STM32F215 High Performance"
#elif defined(STM32F207xx)
#define PLATFORM_NAME "STM32F207 High Performance"
#elif defined(STM32F215xx)
#define PLATFORM_NAME "STM32F215 High Performance"
#elif defined(STM32F217xx)
#define PLATFORM_NAME "STM32F217 High Performance"
#elif defined(STM32F401xC)
#define PLATFORM_NAME "STM32F401xC High Performance with DSP and FPU"
#elif defined(STM32F401xE)
#define PLATFORM_NAME "STM32F401xE High Performance with DSP and FPU"
#elif defined(STM32F401xx)
#define PLATFORM_NAME "STM32F401 High Performance with DSP and FPU"
#elif defined(STM32F405xx)
#define PLATFORM_NAME "STM32F405 High Performance with DSP and FPU"
#elif defined(STM32F415xx)
#define PLATFORM_NAME "STM32F415 High Performance with DSP and FPU"
#elif defined(STM32F407xx)
#define PLATFORM_NAME "STM32F407 High Performance with DSP and FPU"
#elif defined(STM32F410xx)
#define PLATFORM_NAME "STM32F410 High Performance with DSP and FPU"
#elif defined(STM32F411xx)
#define PLATFORM_NAME "STM32F411 High Performance with DSP and FPU"
#elif defined(STM32F412xx)
#define PLATFORM_NAME "STM32F412 High Performance with DSP and FPU"
#elif defined(STM32F415xx)
#define PLATFORM_NAME "STM32F415 High Performance with DSP and FPU"
#elif defined(STM32F417xx)
#define PLATFORM_NAME "STM32F417 High Performance with DSP and FPU"
#elif defined(STM32F410Cx)
#define PLATFORM_NAME "STM32F410Cx High Performance with DSP and FPU"
#elif defined(STM32F410Rx)
#define PLATFORM_NAME "STM32F410Rx High Performance with DSP and FPU"
#elif defined(STM32F411xE)
#define PLATFORM_NAME "STM32F411xE High Performance with DSP and FPU"
#elif defined(STM32F427xx)
#define PLATFORM_NAME "STM32F427 High Performance with DSP and FPU"
@ -226,7 +223,7 @@
#define STM32_SPII2S_MAX 45000000
#endif
#if defined(STM32F40_41xxx) || defined(__DOXYGEN__)
#if defined(STM32F40_41xxx)
#define STM32_SYSCLK_MAX 168000000
#define STM32_HSECLK_MAX 26000000
#define STM32_HSECLK_BYP_MAX 50000000
@ -246,7 +243,7 @@
#define STM32_SPII2S_MAX 42000000
#endif
#if defined(STM32F401xx) || defined(__DOXYGEN__)
#if defined(STM32F401xx)
#define STM32_SYSCLK_MAX 84000000
#define STM32_HSECLK_MAX 26000000
#define STM32_HSECLK_BYP_MAX 50000000
@ -266,7 +263,8 @@
#define STM32_SPII2S_MAX 42000000
#endif
#if defined(STM32F410xx) || defined(__DOXYGEN__)
#if defined(STM32F410xx) || defined(STM32F411xx) || \
defined(STM32F412xx)
#define STM32_SYSCLK_MAX 100000000
#define STM32_HSECLK_MAX 26000000
#define STM32_HSECLK_BYP_MAX 50000000
@ -286,27 +284,7 @@
#define STM32_SPII2S_MAX 50000000
#endif
#if defined(STM32F411xx) || defined(__DOXYGEN__)
#define STM32_SYSCLK_MAX 100000000
#define STM32_HSECLK_MAX 26000000
#define STM32_HSECLK_BYP_MAX 50000000
#define STM32_HSECLK_MIN 4000000
#define STM32_HSECLK_BYP_MIN 1000000
#define STM32_LSECLK_MAX 32768
#define STM32_LSECLK_BYP_MAX 1000000
#define STM32_LSECLK_MIN 32768
#define STM32_PLLIN_MAX 2100000
#define STM32_PLLIN_MIN 950000
#define STM32_PLLVCO_MAX 432000000
#define STM32_PLLVCO_MIN 100000000
#define STM32_PLLOUT_MAX 100000000
#define STM32_PLLOUT_MIN 24000000
#define STM32_PCLK1_MAX 50000000
#define STM32_PCLK2_MAX 100000000
#define STM32_SPII2S_MAX 50000000
#endif
#if defined(STM32F446xx) || defined(__DOXYGEN__)
#if defined(STM32F446xx)
#define STM32_SYSCLK_MAX 180000000
#define STM32_HSECLK_MAX 26000000
#define STM32_HSECLK_BYP_MAX 50000000
@ -1462,7 +1440,7 @@
#endif
#define STM32_OVERDRIVE_REQUIRED FALSE
#elif defined(STM32F410xx) || defined(STM32F411xx)
#elif defined(STM32F410xx) || defined(STM32F411xx) || defined(STM32F412xx)
#if STM32_SYSCLK <= 64000000
#define STM32_VOS STM32_VOS_SCALE3
#elif STM32_SYSCLK <= 84000000

File diff suppressed because it is too large Load Diff