summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/lpc24xx
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2010-04-09 12:25:22 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2010-04-09 12:25:22 +0000
commit22f107b6e4f667512d9563f0a5d235947fc7c850 (patch)
tree233c80a0df4c2376c626317db4363e4c22f3b721 /c/src/lib/libbsp/arm/lpc24xx
parentadded dma header (diff)
downloadrtems-22f107b6e4f667512d9563f0a5d235947fc7c850.tar.bz2
Changes throughout
Diffstat (limited to 'c/src/lib/libbsp/arm/lpc24xx')
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/ChangeLog6
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/Makefile.am8
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/configure.ac25
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/include/lpc24xx.h6
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/irq/irq.c6
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/make/custom/lpc24xx.inc3
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/misc/io.c9
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c30
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/bspstarthooks.c76
-rw-r--r--c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc236212
10 files changed, 150 insertions, 31 deletions
diff --git a/c/src/lib/libbsp/arm/lpc24xx/ChangeLog b/c/src/lib/libbsp/arm/lpc24xx/ChangeLog
index 01835eaa4c..00dbd6afa7 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/ChangeLog
+++ b/c/src/lib/libbsp/arm/lpc24xx/ChangeLog
@@ -1,3 +1,9 @@
+2010-04-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * Makefile.am, configure.ac, include/lpc24xx.h, irq/irq.c,
+ make/custom/lpc24xx.inc, misc/io.c, startup/bspstart.c,
+ startup/bspstarthooks.c, startup/linkcmds.lpc2362: Changes throughout.
+
2010-03-29 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de>
* configure.ac: make the lpc2362 a SMALL MEMORY BSP
diff --git a/c/src/lib/libbsp/arm/lpc24xx/Makefile.am b/c/src/lib/libbsp/arm/lpc24xx/Makefile.am
index 1ea711b82d..f10bfec9de 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/Makefile.am
+++ b/c/src/lib/libbsp/arm/lpc24xx/Makefile.am
@@ -86,7 +86,6 @@ libbsp_a_SOURCES += ../../shared/bootcard.c \
../../shared/bsplibc.c \
../../shared/bsppost.c \
../../shared/bsppredriverhook.c \
- ../../shared/bsppretaskinghook.c \
../../shared/gnatinstallhandler.c \
../../shared/sbrk.c \
../../shared/src/stackalloc.c \
@@ -135,13 +134,8 @@ libbsp_a_SOURCES += ../../../libcpu/shared/src/cache_manager.c \
../../../libcpu/arm/shared/cache/cache_.h
libbsp_a_CPPFLAGS += -I$(srcdir)/../../../libcpu/arm/shared/include
-# Start hooks (FIXME: This is brittle.)
+# Start hooks
libbsp_a_SOURCES += startup/bspstarthooks.c
-libbsp_a-bspstarthooks.o: startup/bspstarthooks.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libbsp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS:-mthumb=) \
- -MT libbsp_a-bspstarthooks.o -MD -MP -MF $(DEPDIR)/libbsp_a-bspstarthooks.Tpo -c -o libbsp_a-bspstarthooks.o \
- `test -f 'startup/bspstarthooks.c' || echo '$(srcdir)/'`startup/bspstarthooks.c
- $(am__mv) $(DEPDIR)/libbsp_a-bspstarthooks.Tpo $(DEPDIR)/libbsp_a-bspstarthooks.Po
###############################################################################
# Network #
diff --git a/c/src/lib/libbsp/arm/lpc24xx/configure.ac b/c/src/lib/libbsp/arm/lpc24xx/configure.ac
index 37c6ab34b9..1dd90bf09a 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/configure.ac
+++ b/c/src/lib/libbsp/arm/lpc24xx/configure.ac
@@ -6,7 +6,7 @@
#
AC_PREREQ(2.59)
-AC_INIT([rtems-c-src-lib-libbsp-arm-lpc247x],[_RTEMS_VERSION],[rtems-bugs@rtems.com])
+AC_INIT([rtems-c-src-lib-libbsp-arm-lpc24xx],[_RTEMS_VERSION],[rtems-bugs@rtems.com])
AC_CONFIG_SRCDIR([bsp_specs])
RTEMS_TOP(../../../../../..)
@@ -21,22 +21,25 @@ RTEMS_PROG_CCAS
RTEMS_CHECK_NETWORKING
AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes")
-RTEMS_BSPOPTS_SET([BSP_SMALL_MEMORY],[lpc2362],[TRUE])
+RTEMS_BSPOPTS_SET([BSP_SMALL_MEMORY],[lpc2362],[1])
RTEMS_BSPOPTS_SET([BSP_SMALL_MEMORY],[*],[])
-RTEMS_BSPOPTS_HELP([BSP_SMALL_MEMORY],[set to true fo low memory footprint])
+RTEMS_BSPOPTS_HELP([BSP_SMALL_MEMORY],[disable testsuite samples with high memory demands])
+RTEMS_BSPOPTS_SET([LPC24XX_OSCILLATOR_MAIN],[lpc2362],[3686400U])
RTEMS_BSPOPTS_SET([LPC24XX_OSCILLATOR_MAIN],[*],[12000000U])
RTEMS_BSPOPTS_HELP([LPC24XX_OSCILLATOR_MAIN],[main oscillator frequency in Hz])
RTEMS_BSPOPTS_SET([LPC24XX_OSCILLATOR_RTC],[*],[32768U])
RTEMS_BSPOPTS_HELP([LPC24XX_OSCILLATOR_RTC],[RTC oscillator frequency in Hz])
+RTEMS_BSPOPTS_SET([LPC24XX_CCLK],[lpc2362],[58982400U])
RTEMS_BSPOPTS_SET([LPC24XX_CCLK],[*],[72000000U])
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_ETHERNET_RMII],[lpc24xx_ea],[1])
RTEMS_BSPOPTS_SET([LPC24XX_ETHERNET_RMII],[*],[])
RTEMS_BSPOPTS_HELP([LPC24XX_ETHERNET_RMII],[enable RMII for Ethernet])
@@ -59,9 +62,11 @@ 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],[lpc2362],[0])
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],[lpc2362],[0])
RTEMS_BSPOPTS_SET([LPC24XX_CONFIG_UART_3],[lpc24xx_ncs_*],[0])
RTEMS_BSPOPTS_HELP([LPC24XX_CONFIG_UART_3],[configuration for UART 3])
@@ -74,6 +79,20 @@ 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([LPC24XX_HEAP_EXTEND],[lpc2362],[1])
+RTEMS_BSPOPTS_HELP([LPC24XX_HEAP_EXTEND],[enable heap extend by Ethernet and USB regions])
+
+RTEMS_BSPOPTS_SET([LPC24XX_STOP_GPDMA],[*],[1])
+RTEMS_BSPOPTS_HELP([LPC24XX_STOP_GPDMA],[stop general purpose DMA at start-up to avoid DMA interference])
+
+RTEMS_BSPOPTS_SET([LPC24XX_STOP_ETHERNET],[lpc2362],[])
+RTEMS_BSPOPTS_SET([LPC24XX_STOP_ETHERNET],[*],[1])
+RTEMS_BSPOPTS_HELP([LPC24XX_STOP_ETHERNET],[stop Ethernet controller at start-up to avoid DMA interference])
+
+RTEMS_BSPOPTS_SET([LPC24XX_STOP_USB],[lpc2362],[])
+RTEMS_BSPOPTS_SET([LPC24XX_STOP_USB],[*],[1])
+RTEMS_BSPOPTS_HELP([LPC24XX_STOP_USB],[stop USB controller at start-up to avoid DMA interference])
+
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])
diff --git a/c/src/lib/libbsp/arm/lpc24xx/include/lpc24xx.h b/c/src/lib/libbsp/arm/lpc24xx/include/lpc24xx.h
index 2f296036d5..d7a5d11c0f 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/include/lpc24xx.h
+++ b/c/src/lib/libbsp/arm/lpc24xx/include/lpc24xx.h
@@ -1970,6 +1970,12 @@ typedef struct {
#define LPC24XX_FIO ((volatile lpc24xx_fio *) FIO_BASE_ADDR)
+/* PCONP */
+
+#define PCONP_GPDMA (1U << 29)
+#define PCONP_ETHERNET (1U << 30)
+#define PCONP_USB (1U << 31)
+
/** @} */
#endif /* LIBBSP_ARM_LPC24XX_LPC24XX_H */
diff --git a/c/src/lib/libbsp/arm/lpc24xx/irq/irq.c b/c/src/lib/libbsp/arm/lpc24xx/irq/irq.c
index d3073315f8..c16bd46bd8 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/irq/irq.c
+++ b/c/src/lib/libbsp/arm/lpc24xx/irq/irq.c
@@ -110,8 +110,10 @@ rtems_status_code bsp_interrupt_facility_initialize(void)
/* Reset priority mask register */
VICSWPrioMask = 0xffff;
- /* Acknowledge interrupt */
- VICVectAddr = 0;
+ /* Acknowledge interrupts for all priorities */
+ for (i = LPC24XX_IRQ_PRIORITY_VALUE_MIN; i <= LPC24XX_IRQ_PRIORITY_VALUE_MAX; ++i) {
+ VICVectAddr = 0;
+ }
/* Install the IRQ exception handler */
_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, arm_exc_interrupt, NULL);
diff --git a/c/src/lib/libbsp/arm/lpc24xx/make/custom/lpc24xx.inc b/c/src/lib/libbsp/arm/lpc24xx/make/custom/lpc24xx.inc
index e2018939a9..f8b1cbf072 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/make/custom/lpc24xx.inc
+++ b/c/src/lib/libbsp/arm/lpc24xx/make/custom/lpc24xx.inc
@@ -8,6 +8,7 @@ include $(RTEMS_ROOT)/make/custom/default.cfg
RTEMS_CPU = arm
-CPU_CFLAGS = -mcpu=arm7tdmi-s -mstructure-size-boundary=8 -mthumb
+CPU_CFLAGS = -mcpu=arm7tdmi-s -mthumb -mstructure-size-boundary=8 \
+ -Wextra -Wno-unused -Wpointer-arith -Wcast-qual -Wconversion -Wmissing-prototypes
CFLAGS_OPTIMIZE_V = -Os -g
diff --git a/c/src/lib/libbsp/arm/lpc24xx/misc/io.c b/c/src/lib/libbsp/arm/lpc24xx/misc/io.c
index 340ce2153a..877131fa77 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/misc/io.c
+++ b/c/src/lib/libbsp/arm/lpc24xx/misc/io.c
@@ -77,6 +77,7 @@ static const lpc24xx_io_entry lpc24xx_io_config_table [] = {
/* ADC */
LPC24XX_IO_ENTRY(LPC24XX_MODULE_ADC, 0, 0, 12, 0, 13, LPC24XX_IO_ALTERNATE_2),
+ LPC24XX_IO_ENTRY(LPC24XX_MODULE_ADC, 1, 0, 23, 0, 25, LPC24XX_IO_ALTERNATE_0),
/* I2C */
LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2C_0, 0, 0, 27, 0, 28, LPC24XX_IO_ALTERNATE_0),
@@ -103,8 +104,14 @@ static const lpc24xx_io_entry lpc24xx_io_config_table [] = {
LPC24XX_IO_ENTRY(LPC24XX_MODULE_USB, 0, 0, 29, 0, 30, LPC24XX_IO_ALTERNATE_0),
LPC24XX_IO_ENTRY(LPC24XX_MODULE_USB, 0, 1, 19, 1, 19, LPC24XX_IO_ALTERNATE_1),
+ /* SPI */
+ LPC24XX_IO_ENTRY(LPC24XX_MODULE_SPI, 0, 0, 15, 0, 18, LPC24XX_IO_ALTERNATE_2),
+
+ /* PWM */
+ LPC24XX_IO_ENTRY(LPC24XX_MODULE_PWM_1, 0, 2, 0, 2, 0, LPC24XX_IO_ALTERNATE_0),
+
/* Terminate */
- LPC24XX_IO_ENTRY(LPC24XX_MODULE_COUNT, 0, 0, 0, 0, 0, 0),
+ LPC24XX_IO_ENTRY(LPC24XX_MODULE_COUNT, 0, 0, 0, 0, 0, 0)
};
static rtems_status_code lpc24xx_io_iterate(
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c b/c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c
index 76e1aa79aa..097b66c513 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/lpc24xx/startup/bspstart.c
@@ -30,6 +30,36 @@
#include <bsp/stackalloc.h>
#include <bsp/system-clocks.h>
+#ifdef LPC24XX_HEAP_EXTEND
+ LINKER_SYMBOL(lpc24xx_region_heap_0_begin);
+ LINKER_SYMBOL(lpc24xx_region_heap_0_size);
+ LINKER_SYMBOL(lpc24xx_region_heap_0_end);
+
+ LINKER_SYMBOL(lpc24xx_region_heap_1_begin);
+ LINKER_SYMBOL(lpc24xx_region_heap_1_size);
+ LINKER_SYMBOL(lpc24xx_region_heap_1_end);
+
+ extern Heap_Control *RTEMS_Malloc_Heap;
+#endif
+
+void bsp_pretasking_hook(void)
+{
+ #ifdef LPC24XX_HEAP_EXTEND
+ _Heap_Extend(
+ RTEMS_Malloc_Heap,
+ lpc24xx_region_heap_0_begin,
+ (uintptr_t) lpc24xx_region_heap_0_size,
+ NULL
+ );
+ _Heap_Extend(
+ RTEMS_Malloc_Heap,
+ lpc24xx_region_heap_1_begin,
+ (uintptr_t) lpc24xx_region_heap_1_size,
+ NULL
+ );
+ #endif
+}
+
void bsp_start(void)
{
/* Initialize Timer 1 */
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/bspstarthooks.c b/c/src/lib/libbsp/arm/lpc24xx/startup/bspstarthooks.c
index 732d30ddf5..9d56df2c7a 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/startup/bspstarthooks.c
+++ b/c/src/lib/libbsp/arm/lpc24xx/startup/bspstarthooks.c
@@ -28,6 +28,10 @@
#define BSP_START_SECTION __attribute__((section(".bsp_start")))
+#if defined(LPC24XX_EMC_MICRON) || defined(LPC24XX_EMC_NUMONYX)
+ #define LPC24XX_EMC_INIT
+#endif
+
#ifdef LPC24XX_EMC_MICRON
static void BSP_START_SECTION lpc24xx_ram_test_32(void)
{
@@ -114,15 +118,17 @@ static void BSP_START_SECTION lpc24xx_init_emc_0(void)
numonyx.waitrun = 0xf;
#endif
- /* Set pin functions for EMC */
- PINSEL5 = (PINSEL5 & 0xf000f000) | 0x05550555;
- PINSEL6 = 0x55555555;
- PINSEL8 = 0x55555555;
- PINSEL9 = (PINSEL9 & 0x0f000000) | 0x50555555;
+ #ifdef LPC24XX_EMC_INIT
+ /* Set pin functions for EMC */
+ PINSEL5 = (PINSEL5 & 0xf000f000) | 0x05550555;
+ PINSEL6 = 0x55555555;
+ PINSEL8 = 0x55555555;
+ PINSEL9 = (PINSEL9 & 0x0f000000) | 0x50555555;
+ #endif
#ifdef LPC24XX_EMC_NUMONYX
/* Static Memory 1 settings */
- bsp_start_memcpy_arm(
+ bsp_start_memcpy(
(int *) EMC_STA_BASE_1,
(const int *) &numonyx,
sizeof(numonyx)
@@ -135,8 +141,10 @@ static void BSP_START_SECTION lpc24xx_init_emc_0(void)
*/
static void BSP_START_SECTION lpc24xx_init_emc_1(void)
{
- /* Use normal memory map */
- EMC_CTRL = CLEAR_FLAG(EMC_CTRL, 0x2);
+ #ifdef LPC24XX_EMC_INIT
+ /* Use normal memory map */
+ EMC_CTRL = CLEAR_FLAG(EMC_CTRL, 0x2);
+ #endif
#ifdef LPC24XX_EMC_MICRON
/* Check if we need to initialize it */
@@ -326,7 +334,13 @@ static void BSP_START_SECTION lpc24xx_init_pll(void)
}
/* Set PLL */
- lpc24xx_set_pll(1, 0, 11, 3);
+ #if LPC24XX_OSCILLATOR_MAIN == 12000000U
+ lpc24xx_set_pll(1, 0, 11, 3);
+ #elif LPC24XX_OSCILLATOR_MAIN == 3686400U
+ lpc24xx_set_pll(1, 0, 47, 5);
+ #else
+ #error "unexpected main oscillator frequency"
+ #endif
}
static void BSP_START_SECTION lpc24xx_clear_bss(void)
@@ -355,9 +369,18 @@ void BSP_START_SECTION bsp_start_hook_1(void)
/* Re-map interrupt vectors to internal RAM */
MEMMAP = SET_MEMMAP_MAP(MEMMAP, 2);
- /* Set memory accelerator module (MAM) */
+ /* Fully enable memory accelerator module functions (MAM) */
MAMCR = 0;
- MAMTIM = 4;
+ #if LPC24XX_CCLK <= 20000000U
+ MAMTIM = 0x1;
+ #elif LPC24XX_CCLK <= 40000000U
+ MAMTIM = 0x2;
+ #elif LPC24XX_CCLK <= 60000000U
+ MAMTIM = 0x3;
+ #else
+ MAMTIM = 0x4;
+ #endif
+ MAMCR = 0x2;
/* Enable fast IO for ports 0 and 1 */
SCS = SET_FLAG(SCS, 0x1);
@@ -377,29 +400,52 @@ void BSP_START_SECTION bsp_start_hook_1(void)
/* Initialize EMC hook 1 */
lpc24xx_init_emc_1();
+ #ifdef LPC24XX_STOP_GPDMA
+ if ((PCONP & PCONP_GPDMA) != 0) {
+ GPDMA_CONFIG = 0;
+ PCONP &= ~PCONP_GPDMA;
+ }
+ #endif
+
+ #ifdef LPC24XX_STOP_ETHERNET
+ if ((PCONP & PCONP_ETHERNET) != 0) {
+ MAC_COMMAND = 0x38;
+ MAC_MAC1 = 0xcf00;
+ MAC_MAC1 = 0;
+ PCONP &= ~PCONP_ETHERNET;
+ }
+ #endif
+
+ #ifdef LPC24XX_STOP_USB
+ if ((PCONP & PCONP_USB) != 0) {
+ OTG_CLK_CTRL = 0;
+ PCONP &= ~PCONP_USB;
+ }
+ #endif
+
/* Copy .text section */
- bsp_start_memcpy_arm(
+ bsp_start_memcpy(
(int *) bsp_section_text_begin,
(const int *) bsp_section_text_load_begin,
(size_t) bsp_section_text_size
);
/* Copy .rodata section */
- bsp_start_memcpy_arm(
+ bsp_start_memcpy(
(int *) bsp_section_rodata_begin,
(const int *) bsp_section_rodata_load_begin,
(size_t) bsp_section_rodata_size
);
/* Copy .data section */
- bsp_start_memcpy_arm(
+ bsp_start_memcpy(
(int *) bsp_section_data_begin,
(const int *) bsp_section_data_load_begin,
(size_t) bsp_section_data_size
);
/* Copy .fast section */
- bsp_start_memcpy_arm(
+ bsp_start_memcpy(
(int *) bsp_section_fast_begin,
(const int *) bsp_section_fast_load_begin,
(size_t) bsp_section_fast_size
diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362 b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362
index 76e2358f2f..3446994f8b 100644
--- a/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362
+++ b/c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds.lpc2362
@@ -48,12 +48,20 @@ 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_ETH);
+REGION_ALIAS ("REGION_DATA", RAM_INT);
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_ETH);
+REGION_ALIAS ("REGION_BSS", RAM_INT);
REGION_ALIAS ("REGION_WORK", RAM_INT);
REGION_ALIAS ("REGION_STACK", RAM_INT);
+lpc24xx_region_heap_0_begin = ORIGIN (RAM_ETH);
+lpc24xx_region_heap_0_size = LENGTH (RAM_ETH);
+lpc24xx_region_heap_0_end = lpc24xx_region_heap_0_begin + lpc24xx_region_heap_0_size;
+
+lpc24xx_region_heap_1_begin = ORIGIN (RAM_USB);
+lpc24xx_region_heap_1_size = LENGTH (RAM_USB);
+lpc24xx_region_heap_1_end = lpc24xx_region_heap_1_begin + lpc24xx_region_heap_1_size;
+
INCLUDE linkcmds.base