Add support for a generic windows-based EABI toolchain; Add NX configuration to force default NXTK border colors

This commit is contained in:
Gregory Nutt 2013-06-13 11:04:18 -06:00
parent 0762d45517
commit e6a3078b77
8 changed files with 139 additions and 35 deletions

View File

@ -58,7 +58,7 @@
#define SAM_PID_PMC (5) /* Power Management Controller */
#define SAM_PID_EEFC0 (6) /* Enhanced Embedded Flash Controller 0 */
#define SAM_PID_EEFC1 (7) /* Enhanced Embedded Flash Controller 1 */
#define SAM_PID_UART0 (8) /* Universal Asynchronous Receiver Transmitter */
#define SAM_PID_UART0 (8) /* Universal Asynchronous Receiver Transmitter 0 */
#define SAM_PID_SMC (9) /* Static Memory Controller */
#define SAM_PID_PIOA (10) /* Parallel I/O Controller A */
#define SAM_PID_PIOB (11) /* Parallel I/O Controller B */

View File

@ -7,8 +7,8 @@ comment "ARM Configuration Options"
choice
prompt "Toolchain Selection"
default ARM_TOOLCHAIN_CODESOURCERYW if HOST_WINDOWS
default ARM_TOOLCHAIN_GNU_EABI if !HOST_WINDOWS
default ARM_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS
default ARM_TOOLCHAIN_GNU_EABIL if !HOST_WINDOWS
config ARM_TOOLCHAIN_BUILDROOT
bool "Buildroot (Cygwin or Linux)"
@ -30,8 +30,15 @@ config ARM_TOOLCHAIN_DEVKITARM
bool "devkitARM GNU toolchain"
depends on HOST_WINDOWS
config ARM_TOOLCHAIN_GNU_EABI
bool "Generic GNU EABI toolchain"
config ARM_TOOLCHAIN_GNU_EABIL
bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)"
---help---
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
configured for arm-none-eabi-.
config ARM_TOOLCHAIN_GNU_EABIW
bool "Generic GNU EABI toolchain under Windows"
depends on HOST_WINDOWS
---help---
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
configured for arm-none-eabi-.

View File

@ -51,6 +51,7 @@ ifeq ($(filter y, \
),y)
CONFIG_ARM_TOOLCHAIN ?= BUILDROOT
endif
ifeq ($(filter y, \
$(CONFIG_DM320_CODESOURCERYL) \
$(CONFIG_LPC31_CODESOURCERYL) \
@ -59,6 +60,7 @@ ifeq ($(filter y, \
),y)
CONFIG_ARM_TOOLCHAIN ?= CODESOURCERYL
endif
ifeq ($(filter y, \
$(CONFIG_DM320_CODESOURCERYW) \
$(CONFIG_LPC31_CODESOURCERYW) \
@ -67,6 +69,7 @@ ifeq ($(filter y, \
),y)
CONFIG_ARM_TOOLCHAIN ?= CODESOURCERYW
endif
ifeq ($(filter y, \
$(CONFIG_DM320_DEVKITARM) \
$(CONFIG_LPC31_DEVKITARM) \
@ -75,10 +78,17 @@ ifeq ($(filter y, \
),y)
CONFIG_ARM_TOOLCHAIN ?= DEVKITARM
endif
ifeq ($(filter y, \
$(CONFIG_ARM_TOOLCHAIN_GNU_EABI) \
$(CONFIG_ARM_TOOLCHAIN_GNU_EABIL) \
),y)
CONFIG_ARM_TOOLCHAIN ?= GNU_EABI
CONFIG_ARM_TOOLCHAIN ?= GNU_EABIL
endif
ifeq ($(filter y, \
$(CONFIG_ARM_TOOLCHAIN_GNU_EABIW) \
),y)
CONFIG_ARM_TOOLCHAIN ?= GNU_EABIW
endif
#
@ -91,7 +101,7 @@ endif
# Each toolchain definition should set:
#
# CROSSDEV The GNU toolchain triple (command prefix)
# ARCROSSDEV If required, an alternative prefix used when
# ARCROSSDEV If required, an alternative prefix used when
# invoking ar and nm.
# ARCHCPUFLAGS CPU-specific flags selecting the instruction set
# FPU options, etc.
@ -143,9 +153,20 @@ endif
# Generic GNU EABI toolchain on OS X, Linux or any typical Posix system
ifeq ($(CONFIG_ARM_TOOLCHAIN),GNU_EABI)
ifeq ($(CONFIG_ARM_TOOLCHAIN),GNU_EABIL)
CROSSDEV ?= arm-none-eabi-
ARCROSSDEV ?= arm-none-eabi-
MAXOPTIMIZATION = -O3
endif
MAXOPTIMIZATION = -Os
endif
# Generic GNU EABI toolchain under Windows
ifeq ($(CONFIG_ARM_TOOLCHAIN),GNU_EABIW)
CROSSDEV ?= arm-none-eabi-
ARCROSSDEV ?= arm-none-eabi-
MAXOPTIMIZATION = -Os
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
WINTOOL = y
endif
endif

View File

@ -7,8 +7,8 @@ comment "ARMV6M Configuration Options"
choice
prompt "Toolchain Selection"
default ARMV6M_TOOLCHAIN_CODESOURCERYW if HOST_WINDOWS
default ARMV6M_TOOLCHAIN_GNU_EABI if !HOST_WINDOWS
default ARMV6M_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS
default ARMV6M_TOOLCHAIN_GNU_EABIL if !HOST_WINDOWS
config ARMV6M_TOOLCHAIN_ATOLLIC
bool "Atollic Lite/Pro for Windows"
@ -38,8 +38,15 @@ config ARMV6M_TOOLCHAIN_DEVKITARM
bool "devkitARM GNU toolchain"
depends on HOST_WINDOWS
config ARMV6M_TOOLCHAIN_GNU_EABI
bool "Generic GNU EABI toolchain"
config ARMV6M_TOOLCHAIN_GNU_EABIL
bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)"
---help---
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
configured for arm-none-eabi.
config ARMV6M_TOOLCHAIN_GNU_EABIW
bool "Generic GNU EABI toolchain under Windows"
depends on HOST_WINDOWS
---help---
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
configured for arm-none-eabi.

View File

@ -45,26 +45,37 @@
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_ATOLLIC)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= ATOLLIC
endif
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_BUILDROOT)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= BUILDROOT
endif
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_CODEREDL)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= CODEREDL
endif
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_CODEREDW)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= CODEREDW
endif
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_CODESOURCERYL)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= CODESOURCERYL
endif
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_CODESOURCERYW)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= CODESOURCERYW
endif
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_DEVKITARM)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= DEVKITARM
endif
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_GNU_EABI)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= GNU_EABI
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_GNU_EABIL)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= GNU_EABIL
endif
ifeq ($(filter y, $(CONFIG_ARMV6M_TOOLCHAIN_GNU_EABIW)),y)
CONFIG_ARMV6M_TOOLCHAIN ?= GNU_EABIW
endif
#
@ -77,7 +88,7 @@ endif
# Each toolchain definition should set:
#
# CROSSDEV The GNU toolchain triple (command prefix)
# ARCROSSDEV If required, an alternative prefix used when
# ARCROSSDEV If required, an alternative prefix used when
# invoking ar and nm.
# ARCHCPUFLAGS CPU-specific flags selecting the instruction set
# options, etc.
@ -155,11 +166,20 @@ endif
# Generic GNU EABI toolchain on OS X, Linux or any typical Posix system
ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),GNU_EABI)
ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),GNU_EABIL)
CROSSDEV ?= arm-none-eabi-
ARCROSSDEV ?= arm-none-eabi-
ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -march=armv6-m -mfloat-abi=soft
endif
endif
ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),GNU_EABIW)
CROSSDEV ?= arm-none-eabi-
ARCROSSDEV ?= arm-none-eabi-
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
WINTOOL = y
endif
ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -march=armv6-m -mfloat-abi=soft
endif
# Individual tools may limit the optimizatin level but, by default, the
# optimization level will be set to to -Os

View File

@ -7,8 +7,8 @@ comment "ARMV7M Configuration Options"
choice
prompt "Toolchain Selection"
default ARMV7M_TOOLCHAIN_CODESOURCERYW if HOST_WINDOWS
default ARMV7M_TOOLCHAIN_GNU_EABI if !HOST_WINDOWS
default ARMV7M_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS
default ARMV7M_TOOLCHAIN_GNU_EABIL if !HOST_WINDOWS
config ARMV7M_TOOLCHAIN_ATOLLIC
bool "Atollic Lite/Pro for Windows"
@ -38,8 +38,15 @@ config ARMV7M_TOOLCHAIN_DEVKITARM
bool "devkitARM GNU toolchain"
depends on HOST_WINDOWS
config ARMV7M_TOOLCHAIN_GNU_EABI
bool "Generic GNU EABI toolchain"
config ARMV7M_TOOLCHAIN_GNU_EABIL
bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)"
---help---
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
configured for arm-none-eabi.
config ARMV7M_TOOLCHAIN_GNU_EABIW
bool "Generic GNU EABI toolchain under Windows"
depends on HOST_WINDOWS
---help---
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
configured for arm-none-eabi.

View File

@ -51,6 +51,7 @@ ifeq ($(filter y, \
),y)
CONFIG_ARMV7M_TOOLCHAIN ?= ATOLLIC
endif
ifeq ($(filter y, \
$(CONFIG_KINETIS_BUILDROOT) \
$(CONFIG_LM_BUILDROOT) \
@ -62,12 +63,14 @@ ifeq ($(filter y, \
),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) \
@ -75,6 +78,7 @@ ifeq ($(filter y, \
),y)
CONFIG_ARMV7M_TOOLCHAIN ?= CODEREDW
endif
ifeq ($(filter y, \
$(CONFIG_KINETIS_CODESOURCERYL) \
$(CONFIG_LM_CODESOURCERYL) \
@ -86,6 +90,7 @@ ifeq ($(filter y, \
),y)
CONFIG_ARMV7M_TOOLCHAIN ?= CODESOURCERYL
endif
ifeq ($(filter y, \
$(CONFIG_KINETIS_CODESOURCERYW) \
$(CONFIG_LM_CODESOURCERYW) \
@ -97,6 +102,7 @@ ifeq ($(filter y, \
),y)
CONFIG_ARMV7M_TOOLCHAIN ?= CODESOURCERYW
endif
ifeq ($(filter y, \
$(CONFIG_KINETIS_DEVKITARM) \
$(CONFIG_LM_DEVKITARM) \
@ -108,11 +114,7 @@ ifeq ($(filter y, \
),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) \
@ -120,6 +122,18 @@ ifeq ($(filter y, \
CONFIG_ARMV7M_TOOLCHAIN ?= RAISONANCE
endif
ifeq ($(filter y, \
$(CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL) \
),y)
CONFIG_ARMV7M_TOOLCHAIN ?= GNU_EABIL
endif
ifeq ($(filter y, \
$(CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW) \
),y)
CONFIG_ARMV7M_TOOLCHAIN ?= GNU_EABIW
endif
#
# Supported toolchains
#
@ -130,7 +144,7 @@ endif
# Each toolchain definition should set:
#
# CROSSDEV The GNU toolchain triple (command prefix)
# ARCROSSDEV If required, an alternative prefix used when
# ARCROSSDEV If required, an alternative prefix used when
# invoking ar and nm.
# ARCHCPUFLAGS CPU-specific flags selecting the instruction set
# FPU options, etc.
@ -240,10 +254,10 @@ endif
# Generic GNU EABI toolchain on OS X, Linux or any typical Posix system
ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),GNU_EABI)
ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),GNU_EABIL)
CROSSDEV ?= arm-none-eabi-
ARCROSSDEV ?= arm-none-eabi-
MAXOPTIMIZATION = -O3
MAXOPTIMIZATION = -Os
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
@ -253,7 +267,27 @@ ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),GNU_EABI)
else ifeq ($(CONFIG_ARCH_CORTEXM3),y)
ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
endif
endif
endif
# Generic GNU EABI toolchain under Windows
ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),GNU_EABIW)
CROSSDEV ?= arm-none-eabi-
ARCROSSDEV ?= arm-none-eabi-
MAXOPTIMIZATION = -Os
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
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
WINTOOL = y
endif
endif
# Raisonance RIDE7 under Windows

View File

@ -903,6 +903,7 @@ static int up_interrupt(int irq, void *context)
{
PANIC();
}
priv = (struct up_dev_s*)dev->priv;
/* Loop until there are no characters to be transferred or, until we have
@ -937,13 +938,14 @@ static int up_interrupt(int irq, void *context)
if ((pending & UART_INT_TXRDY) != 0)
{
/* Transmit data regiser empty ... process outgoing bytes */
/* Transmit data register empty ... process outgoing bytes */
uart_xmitchars(dev);
handled = true;
}
}
return OK;
return OK;
}
/****************************************************************************
@ -1175,6 +1177,9 @@ void up_earlyserialinit(void)
#ifdef TTYS4_DEV
up_disableallints(TTYS4_DEV.priv, NULL);
#endif
#ifdef TTYS5_DEV
up_disableallints(TTYS5_DEV.priv, NULL);
#endif
/* Configuration whichever one is the console */
@ -1216,6 +1221,9 @@ void up_serialinit(void)
#ifdef TTYS4_DEV
(void)uart_register("/dev/ttyS4", &TTYS4_DEV);
#endif
#ifdef TTYS5_DEV
(void)uart_register("/dev/ttyS5", &TTYS5_DEV);
#endif
}
/****************************************************************************