diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-21 18:34:10 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-21 18:34:10 +0000 |
commit | 14a77ec91b12454c9106836b3d4a08c63a098e1d (patch) | |
tree | 06d31d6b84560021098398f9a4420f78b74cd3e2 /nuttx/arch/arm | |
parent | bae532d2adc61dc1db83f878366c54cc880b16f6 (diff) | |
download | px4-nuttx-14a77ec91b12454c9106836b3d4a08c63a098e1d.tar.gz px4-nuttx-14a77ec91b12454c9106836b3d4a08c63a098e1d.tar.bz2 px4-nuttx-14a77ec91b12454c9106836b3d4a08c63a098e1d.zip |
Big refactoring of toolchain definitions by Mike Smith
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5379 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm')
-rw-r--r-- | nuttx/arch/arm/Kconfig | 3 | ||||
-rw-r--r-- | nuttx/arch/arm/src/armv7-m/Kconfig | 51 | ||||
-rw-r--r-- | nuttx/arch/arm/src/armv7-m/Toolchain.defs | 256 | ||||
-rw-r--r-- | nuttx/arch/arm/src/lm3s/Kconfig | 23 | ||||
-rw-r--r-- | nuttx/arch/arm/src/lpc17xx/Kconfig | 32 | ||||
-rw-r--r-- | nuttx/arch/arm/src/lpc43xx/Kconfig | 28 | ||||
-rw-r--r-- | nuttx/arch/arm/src/stm32/Kconfig | 36 |
7 files changed, 310 insertions, 119 deletions
diff --git a/nuttx/arch/arm/Kconfig b/nuttx/arch/arm/Kconfig index 9bec34ff1..eb3bfe85b 100644 --- a/nuttx/arch/arm/Kconfig +++ b/nuttx/arch/arm/Kconfig @@ -253,6 +253,9 @@ config DEBUG_HARDFAULT output is sometimes helpful when debugging difficult hard fault problems, but may be more than you typcially want to see. +if ARCH_CORTEXM3 || ARCH_CORTEXM4 +source arch/arm/src/armv7-m/Kconfig +endif if ARCH_CHIP_C5471 source arch/arm/src/c5471/Kconfig endif diff --git a/nuttx/arch/arm/src/armv7-m/Kconfig b/nuttx/arch/arm/src/armv7-m/Kconfig new file mode 100644 index 000000000..dc5aa3915 --- /dev/null +++ b/nuttx/arch/arm/src/armv7-m/Kconfig @@ -0,0 +1,51 @@ +# +# For a description of the syntax of this configuration file, +# see misc/tools/kconfig-language.txt. +# + +comment "ARMV7M Configuration Options" + +choice + prompt "Toolchain Selection" + default ARMV7M_TOOLCHAIN_CODESOURCERYW if HOST_WINDOWS + default ARMV7M_TOOLCHAIN_GNU_EABI if !HOST_WINDOWS + +config ARMV7M_TOOLCHAIN_ATOLLIC + bool "Atollic Lite/Pro for Windows" + depends on HOST_WINDOWS + +config ARMV7M_TOOLCHAIN_BUILDROOT + bool "Buildroot (Cygwin or Linux)" + depends on !WINDOWS_NATIVE + +config ARMV7M_TOOLCHAIN_CODEREDL + bool "CodeRed for Linux" + depends on HOST_LINUX + +config ARMV7M_TOOLCHAIN_CODEREDW + bool "CodeRed for Windows" + depends on HOST_WINDOWS + +config ARMV7M_TOOLCHAIN_CODESOURCERYL + bool "CodeSourcery GNU toolchain under Linux" + depends on HOST_LINUX + +config ARMV7M_TOOLCHAIN_CODESOURCERYW + bool "CodeSourcery GNU toolchain under Windows" + depends on HOST_WINDOWS + +config ARMV7M_TOOLCHAIN_DEVKITARM + bool "devkitARM GNU toolchain" + depends on HOST_WINDOWS + +config ARMV7M_TOOLCHAIN_GNU_EABI + bool "Generic GNU EABI toolchain" + ---help--- + This option should work for any modern GNU toolchain (GCC 4.5 or newer) + configured for arm-none-eabi. + +config ARMV7M_TOOLCHAIN_RAISONANCE + bool "STMicro Raisonance for Windows" + depends on HOST_WINDOWS + +endchoice diff --git a/nuttx/arch/arm/src/armv7-m/Toolchain.defs b/nuttx/arch/arm/src/armv7-m/Toolchain.defs new file mode 100644 index 000000000..ab77e3eb3 --- /dev/null +++ b/nuttx/arch/arm/src/armv7-m/Toolchain.defs @@ -0,0 +1,256 @@ +############################################################################ +# arch/arm/src/armv7-m/Toolchain.defs +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt <gnutt@nuttx.org> +# +# 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 NuttX 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 OWNER 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. +# +############################################################################ + +# Setup for the selected toolchain + +# +# Handle old-style chip-specific toolchain names in the absence of +# a new-style toolchain specification, force the selection of a single +# toolchain and allow the selected toolchain to be overridden by a +# command-line selection. +# + +ifeq ($(filter y, \ + $(CONFIG_LPC43_ATOLLIC_LITE) \ + $(CONFIG_STM32_ATOLLIC_LITE) \ + $(CONFIG_LPC43_ATOLLIC_PRO) \ + $(CONFIG_STM32_ATOLLIC_PRO) \ + $(CONFIG_ARMV7M_TOOLCHAIN_ATOLLIC) \ + ),y) + CONFIG_ARMV7M_TOOLCHAIN ?= ATOLLIC +endif +ifeq ($(filter y, \ + $(CONFIG_KINETIS_BUILDROOT) \ + $(CONFIG_LM3S_BUILDROOT) \ + $(CONFIG_LPC17_BUILDROOT) \ + $(CONFIG_LPC43_BUILDROOT) \ + $(CONFIG_SAM3U_BUILDROOT) \ + $(CONFIG_STM32_BUILDROOT) \ + $(CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT) \ + ),y) + CONFIG_ARMV7M_TOOLCHAIN ?= BUILDROOT +endif +ifeq ($(filter y, \ + $(CONFIG_LPC17_CODEREDL) \ + $(CONFIG_ARMV7M_TOOLCHAIN_CODEREDL) \ + ),y) + CONFIG_ARMV7M_TOOLCHAIN ?= CODEREDL +endif +ifeq ($(filter y, \ + $(CONFIG_LPC17_CODEREDW) \ + $(CONFIG_LPC43_CODEREDW) \ + $(CONFIG_ARMV7M_TOOLCHAIN_CODEREDW) \ + ),y) + CONFIG_ARMV7M_TOOLCHAIN ?= CODEREDW +endif +ifeq ($(filter y, \ + $(CONFIG_KINETIS_CODESOURCERYL) \ + $(CONFIG_LM3S_CODESOURCERYL) \ + $(CONFIG_LPC17_CODESOURCERYL) \ + $(CONFIG_LPC43_CODESOURCERYL) \ + $(CONFIG_SAM3U_CODESOURCERYL) \ + $(CONFIG_STM32_CODESOURCERYL) \ + $(CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL) \ + ),y) + CONFIG_ARMV7M_TOOLCHAIN ?= CODESOURCERYL +endif +ifeq ($(filter y, \ + $(CONFIG_KINETIS_CODESOURCERYW) \ + $(CONFIG_LM3S_CODESOURCERYW) \ + $(CONFIG_LPC17_CODESOURCERYW) \ + $(CONFIG_LPC43_CODESOURCERYW) \ + $(CONFIG_SAM3U_CODESOURCERYW) \ + $(CONFIG_STM32_CODESOURCERYW) \ + $(CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW) \ + ),y) + CONFIG_ARMV7M_TOOLCHAIN ?= CODESOURCERYW +endif +ifeq ($(filter y, \ + $(CONFIG_KINETIS_DEVKITARM) \ + $(CONFIG_LM3S_DEVKITARM) \ + $(CONFIG_LPC17_DEVKITARM) \ + $(CONFIG_LPC43_DEVKITARM) \ + $(CONFIG_SAM3U_DEVKITARM) \ + $(CONFIG_STM32_DEVKITARM) \ + $(CONFIG_ARMV7M_TOOLCHAIN_DEVKITARM) \ + ),y) + CONFIG_ARMV7M_TOOLCHAIN ?= DEVKITARM +endif +ifeq ($(filter y, \ + $(CONFIG_ARMV7M_TOOLCHAIN_GNU_EABI) \ + ),y) + CONFIG_ARMV7M_TOOLCHAIN ?= GNU_EABI +endif +ifeq ($(filter y, \ + $(CONFIG_STM32_RAISONANCE) \ + $(CONFIG_ARMV7M_TOOLCHAIN_RAISONANCE) \ + ),y) + CONFIG_ARMV7M_TOOLCHAIN ?= RAISONANCE +endif + +# +# Supported toolchains +# +# TODO - It's likely that all of these toolchains now support the +# CortexM4. Since they are all GCC-based, we could almost +# certainly simplify this further. +# +# Each toolchain definition should set: +# +# CROSSDEV The GNU toolchain triple (command prefix) +# ARCROSSDEV If required, an alternative prefix used when +# invoking ar and nm. +# ARCHCPUFLAGS CPU-specific flags selecting the instruction set +# FPU options, etc. +# MAXOPTIMIZATION The maximum optimization level that results in +# reliable code generation. +# + +# Atollic toolchain under Windows + +ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),ATOLLIC) + CROSSDEV = arm-atollic-eabi- + ARCROSSDEV = arm-atollic-eabi- + WINTOOL = y + ifeq ($(CONFIG_ARCH_CORTEXM4),y) + ifeq ($(CONFIG_ARCH_FPU),y) + ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard + else + ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfloat-abi=soft + endif + else ifeq ($(CONFIG_ARCH_CORTEXM3),y) + ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft + endif +endif + +# NuttX buildroot under Linux or Cygwin + +ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),BUILDROOT) + # OABI + # CROSSDEV = arm-nuttx-elf- + # ARCROSSDEV = arm-nuttx-elf- + # ARCHCPUFLAGS = -mtune=cortex-m3 -march=armv7-m -mfloat-abi=soft + # EABI + CROSSDEV = arm-nuttx-eabi- + ARCROSSDEV = arm-nuttx-eabi- + ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft + MAXOPTIMIZATION = -Os +endif + +# Code Red RedSuite under Linux + +ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),CODEREDL) + CROSSDEV = arm-none-eabi- + ARCROSSDEV = arm-none-eabi- + ifeq ($(CONFIG_ARCH_CORTEXM4),y) + ifeq ($(CONFIG_ARCH_FPU),y) + ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard + else + ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfloat-abi=soft + endif + else ifeq ($(CONFIG_ARCH_CORTEXM3),y) + ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft + endif +endif + +# Code Red RedSuite under Windows + +ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),CODEREDW) + CROSSDEV = arm-none-eabi- + ARCROSSDEV = arm-none-eabi- + WINTOOL = y + ifeq ($(CONFIG_ARCH_CORTEXM4),y) + ifeq ($(CONFIG_ARCH_FPU),y) + ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard + else + ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfloat-abi=soft + endif + else ifeq ($(CONFIG_ARCH_CORTEXM3),y) + ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft + endif +endif + +# CodeSourcery under Linux + +ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),CODESOURCERYL) + CROSSDEV = arm-none-eabi- + ARCROSSDEV = arm-none-eabi- + ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft + MAXOPTIMIZATION = -O2 +endif + +# CodeSourcery under Windows + +ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),CODESOURCERYW) + CROSSDEV = arm-none-eabi- + ARCROSSDEV = arm-none-eabi- + WINTOOL = y + ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft +endif + +# devkitARM under Windows + +ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),DEVKITARM) + CROSSDEV = arm-eabi- + ARCROSSDEV = arm-eabi- + WINTOOL = y + ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft +endif + +# Generic GNU EABI toolchain on OS X, Linux or any typical Posix system + +ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),GNU_EABI) + CROSSDEV = arm-none-eabi- + ARCROSSDEV = arm-none-eabi- + MAXOPTIMIZATION = -O3 + ifeq ($(CONFIG_ARCH_CORTEXM4),y) + ifeq ($(CONFIG_ARCH_FPU),y) + ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard + else + ARCHCPUFLAGS = -mcpu=cortex-m4 -mthumb -march=armv7e-m -mfloat-abi=soft + endif + else ifeq ($(CONFIG_ARCH_CORTEXM3),y) + ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft + endif +endif + +# Raisonance RIDE7 under Windows + +ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),RAISONANCE) + CROSSDEV = arm-none-eabi- + ARCROSSDEV = arm-none-eabi- + WINTOOL = y + ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft +endif diff --git a/nuttx/arch/arm/src/lm3s/Kconfig b/nuttx/arch/arm/src/lm3s/Kconfig index ef33655f5..469ff1fc9 100644 --- a/nuttx/arch/arm/src/lm3s/Kconfig +++ b/nuttx/arch/arm/src/lm3s/Kconfig @@ -27,29 +27,6 @@ config ARCH_CHIP_LM3S8962 endchoice -choice - prompt "Toolchain Selection" - default LM3S_BUILDROOT if !HOST_WINDOWS - default LM3S_CODESOURCERYW if HOST_WINDOWS - -config LM3S_CODESOURCERYW - bool "CodeSourcery GNU toolchain under Windows" - depends on HOST_WINDOWS - -config LM3S_CODESOURCERYL - bool "CodeSourcery GNU toolchain under Linux" - depends on HOST_LINUX - -config LM3S_DEVKITARM - bool "devkitARM GNU toolchain" - depends on HOST_WINDOWS - -config LM3S_BUILDROOT - bool "Buildroot" - depends on !WINDOWS_NATIVE - -endchoice - config LM3S_DFU bool "DFU" default y diff --git a/nuttx/arch/arm/src/lpc17xx/Kconfig b/nuttx/arch/arm/src/lpc17xx/Kconfig index 8a12ad902..8acd67595 100644 --- a/nuttx/arch/arm/src/lpc17xx/Kconfig +++ b/nuttx/arch/arm/src/lpc17xx/Kconfig @@ -56,38 +56,6 @@ config ARCH_FAMILY_LPC176X bool default y if ARCH_CHIP_LPC1764 || ARCH_CHIP_LPC1765 || ARCH_CHIP_LPC1766 || ARCH_CHIP_LPC1767 || ARCH_CHIP_LPC1768 || ARCH_CHIP_LPC1769 -choice - prompt "Toolchain Selection" - default LPC17_BUILDROOT if !HOST_WINDOWS - default LPC17_CODESOURCERYW if HOST_WINDOWS - depends on ARCH_CHIP_LPC17XX - -config LPC17_CODESOURCERYW - bool "CodeSourcery GNU toolchain under Windows" - depends on HOST_WINDOWS - -config LPC17_CODESOURCERYL - bool "CodeSourcery GNU toolchain under Linux" - depends on HOST_LINUX - -config LPC17_DEVKITARM - bool "devkitARM GNU toolchain" - depends on HOST_WINDOWS - -config LPC17_BUILDROOT - bool "Buildroot" - depends on !WINDOWS_NATIVE - -config LPC17_CODEREDW - bool "CodeRed for Windows" - depends on HOST_WINDOWS - -config LPC17_CODEREDL - bool "CodeRed for Windows" - depends on HOST_LINUX - -endchoice - menu "LPC17xx Peripheral Support" config LPC17_MAINOSC diff --git a/nuttx/arch/arm/src/lpc43xx/Kconfig b/nuttx/arch/arm/src/lpc43xx/Kconfig index 4653b2ee3..6902935ca 100644 --- a/nuttx/arch/arm/src/lpc43xx/Kconfig +++ b/nuttx/arch/arm/src/lpc43xx/Kconfig @@ -88,34 +88,6 @@ config ARCH_FAMILY_LPC4357 default y if ARCH_CHIP_LPC4357FET180 || ARCH_CHIP_LPC4357FBD208 || ARCH_CHIP_LPC4357FET256 choice - prompt "Toolchain Selection" - default LPC43_CODEREDW - depends on ARCH_CHIP_LPC43XX - -config LPC43_CODEREDW - bool "CodeRed for Windows" - -config LPC43_CODESOURCERYW - bool "CodeSourcery for Windows" - -config LPC43_CODESOURCERYL - bool "CodeSourcery for Linux" - -config LPC43_ATOLLIC_LITE - bool "Atollic Lite for Windows" - -config LPC43_ATOLLIC_PRO - bool "Atollic Pro for Windows" - -config LPC43_DEVKITARM - bool "DevkitARM (Windows)" - -config LPC43_BUILDROOT - bool "NuttX buildroot (Cygwin or Linux)" - -endchoice - -choice prompt "LPC43XX Boot Configuration" default BOOT_SRAM depends on ARCH_CHIP_LPC43XX diff --git a/nuttx/arch/arm/src/stm32/Kconfig b/nuttx/arch/arm/src/stm32/Kconfig index 68cd9003c..4e369cb1a 100644 --- a/nuttx/arch/arm/src/stm32/Kconfig +++ b/nuttx/arch/arm/src/stm32/Kconfig @@ -193,42 +193,6 @@ config STM32_STM32F20XX config STM32_STM32F40XX bool -choice - prompt "Toolchain Selection" - default LPC31_BUILDROOT if !HOST_WINDOWS - default STM32_CODESOURCERYW if HOST_WINDOWS - depends on ARCH_CHIP_STM32 - -config STM32_CODESOURCERYW - bool "CodeSourcery GNU toolchain under Windows" - depends on HOST_WINDOWS - -config STM32_CODESOURCERYL - bool "CodeSourcery GNU toolchain under Linux" - depends on HOST_LINUX - -config STM32_ATOLLIC_LITE - bool "Atollic Lite for Windows" - depends on HOST_WINDOWS - -config STM32_ATOLLIC_PRO - bool "Atollic Pro for Windows" - depends on HOST_WINDOWS - -config STM32_DEVKITARM - bool "devkitARM GNU toolchain" - depends on HOST_WINDOWS - -config STM32_RAISONANCE - bool "STMicro Raisonance for Windows" - depends on HOST_WINDOWS - -config STM32_BUILDROOT - bool "Buildroot (Cygwin or Linux)" - depends on !WINDOWS_NATIVE - -endchoice - config STM32_DFU bool "DFU bootloader" default n |