summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/ChangeLog10
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/Makefile.am8
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/README6
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/configure.ac32
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/misc/io.c10
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/preinstall.am26
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds35
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc247855
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478_ncs56
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478_ncs_ram55
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea56
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram56
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext60
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int60
14 files changed, 289 insertions, 236 deletions
diff --git a/c/src/lib/libbsp/arm/lpc24xx/ChangeLog b/c/src/lib/libbsp/arm/lpc24xx/ChangeLog
index 26bb79511f..aa9d157acb 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/ChangeLog
+++ b/c/src/lib/libbsp/arm/lpc24xx/ChangeLog
@@ -1,3 +1,13 @@
+2009-10-04 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * startup/linkcmds.lpc2478, startup/linkcmds.lpc2478_ncs,
+ startup/linkcmds.lpc2478_ncs_ram: Removed files.
+ * startup/linkcmds.lpc24xx_ea, startup/linkcmds.lpc24xx_ncs_ram,
+ startup/linkcmds.lpc24xx_ncs_rom_ext,
+ startup/linkcmds.lpc24xx_ncs_rom_int: New files.
+ * Makefile.am, README, configure.ac, preinstall.am, misc/io.c,
+ startup/linkcmds: Changes throughout.
+
2009-09-21 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de>
* startup/bspstarthooks.c, misc/dma-copy.c, misc/timer.c: Add
diff --git a/c/src/lib/libbsp/arm/lpc24xx/Makefile.am b/c/src/lib/libbsp/arm/lpc24xx/Makefile.am
index c2fbfff94c..6a864dfa1a 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/Makefile.am
+++ b/c/src/lib/libbsp/arm/lpc24xx/Makefile.am
@@ -56,9 +56,11 @@ libbspstart_a_SOURCES = ../shared/start/start.S
project_lib_DATA = start.$(OBJEXT)
dist_project_lib_DATA += ../shared/startup/linkcmds.base \
- startup/linkcmds.lpc2478 \
- startup/linkcmds.lpc2478_ncs \
- startup/linkcmds.lpc2478_ncs_ram
+ startup/linkcmds \
+ startup/linkcmds.lpc24xx_ea \
+ startup/linkcmds.lpc24xx_ncs_rom_int \
+ startup/linkcmds.lpc24xx_ncs_rom_ext \
+ startup/linkcmds.lpc24xx_ncs_ram
###############################################################################
# LibBSP #
diff --git a/c/src/lib/libbsp/arm/lpc24xx/README b/c/src/lib/libbsp/arm/lpc24xx/README
index aec3a9c3be..9adfec7f59 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/README
+++ b/c/src/lib/libbsp/arm/lpc24xx/README
@@ -2,8 +2,6 @@
# $Id$
#
-Note: A Binutils version with REGION_ALIAS feature is required to link the BSP.
-
Development Board: QVGA Base Board from Embedded Artists
http://www.embeddedartists.com/products/uclinux/oem_lpc2478.php
@@ -13,7 +11,7 @@ Drivers:
o Console
o Clock
o RTC
- o SSP (SPI mode): This driver is in active development. Use with care.
+ o SSP (SPI mode)
o Network
o I2C
@@ -41,7 +39,7 @@ Howto setup QVGA Base Board?
Application Board: NCS (Nurse Control Station)
Board: NextGenNCS
- Processor: NXP LPC2478
+ Processor: NXP LPC2478 or LPC2470
SDRAM: 8MByte, 16 bit wide
Ext. Flash: 1MByte, 16 bit wide
Console: UART, 115200 Baud
diff --git a/c/src/lib/libbsp/arm/lpc24xx/configure.ac b/c/src/lib/libbsp/arm/lpc24xx/configure.ac
index 3288207c85..007054d6e8 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/configure.ac
+++ b/c/src/lib/libbsp/arm/lpc24xx/configure.ac
@@ -2,9 +2,7 @@
#
# @file
#
-# @ingroup mpc55xx_config
-#
-# @brief Configure script of LibBSP for the LPC247X boards.
+# @brief Configure script of LibBSP for the LPC24XX boards.
#
AC_PREREQ(2.59)
@@ -35,16 +33,17 @@ RTEMS_BSPOPTS_HELP([LPC24XX_CCLK],[CPU clock in Hz])
RTEMS_BSPOPTS_SET([LPC24XX_UART_BAUD],[*],[115200U])
RTEMS_BSPOPTS_HELP([LPC24XX_UART_BAUD],[baud for UARTs])
-RTEMS_BSPOPTS_SET([LPC24XX_HAS_UBOOT],[lpc2478],[1])
-RTEMS_BSPOPTS_SET([LPC24XX_HAS_UBOOT],[lpc2478_ncs_ram],[1])
-RTEMS_BSPOPTS_HELP([LPC24XX_HAS_UBOOT],[enable U-Boot startup])
-
-RTEMS_BSPOPTS_SET([LPC24XX_ETHERNET_RMII],[lpc2478_ncs],[1])
-RTEMS_BSPOPTS_SET([LPC24XX_ETHERNET_RMII],[lpc2478_ncs_ram],[1])
+RTEMS_BSPOPTS_SET([LPC24XX_ETHERNET_RMII],[lpc24xx_ncs_*],[1])
RTEMS_BSPOPTS_HELP([LPC24XX_ETHERNET_RMII],[enable RMII for Ethernet])
-RTEMS_BSPOPTS_SET([LPC24XX_EMC_MICRON],[lpc2478_ncs],[1])
-RTEMS_BSPOPTS_HELP([LPC24XX_EMC_MICRON],[use Micron configuration for EMC])
+RTEMS_BSPOPTS_SET([LPC24XX_EMC_MICRON],[lpc24xx_ncs_rom_*],[1])
+RTEMS_BSPOPTS_HELP([LPC24XX_EMC_MICRON],[enable Micron configuration for EMC])
+
+RTEMS_BSPOPTS_SET([LPC24XX_EMC_NUMONYX],[lpc24xx_ncs_rom_*],[1])
+RTEMS_BSPOPTS_HELP([LPC24XX_EMC_NUMONYX],[enable Numonyx configuration for EMC])
+
+RTEMS_BSPOPTS_SET([LPC24XX_EMC_TEST],[*],[])
+RTEMS_BSPOPTS_HELP([LPC24XX_EMC_TEST],[enable tests for EMC])
RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_CONSOLE],[*],[0])
RTEMS_BSPOPTS_HELP([LPC24XX_CONFIG_CONSOLE],[configuration for console (UART 0)])
@@ -52,21 +51,24 @@ RTEMS_BSPOPTS_HELP([LPC24XX_CONFIG_CONSOLE],[configuration for console (UART 0)]
RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_UART_1],[*],[])
RTEMS_BSPOPTS_HELP([LPC24XX_CONFIG_UART_1],[configuration for UART 1])
-RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_UART_2],[*],[])
+RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_UART_2],[lpc24xx_ncs_*],[0])
RTEMS_BSPOPTS_HELP([LPC24XX_CONFIG_UART_2],[configuration for UART 2])
-RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_UART_3],[*],[])
+RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_UART_3],[lpc24xx_ncs_*],[0])
RTEMS_BSPOPTS_HELP([LPC24XX_CONFIG_UART_3],[configuration for UART 3])
-RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_I2C_0],[lpc2478_ncs_ram],[0])
+RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_I2C_0],[lpc24xx_ncs_*],[0])
RTEMS_BSPOPTS_HELP([LPC24XX_CONFIG_I2C_0],[configuration for I2C 0])
-RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_I2C_1],[*],[])
+RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_I2C_1],[lpc24xx_ncs_*],[1])
RTEMS_BSPOPTS_HELP([LPC24XX_CONFIG_I2C_1],[configuration for I2C 1])
RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_I2C_2],[*],[])
RTEMS_BSPOPTS_HELP([LPC24XX_CONFIG_I2C_2],[configuration for I2C 2])
+RTEMS_BSPOPTS_SET([BSP_START_RESET_VECTOR],[lpc24xx_ncs_rom_ext],[0x80000040])
+RTEMS_BSPOPTS_HELP([BSP_START_RESET_VECTOR],[reset vector address for BSP start])
+
RTEMS_BSP_CLEANUP_OPTIONS(0, 0)
AC_CONFIG_FILES([Makefile])
diff --git a/c/src/lib/libbsp/arm/lpc24xx/misc/io.c b/c/src/lib/libbsp/arm/lpc24xx/misc/io.c
index 85ea380bcc..2ca27fc509 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/misc/io.c
+++ b/c/src/lib/libbsp/arm/lpc24xx/misc/io.c
@@ -60,13 +60,13 @@ typedef void (*lpc24xx_io_iterate_routine)(unsigned /* pin */, unsigned /* funct
static const lpc24xx_io_entry lpc24xx_io_config_table [] = {
/* UART */
LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 0, 0, 0, 2, 0, 3, LPC24XX_IO_ALTERNATE_0),
- LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 1, 0, 0, 15, 0, 16, LPC24XX_IO_ALTERNATE_1),
- LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 1, 1, 2, 0, 2, 1, LPC24XX_IO_ALTERNATE_2),
- LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 1, 2, 3, 16, 3, 17, LPC24XX_IO_ALTERNATE_1),
- LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 2, 0, 0, 10, 0, 11, LPC24XX_IO_ALTERNATE_1),
+ LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 1, 0, 0, 15, 0, 16, LPC24XX_IO_ALTERNATE_0),
+ LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 1, 1, 2, 0, 2, 1, LPC24XX_IO_ALTERNATE_1),
+ LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 1, 2, 3, 16, 3, 17, LPC24XX_IO_ALTERNATE_2),
+ LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 2, 0, 0, 10, 0, 11, LPC24XX_IO_ALTERNATE_0),
LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 2, 1, 2, 8, 2, 9, LPC24XX_IO_ALTERNATE_1),
LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 2, 2, 4, 22, 4, 23, LPC24XX_IO_ALTERNATE_1),
- LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 3, 0, 0, 0, 0, 1, LPC24XX_IO_ALTERNATE_2),
+ LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 3, 0, 0, 0, 0, 1, LPC24XX_IO_ALTERNATE_1),
LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 3, 1, 0, 25, 0, 26, LPC24XX_IO_ALTERNATE_2),
LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART, 3, 2, 4, 28, 4, 29, LPC24XX_IO_ALTERNATE_2),
diff --git a/c/src/lib/libbsp/arm/lpc24xx/preinstall.am b/c/src/lib/libbsp/arm/lpc24xx/preinstall.am
index d06abff813..f30dd34f48 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/preinstall.am
+++ b/c/src/lib/libbsp/arm/lpc24xx/preinstall.am
@@ -125,15 +125,23 @@ $(PROJECT_LIB)/linkcmds.base: ../shared/startup/linkcmds.base $(PROJECT_LIB)/$(d
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.base
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.base
-$(PROJECT_LIB)/linkcmds.lpc2478: startup/linkcmds.lpc2478 $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.lpc2478
-PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.lpc2478
+$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
-$(PROJECT_LIB)/linkcmds.lpc2478_ncs: startup/linkcmds.lpc2478_ncs $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.lpc2478_ncs
-PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.lpc2478_ncs
+$(PROJECT_LIB)/linkcmds.lpc24xx_ea: startup/linkcmds.lpc24xx_ea $(PROJECT_LIB)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.lpc24xx_ea
+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.lpc24xx_ea
-$(PROJECT_LIB)/linkcmds.lpc2478_ncs_ram: startup/linkcmds.lpc2478_ncs_ram $(PROJECT_LIB)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.lpc2478_ncs_ram
-PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.lpc2478_ncs_ram
+$(PROJECT_LIB)/linkcmds.lpc24xx_ncs_rom_int: startup/linkcmds.lpc24xx_ncs_rom_int $(PROJECT_LIB)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.lpc24xx_ncs_rom_int
+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.lpc24xx_ncs_rom_int
+
+$(PROJECT_LIB)/linkcmds.lpc24xx_ncs_rom_ext: startup/linkcmds.lpc24xx_ncs_rom_ext $(PROJECT_LIB)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.lpc24xx_ncs_rom_ext
+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.lpc24xx_ncs_rom_ext
+
+$(PROJECT_LIB)/linkcmds.lpc24xx_ncs_ram: startup/linkcmds.lpc24xx_ncs_ram $(PROJECT_LIB)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.lpc24xx_ncs_ram
+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.lpc24xx_ncs_ram
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds
index 165c9bca22..cab8310661 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds
+++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds
@@ -1,34 +1,3 @@
-/**
- * @file
- *
- * LPC2478 (QVGA Base Board from Embedded Artists).
- */
-
-/*
- * WARNING: This is likely not what you want. You need Binutils with the
- * REGION_ALIAS feature and the version in the comment below. This is only to
- * provide linkable tests.
- */
-
-MEMORY {
- REGION_START (AIW) : ORIGIN = 0x100000, LENGTH = 0x100000
- REGION_VECTOR (AIW) : ORIGIN = 0x200000, LENGTH = 0x100000
- REGION_TEXT (AIW) : ORIGIN = 0x300000, LENGTH = 0x100000
- REGION_TEXT_LOAD (AIW) : ORIGIN = 0x400000, LENGTH = 0x100000
- REGION_RODATA (AIW) : ORIGIN = 0x500000, LENGTH = 0x100000
- REGION_RODATA_LOAD (AIW) : ORIGIN = 0x600000, LENGTH = 0x100000
- REGION_DATA (AIW) : ORIGIN = 0x700000, LENGTH = 0x100000
- REGION_DATA_LOAD (AIW) : ORIGIN = 0x800000, LENGTH = 0x100000
- REGION_FAST (AIW) : ORIGIN = 0x900000, LENGTH = 0x100000
- REGION_FAST_LOAD (AIW) : ORIGIN = 0xa00000, LENGTH = 0x100000
- REGION_BSS (AIW) : ORIGIN = 0xb00000, LENGTH = 0x100000
- REGION_WORK (AIW) : ORIGIN = 0xc00000, LENGTH = 0x100000
- REGION_STACK (AIW) : ORIGIN = 0xd00000, LENGTH = 0x100000
- NIRVANA : ORIGIN = 0, LENGTH = 0
-}
-
-/*
-
MEMORY {
RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k
RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 32M
@@ -44,11 +13,9 @@ REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
REGION_ALIAS ("REGION_DATA", RAM_EXT);
REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_INT);
+REGION_ALIAS ("REGION_FAST_LOAD", RAM_EXT);
REGION_ALIAS ("REGION_BSS", RAM_EXT);
REGION_ALIAS ("REGION_WORK", RAM_EXT);
REGION_ALIAS ("REGION_STACK", RAM_INT);
-*/
-
INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478 b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478
deleted file mode 100644
index 568c29ecb5..0000000000
--- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file
- *
- * LPC2478 (QVGA Base Board from Embedded Artists).
- */
-
-/*
- * WARNING: This is likely not what you want. You need Binutils with the
- * REGION_ALIAS feature and the version in the comment below. This is only to
- * provide linkable tests.
- */
-
-MEMORY {
- REGION_START (AIW) : ORIGIN = 0x100000, LENGTH = 0x100000
- REGION_VECTOR (AIW) : ORIGIN = 0x200000, LENGTH = 0x100000
- REGION_TEXT (AIW) : ORIGIN = 0x300000, LENGTH = 0x100000
- REGION_TEXT_LOAD (AIW) : ORIGIN = 0x400000, LENGTH = 0x100000
- REGION_RODATA (AIW) : ORIGIN = 0x500000, LENGTH = 0x100000
- REGION_RODATA_LOAD (AIW) : ORIGIN = 0x600000, LENGTH = 0x100000
- REGION_DATA (AIW) : ORIGIN = 0x700000, LENGTH = 0x100000
- REGION_DATA_LOAD (AIW) : ORIGIN = 0x800000, LENGTH = 0x100000
- REGION_FAST (AIW) : ORIGIN = 0x900000, LENGTH = 0x100000
- REGION_FAST_LOAD (AIW) : ORIGIN = 0xa00000, LENGTH = 0x100000
- REGION_BSS (AIW) : ORIGIN = 0xb00000, LENGTH = 0x100000
- REGION_WORK (AIW) : ORIGIN = 0xc00000, LENGTH = 0x100000
- REGION_STACK (AIW) : ORIGIN = 0xd00000, LENGTH = 0x100000
- NIRVANA : ORIGIN = 0, LENGTH = 0
-}
-
-/*
-
-MEMORY {
- RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k
- RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 32M
- ROM_INT (RX) : ORIGIN = 0x00000000, LENGTH = 512k - 8k
- NIRVANA : ORIGIN = 0, LENGTH = 0
-}
-
-REGION_ALIAS ("REGION_START", RAM_EXT);
-REGION_ALIAS ("REGION_VECTOR", RAM_INT);
-REGION_ALIAS ("REGION_TEXT", RAM_EXT);
-REGION_ALIAS ("REGION_TEXT_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_RODATA", RAM_EXT);
-REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_DATA", RAM_EXT);
-REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_INT);
-REGION_ALIAS ("REGION_BSS", RAM_EXT);
-REGION_ALIAS ("REGION_WORK", RAM_EXT);
-REGION_ALIAS ("REGION_STACK", RAM_INT);
-
-*/
-
-INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478_ncs b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478_ncs
deleted file mode 100644
index 41b7a3c41f..0000000000
--- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478_ncs
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @file
- *
- * LPC2478 (NCS, bootloader configuration).
- */
-
-/*
- * WARNING: This is likely not what you want. You need Binutils with the
- * REGION_ALIAS feature and the version in the comment below. This is only to
- * provide linkable tests.
- */
-
-MEMORY {
- REGION_START (AIW) : ORIGIN = 0x100000, LENGTH = 0x100000
- REGION_VECTOR (AIW) : ORIGIN = 0x200000, LENGTH = 0x100000
- REGION_TEXT (AIW) : ORIGIN = 0x300000, LENGTH = 0x100000
- REGION_TEXT_LOAD (AIW) : ORIGIN = 0x400000, LENGTH = 0x100000
- REGION_RODATA (AIW) : ORIGIN = 0x500000, LENGTH = 0x100000
- REGION_RODATA_LOAD (AIW) : ORIGIN = 0x600000, LENGTH = 0x100000
- REGION_DATA (AIW) : ORIGIN = 0x700000, LENGTH = 0x100000
- REGION_DATA_LOAD (AIW) : ORIGIN = 0x800000, LENGTH = 0x100000
- REGION_FAST (AIW) : ORIGIN = 0x900000, LENGTH = 0x100000
- REGION_FAST_LOAD (AIW) : ORIGIN = 0xa00000, LENGTH = 0x100000
- REGION_BSS (AIW) : ORIGIN = 0xb00000, LENGTH = 0x100000
- REGION_WORK (AIW) : ORIGIN = 0xc00000, LENGTH = 0x100000
- REGION_STACK (AIW) : ORIGIN = 0xd00000, LENGTH = 0x100000
- NIRVANA : ORIGIN = 0, LENGTH = 0
-}
-
-/*
-
-MEMORY {
- RAM_VEC (AIW) : ORIGIN = 0x40000000, LENGTH = 32k
- RAM_INT (AIW) : ORIGIN = 0x40008000, LENGTH = 32k
- RAM_EXT (AIW) : ORIGIN = 0xa0c00000, LENGTH = 4M
- ROM_INT (RX) : ORIGIN = 0x00000000, LENGTH = 512k - 8k
- NIRVANA : ORIGIN = 0, LENGTH = 0
-}
-
-REGION_ALIAS ("REGION_START", ROM_INT);
-REGION_ALIAS ("REGION_VECTOR", RAM_VEC);
-REGION_ALIAS ("REGION_TEXT", ROM_INT);
-REGION_ALIAS ("REGION_TEXT_LOAD", ROM_INT);
-REGION_ALIAS ("REGION_RODATA", ROM_INT);
-REGION_ALIAS ("REGION_RODATA_LOAD", ROM_INT);
-REGION_ALIAS ("REGION_DATA", RAM_EXT);
-REGION_ALIAS ("REGION_DATA_LOAD", ROM_INT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_INT);
-REGION_ALIAS ("REGION_BSS", RAM_EXT);
-REGION_ALIAS ("REGION_WORK", RAM_EXT);
-REGION_ALIAS ("REGION_STACK", RAM_INT);
-
-*/
-
-INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478_ncs_ram b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478_ncs_ram
deleted file mode 100644
index 31351b23d4..0000000000
--- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2478_ncs_ram
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file
- *
- * LPC2478 (NCS, code and data in external RAM).
- */
-
-/*
- * WARNING: This is likely not what you want. You need Binutils with the
- * REGION_ALIAS feature and the version in the comment below. This is only to
- * provide linkable tests.
- */
-
-MEMORY {
- REGION_START (AIW) : ORIGIN = 0x100000, LENGTH = 0x100000
- REGION_VECTOR (AIW) : ORIGIN = 0x200000, LENGTH = 0x100000
- REGION_TEXT (AIW) : ORIGIN = 0x300000, LENGTH = 0x100000
- REGION_TEXT_LOAD (AIW) : ORIGIN = 0x400000, LENGTH = 0x100000
- REGION_RODATA (AIW) : ORIGIN = 0x500000, LENGTH = 0x100000
- REGION_RODATA_LOAD (AIW) : ORIGIN = 0x600000, LENGTH = 0x100000
- REGION_DATA (AIW) : ORIGIN = 0x700000, LENGTH = 0x100000
- REGION_DATA_LOAD (AIW) : ORIGIN = 0x800000, LENGTH = 0x100000
- REGION_FAST (AIW) : ORIGIN = 0x900000, LENGTH = 0x100000
- REGION_FAST_LOAD (AIW) : ORIGIN = 0xa00000, LENGTH = 0x100000
- REGION_BSS (AIW) : ORIGIN = 0xb00000, LENGTH = 0x100000
- REGION_WORK (AIW) : ORIGIN = 0xc00000, LENGTH = 0x100000
- REGION_STACK (AIW) : ORIGIN = 0xd00000, LENGTH = 0x100000
- NIRVANA : ORIGIN = 0, LENGTH = 0
-}
-
-/*
-
-MEMORY {
- RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k
- RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 16M
- ROM_INT (RX) : ORIGIN = 0x00000000, LENGTH = 512k - 8k
- NIRVANA : ORIGIN = 0, LENGTH = 0
-}
-
-REGION_ALIAS ("REGION_START", RAM_EXT);
-REGION_ALIAS ("REGION_VECTOR", RAM_INT);
-REGION_ALIAS ("REGION_TEXT", RAM_EXT);
-REGION_ALIAS ("REGION_TEXT_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_RODATA", RAM_EXT);
-REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_DATA", RAM_EXT);
-REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
-REGION_ALIAS ("REGION_FAST", RAM_INT);
-REGION_ALIAS ("REGION_FAST_LOAD", RAM_INT);
-REGION_ALIAS ("REGION_BSS", RAM_EXT);
-REGION_ALIAS ("REGION_WORK", RAM_EXT);
-REGION_ALIAS ("REGION_STACK", RAM_INT);
-
-*/
-
-INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea
new file mode 100644
index 0000000000..ca6b52a4fe
--- /dev/null
+++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ea
@@ -0,0 +1,56 @@
+/**
+ * @file
+ *
+ * @ingroup lpc24xx_linker_ea
+ *
+ * @brief Memory map.
+ */
+
+/**
+ * @defgroup lpc24xx_linker_ea QVGA Base Board Memory Map
+ *
+ * @ingroup bsp_linker
+ *
+ * @brief QVGA Base Board from Embedded Artists (LPC2478) memory map.
+ *
+ * <table>
+ * <tr><th>Region Name</th><th>Region Begin</th><th>Region Size</th></tr>
+ * <tr><td>RAM_INT</td><td>0x40000000</td><td>64k</td></tr>
+ * <tr><td>RAM_EXT</td><td>0xa0000000</td><td>32M</td></tr>
+ * </table>
+ *
+ * <table>
+ * <tr><th>Section Name</th><th>Section Runtime Region</th><th>Section Load Region</th></tr>
+ * <tr><td>.start</td><td>RAM_EXT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.vector</td><td>RAM_INT</td><td></td></tr>
+ * <tr><td>.text</td><td>RAM_EXT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.rodata</td><td>RAM_EXT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.data</td><td>RAM_EXT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.fast</td><td>RAM_INT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.bss</td><td>RAM_EXT</td><td></td></tr>
+ * <tr><td>.work</td><td>RAM_EXT</td><td></td></tr>
+ * <tr><td>.stack</td><td>RAM_INT</td><td></td></tr>
+ * </table>
+ */
+
+MEMORY {
+ RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k
+ RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 32M
+ NIRVANA : ORIGIN = 0, LENGTH = 0
+}
+
+REGION_ALIAS ("REGION_START", RAM_EXT);
+REGION_ALIAS ("REGION_VECTOR", RAM_INT);
+REGION_ALIAS ("REGION_TEXT", RAM_EXT);
+REGION_ALIAS ("REGION_TEXT_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_RODATA", RAM_EXT);
+REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_DATA", RAM_EXT);
+REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST", RAM_INT);
+REGION_ALIAS ("REGION_FAST_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_BSS", RAM_EXT);
+REGION_ALIAS ("REGION_WORK", RAM_EXT);
+REGION_ALIAS ("REGION_STACK", RAM_INT);
+
+INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram
new file mode 100644
index 0000000000..5322c7a725
--- /dev/null
+++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_ram
@@ -0,0 +1,56 @@
+/**
+ * @file
+ *
+ * @ingroup lpc24xx_linker_ncs_ram
+ *
+ * @brief Memory map.
+ */
+
+/**
+ * @defgroup lpc24xx_linker_ncs_ram NCS Application Memory Map
+ *
+ * @ingroup bsp_linker
+ *
+ * @brief NCS application memory map.
+ *
+ * <table>
+ * <tr><th>Region Name</th><th>Region Begin</th><th>Region Size</th></tr>
+ * <tr><td>RAM_INT</td><td>0x40000000</td><td>64k</td></tr>
+ * <tr><td>RAM_EXT</td><td>0xa0000000</td><td>8M</td></tr>
+ * </table>
+ *
+ * <table>
+ * <tr><th>Section Name</th><th>Section Runtime Region</th><th>Section Load Region</th></tr>
+ * <tr><td>.start</td><td>RAM_EXT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.vector</td><td>RAM_INT</td><td></td></tr>
+ * <tr><td>.text</td><td>RAM_EXT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.rodata</td><td>RAM_EXT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.data</td><td>RAM_EXT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.fast</td><td>RAM_INT</td><td>RAM_EXT</td></tr>
+ * <tr><td>.bss</td><td>RAM_EXT</td><td></td></tr>
+ * <tr><td>.work</td><td>RAM_EXT</td><td></td></tr>
+ * <tr><td>.stack</td><td>RAM_INT</td><td></td></tr>
+ * </table>
+ */
+
+MEMORY {
+ RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k
+ RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 8M
+ NIRVANA : ORIGIN = 0, LENGTH = 0
+}
+
+REGION_ALIAS ("REGION_START", RAM_EXT);
+REGION_ALIAS ("REGION_VECTOR", RAM_INT);
+REGION_ALIAS ("REGION_TEXT", RAM_EXT);
+REGION_ALIAS ("REGION_TEXT_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_RODATA", RAM_EXT);
+REGION_ALIAS ("REGION_RODATA_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_DATA", RAM_EXT);
+REGION_ALIAS ("REGION_DATA_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_FAST", RAM_INT);
+REGION_ALIAS ("REGION_FAST_LOAD", RAM_EXT);
+REGION_ALIAS ("REGION_BSS", RAM_EXT);
+REGION_ALIAS ("REGION_WORK", RAM_EXT);
+REGION_ALIAS ("REGION_STACK", RAM_INT);
+
+INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext
new file mode 100644
index 0000000000..f4518090d4
--- /dev/null
+++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_ext
@@ -0,0 +1,60 @@
+/**
+ * @file
+ *
+ * @ingroup lpc24xx_linker_ncs_rom_ext
+ *
+ * @brief Memory map.
+ */
+
+/**
+ * @defgroup lpc24xx_linker_ncs_rom_ext NCS Bootloader (LPC2470) Memory Map
+ *
+ * @ingroup bsp_linker
+ *
+ * @brief NCS bootloader (LPC2470) memory map.
+ *
+ * <table>
+ * <tr><th>Region Name</th><th>Region Begin</th><th>Region Size</th></tr>
+ * <tr><td>RAM_INT</td><td>0x40000000</td><td>64k</td></tr>
+ * <tr><td>RAM_EXT</td><td>0xa0400000</td><td>4M</td></tr>
+ * <tr><td>ROM_BOOT</td><td>0x81000000</td><td>16k</td></tr>
+ * <tr><td>ROM_EXT</td><td>0x81010000</td><td>2M - 64k</td></tr>
+ * </table>
+ *
+ * <table>
+ * <tr><th>Section Name</th><th>Section Runtime Region</th><th>Section Load Region</th></tr>
+ * <tr><td>.start</td><td>ROM_BOOT</td><td>ROM_BOOT</td></tr>
+ * <tr><td>.vector</td><td>RAM_INT</td><td></td></tr>
+ * <tr><td>.text</td><td>RAM_EXT</td><td>ROM_EXT</td></tr>
+ * <tr><td>.rodata</td><td>RAM_EXT</td><td>ROM_EXT</td></tr>
+ * <tr><td>.data</td><td>RAM_EXT</td><td>ROM_EXT</td></tr>
+ * <tr><td>.fast</td><td>RAM_INT</td><td>ROM_BOOT</td></tr>
+ * <tr><td>.bss</td><td>RAM_EXT</td><td></td></tr>
+ * <tr><td>.work</td><td>RAM_EXT</td><td></td></tr>
+ * <tr><td>.stack</td><td>RAM_INT</td><td></td></tr>
+ * </table>
+ */
+
+MEMORY {
+ RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k
+ RAM_EXT (AIW) : ORIGIN = 0xa0400000, LENGTH = 4M
+ ROM_BOOT (RX) : ORIGIN = 0x81000000, LENGTH = 16k
+ ROM_EXT (RX) : ORIGIN = 0x81010000, LENGTH = 2M - 64k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
+}
+
+REGION_ALIAS ("REGION_START", ROM_BOOT);
+REGION_ALIAS ("REGION_VECTOR", RAM_INT);
+REGION_ALIAS ("REGION_TEXT", RAM_EXT);
+REGION_ALIAS ("REGION_TEXT_LOAD", ROM_EXT);
+REGION_ALIAS ("REGION_RODATA", RAM_EXT);
+REGION_ALIAS ("REGION_RODATA_LOAD", ROM_EXT);
+REGION_ALIAS ("REGION_DATA", RAM_EXT);
+REGION_ALIAS ("REGION_DATA_LOAD", ROM_EXT);
+REGION_ALIAS ("REGION_FAST", RAM_INT);
+REGION_ALIAS ("REGION_FAST_LOAD", ROM_BOOT);
+REGION_ALIAS ("REGION_BSS", RAM_EXT);
+REGION_ALIAS ("REGION_WORK", RAM_EXT);
+REGION_ALIAS ("REGION_STACK", RAM_INT);
+
+INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int
new file mode 100644
index 0000000000..a46145d333
--- /dev/null
+++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc24xx_ncs_rom_int
@@ -0,0 +1,60 @@
+/**
+ * @file
+ *
+ * @ingroup lpc24xx_linker_ncs_rom_int
+ *
+ * @brief Memory map.
+ */
+
+/**
+ * @defgroup lpc24xx_linker_ncs_rom_int NCS Bootloader (LPC2478) Memory Map
+ *
+ * @ingroup bsp_linker
+ *
+ * @brief NCS bootloader (LPC2478) memory map.
+ *
+ * <table>
+ * <tr><th>Region Name</th><th>Region Begin</th><th>Region Size</th></tr>
+ * <tr><td>RAM_VEC</td><td>0x40000000</td><td>32k</td></tr>
+ * <tr><td>RAM_INT</td><td>0x40008000</td><td>32k</td></tr>
+ * <tr><td>RAM_EXT</td><td>0xa0400000</td><td>4M</td></tr>
+ * <tr><td>ROM_INT</td><td>0x00000000</td><td>512k - 8k</td></tr>
+ * </table>
+ *
+ * <table>
+ * <tr><th>Section Name</th><th>Section Runtime Region</th><th>Section Load Region</th></tr>
+ * <tr><td>.start</td><td>ROM_INT</td><td>ROM_INT</td></tr>
+ * <tr><td>.vector</td><td>RAM_VEC</td><td></td></tr>
+ * <tr><td>.text</td><td>ROM_INT</td><td>ROM_INT</td></tr>
+ * <tr><td>.rodata</td><td>ROM_INT</td><td>ROM_INT</td></tr>
+ * <tr><td>.data</td><td>RAM_EXT</td><td>ROM_INT</td></tr>
+ * <tr><td>.fast</td><td>RAM_INT</td><td>ROM_INT</td></tr>
+ * <tr><td>.bss</td><td>RAM_EXT</td><td></td></tr>
+ * <tr><td>.work</td><td>RAM_EXT</td><td></td></tr>
+ * <tr><td>.stack</td><td>RAM_INT</td><td></td></tr>
+ */
+
+
+MEMORY {
+ RAM_VEC (AIW) : ORIGIN = 0x40000000, LENGTH = 32k
+ RAM_INT (AIW) : ORIGIN = 0x40008000, LENGTH = 32k
+ RAM_EXT (AIW) : ORIGIN = 0xa0400000, LENGTH = 4M
+ ROM_INT (RX) : ORIGIN = 0x00000000, LENGTH = 512k - 8k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
+}
+
+REGION_ALIAS ("REGION_START", ROM_INT);
+REGION_ALIAS ("REGION_VECTOR", RAM_VEC);
+REGION_ALIAS ("REGION_TEXT", ROM_INT);
+REGION_ALIAS ("REGION_TEXT_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_RODATA", ROM_INT);
+REGION_ALIAS ("REGION_RODATA_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_DATA", RAM_EXT);
+REGION_ALIAS ("REGION_DATA_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_FAST", RAM_INT);
+REGION_ALIAS ("REGION_FAST_LOAD", ROM_INT);
+REGION_ALIAS ("REGION_BSS", RAM_EXT);
+REGION_ALIAS ("REGION_WORK", RAM_EXT);
+REGION_ALIAS ("REGION_STACK", RAM_INT);
+
+INCLUDE linkcmds.base