mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 00:14:22 +08:00
Make ARM build system Cortex-M7 ready
This commit is contained in:
+7
-13
@@ -1,7 +1,7 @@
|
|||||||
############################################################################
|
############################################################################
|
||||||
# arch/arm/src/Makefile
|
# arch/arm/src/Makefile
|
||||||
#
|
#
|
||||||
# Copyright (C) 2007-2009, 2011-2012, 2014 Gregory Nutt. All rights reserved.
|
# Copyright (C) 2007-2009, 2011-2012, 2014-2015 Gregory Nutt. All rights reserved.
|
||||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
@@ -38,25 +38,19 @@
|
|||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXA5),y) # Cortex-A5 is ARMv7-A
|
ifeq ($(CONFIG_ARCH_CORTEXA5),y) # Cortex-A5 is ARMv7-A
|
||||||
ARCH_SUBDIR = armv7-a
|
ARCH_SUBDIR = armv7-a
|
||||||
else
|
else ifeq ($(CONFIG_ARCH_CORTEXA8),y) # Cortex-A8 is ARMv7-A
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXA8),y) # Cortex-A8 is ARMv7-A
|
|
||||||
ARCH_SUBDIR = armv7-a
|
ARCH_SUBDIR = armv7-a
|
||||||
else
|
else ifeq ($(CONFIG_ARCH_CORTEXM3),y) # Cortex-M3 is ARMv7-M
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM3),y) # Cortex-M3 is ARMv7-M
|
|
||||||
ARCH_SUBDIR = armv7-m
|
ARCH_SUBDIR = armv7-m
|
||||||
else
|
else ifeq ($(CONFIG_ARCH_CORTEXM4),y) # Cortex-M4 is ARMv7E-M
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM4),y) # Cortex-M4 is ARMv7E-M
|
|
||||||
ARCH_SUBDIR = armv7-m
|
ARCH_SUBDIR = armv7-m
|
||||||
else
|
else ifeq ($(CONFIG_ARCH_CORTEXM7),y) # Cortex-M4 is ARMv7E-M
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM0),y) # Cortex-M0 is ARMv6-M
|
ARCH_SUBDIR = armv7-m
|
||||||
|
else ifeq ($(CONFIG_ARCH_CORTEXM0),y) # Cortex-M0 is ARMv6-M
|
||||||
ARCH_SUBDIR = armv6-m
|
ARCH_SUBDIR = armv6-m
|
||||||
else
|
else
|
||||||
ARCH_SUBDIR = arm
|
ARCH_SUBDIR = arm
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_WINDOWS_NATIVE),y)
|
ifeq ($(CONFIG_WINDOWS_NATIVE),y)
|
||||||
ARCH_SRCDIR = $(TOPDIR)\arch\$(CONFIG_ARCH)\src
|
ARCH_SRCDIR = $(TOPDIR)\arch\$(CONFIG_ARCH)\src
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
############################################################################
|
############################################################################
|
||||||
# arch/arm/src/armv7-m/Toolchain.defs
|
# arch/arm/src/armv7-m/Toolchain.defs
|
||||||
#
|
#
|
||||||
# Copyright (C) 2012-2013 Gregory Nutt. All rights reserved.
|
# Copyright (C) 2012-2013, 2015 Gregory Nutt. All rights reserved.
|
||||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
@@ -105,10 +105,6 @@ endif
|
|||||||
#
|
#
|
||||||
# Supported toolchains
|
# 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:
|
# Each toolchain definition should set:
|
||||||
#
|
#
|
||||||
# CROSSDEV The GNU toolchain triple (command prefix)
|
# CROSSDEV The GNU toolchain triple (command prefix)
|
||||||
@@ -124,21 +120,44 @@ ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y)
|
|||||||
MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL)
|
MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Parametrization for ARCHCPUFLAGS
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
||||||
|
TOOLCHAIN_ARM7EM := y
|
||||||
|
TOOLCHAIN_MCPU := -mcpu=cortex-m4
|
||||||
|
TOOLCHAIN_MTUNE := -mtune=cortex-m4
|
||||||
|
TOOLCHAIN_MARCH := -march=armv7e-m
|
||||||
|
ifeq ($(CONFIG_ARCH_FPU),y)
|
||||||
|
TOOLCHAIN_MFLOAT := -mfpu=fpv4-sp-d16 -mfloat-abi=hard
|
||||||
|
else
|
||||||
|
TOOLCHAIN_MFLOAT := -mfloat-abi=soft
|
||||||
|
endif
|
||||||
|
else ifeq ($(CONFIG_ARCH_CORTEXM7),y)
|
||||||
|
TOOLCHAIN_ARM7EM := y
|
||||||
|
TOOLCHAIN_MCPU := -mcpu=cortex-m7
|
||||||
|
TOOLCHAIN_MTUNE := -mtune=cortex-m7
|
||||||
|
TOOLCHAIN_MARCH := -march=armv7e-m
|
||||||
|
ifeq ($(CONFIG_ARCH_FPU),y)
|
||||||
|
#TOOLCHAIN_MFLOAT := -mfpu=fpv5-sp-d16 -mfloat-abi=hard # Single precision
|
||||||
|
TOOLCHAIN_MFLOAT := -mfpu=fpv5-d16 -mfloat-abi=hard
|
||||||
|
else
|
||||||
|
TOOLCHAIN_MFLOAT := -mfloat-abi=soft
|
||||||
|
endif
|
||||||
|
else # ifeq ($(CONFIG_ARCH_CORTEXM3),y)
|
||||||
|
TOOLCHAIN_ARM7EM := n
|
||||||
|
TOOLCHAIN_MCPU := -mcpu=cortex-m3
|
||||||
|
TOOLCHAIN_MTUNE := -mtune=cortex-m3
|
||||||
|
TOOLCHAIN_MARCH := -march=armv7-m
|
||||||
|
TOOLCHAIN_MFLOAT := -mfloat-abi=soft
|
||||||
|
endif
|
||||||
|
|
||||||
# Atollic toolchain under Windows
|
# Atollic toolchain under Windows
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),ATOLLIC)
|
ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),ATOLLIC)
|
||||||
CROSSDEV ?= arm-atollic-eabi-
|
CROSSDEV ?= arm-atollic-eabi-
|
||||||
ARCROSSDEV ?= arm-atollic-eabi-
|
ARCROSSDEV ?= arm-atollic-eabi-
|
||||||
MAXOPTIMIZATION ?= -Os
|
MAXOPTIMIZATION ?= -Os
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MARCH) $(TOOLCHAIN_MFLOAT)
|
||||||
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
|
|
||||||
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
||||||
WINTOOL = y
|
WINTOOL = y
|
||||||
endif
|
endif
|
||||||
@@ -150,19 +169,11 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),BUILDROOT)
|
|||||||
ifeq ($(CONFIG_ARMV7M_OABI_TOOLCHAIN),y)
|
ifeq ($(CONFIG_ARMV7M_OABI_TOOLCHAIN),y)
|
||||||
CROSSDEV ?= arm-nuttx-elf-
|
CROSSDEV ?= arm-nuttx-elf-
|
||||||
ARCROSSDEV ?= arm-nuttx-elf-
|
ARCROSSDEV ?= arm-nuttx-elf-
|
||||||
ARCHCPUFLAGS = -mtune=cortex-m3 -march=armv7-m -mfloat-abi=soft
|
ARCHCPUFLAGS = $(TOOLCHAIN_MTUNE) $(TOOLCHAIN_MARCH) $(TOOLCHAIN_MFLOAT)
|
||||||
else
|
else
|
||||||
CROSSDEV ?= arm-nuttx-eabi-
|
CROSSDEV ?= arm-nuttx-eabi-
|
||||||
ARCROSSDEV ?= arm-nuttx-eabi-
|
ARCROSSDEV ?= arm-nuttx-eabi-
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MARCH) $(TOOLCHAIN_MFLOAT)
|
||||||
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
|
endif
|
||||||
MAXOPTIMIZATION ?= -Os
|
MAXOPTIMIZATION ?= -Os
|
||||||
endif
|
endif
|
||||||
@@ -173,15 +184,7 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),CODEREDL)
|
|||||||
CROSSDEV ?= arm-none-eabi-
|
CROSSDEV ?= arm-none-eabi-
|
||||||
ARCROSSDEV ?= arm-none-eabi-
|
ARCROSSDEV ?= arm-none-eabi-
|
||||||
MAXOPTIMIZATION ?= -Os
|
MAXOPTIMIZATION ?= -Os
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MARCH) $(TOOLCHAIN_MFLOAT)
|
||||||
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
|
endif
|
||||||
|
|
||||||
# Code Red RedSuite under Windows
|
# Code Red RedSuite under Windows
|
||||||
@@ -190,15 +193,7 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),CODEREDW)
|
|||||||
CROSSDEV ?= arm-none-eabi-
|
CROSSDEV ?= arm-none-eabi-
|
||||||
ARCROSSDEV ?= arm-none-eabi-
|
ARCROSSDEV ?= arm-none-eabi-
|
||||||
MAXOPTIMIZATION ?= -Os
|
MAXOPTIMIZATION ?= -Os
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MARCH) $(TOOLCHAIN_MFLOAT)
|
||||||
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
|
|
||||||
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
||||||
WINTOOL = y
|
WINTOOL = y
|
||||||
endif
|
endif
|
||||||
@@ -210,15 +205,7 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),CODESOURCERYL)
|
|||||||
CROSSDEV ?= arm-none-eabi-
|
CROSSDEV ?= arm-none-eabi-
|
||||||
ARCROSSDEV ?= arm-none-eabi-
|
ARCROSSDEV ?= arm-none-eabi-
|
||||||
MAXOPTIMIZATION ?= -O2
|
MAXOPTIMIZATION ?= -O2
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MARCH) $(TOOLCHAIN_MFLOAT)
|
||||||
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
|
endif
|
||||||
|
|
||||||
# CodeSourcery under Windows
|
# CodeSourcery under Windows
|
||||||
@@ -227,15 +214,7 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),CODESOURCERYW)
|
|||||||
CROSSDEV ?= arm-none-eabi-
|
CROSSDEV ?= arm-none-eabi-
|
||||||
ARCROSSDEV ?= arm-none-eabi-
|
ARCROSSDEV ?= arm-none-eabi-
|
||||||
MAXOPTIMIZATION ?= -Os
|
MAXOPTIMIZATION ?= -Os
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MARCH) $(TOOLCHAIN_MFLOAT)
|
||||||
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
|
|
||||||
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
||||||
WINTOOL = y
|
WINTOOL = y
|
||||||
endif
|
endif
|
||||||
@@ -249,7 +228,7 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),DEVKITARM)
|
|||||||
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
||||||
WINTOOL = y
|
WINTOOL = y
|
||||||
endif
|
endif
|
||||||
ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MFLOAT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Generic GNU EABI toolchain on OS X, Linux or any typical Posix system
|
# Generic GNU EABI toolchain on OS X, Linux or any typical Posix system
|
||||||
@@ -258,15 +237,7 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),GNU_EABIL)
|
|||||||
CROSSDEV ?= arm-none-eabi-
|
CROSSDEV ?= arm-none-eabi-
|
||||||
ARCROSSDEV ?= arm-none-eabi-
|
ARCROSSDEV ?= arm-none-eabi-
|
||||||
MAXOPTIMIZATION ?= -Os
|
MAXOPTIMIZATION ?= -Os
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MARCH) $(TOOLCHAIN_MFLOAT)
|
||||||
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
|
endif
|
||||||
|
|
||||||
# Generic GNU EABI toolchain under Windows
|
# Generic GNU EABI toolchain under Windows
|
||||||
@@ -275,15 +246,7 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),GNU_EABIW)
|
|||||||
CROSSDEV ?= arm-none-eabi-
|
CROSSDEV ?= arm-none-eabi-
|
||||||
ARCROSSDEV ?= arm-none-eabi-
|
ARCROSSDEV ?= arm-none-eabi-
|
||||||
MAXOPTIMIZATION ?= -Os
|
MAXOPTIMIZATION ?= -Os
|
||||||
ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MARCH) $(TOOLCHAIN_MFLOAT)
|
||||||
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
|
|
||||||
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
||||||
WINTOOL = y
|
WINTOOL = y
|
||||||
endif
|
endif
|
||||||
@@ -297,5 +260,5 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),RAISONANCE)
|
|||||||
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
||||||
WINTOOL = y
|
WINTOOL = y
|
||||||
endif
|
endif
|
||||||
ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
|
ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MFLOAT)
|
||||||
endif
|
endif
|
||||||
|
|||||||
Reference in New Issue
Block a user