From dd7033688607ba650bbfd3bf639a56dfed654bb7 Mon Sep 17 00:00:00 2001 From: Bogdan Marinescu Date: Wed, 17 Jul 2013 15:29:40 +0300 Subject: [PATCH] [LPC11U24] Take advantage of the full 8K of RAM The linker command scripts/startup files used only 4K of RAM on this target. --- .../TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/LPC11U24.sct | 7 +++++-- .../TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s | 2 +- .../TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/LPC11U24.sct | 7 +++++-- .../TOOLCHAIN_ARM_STD/startup_LPC11xx.s | 2 +- .../TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/LPC11U24.ld | 3 ++- .../TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/LPC11U24.ld | 12 ++++++------ .../TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/LPC11U24.ld | 3 ++- 7 files changed, 22 insertions(+), 14 deletions(-) diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/LPC11U24.sct b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/LPC11U24.sct index 0a7772d0c3..093772cc06 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/LPC11U24.sct +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/LPC11U24.sct @@ -6,9 +6,12 @@ LR_IROM1 0x00000000 0x8000 { ; load region size_region (32k) .ANY (+RO) } ; 8_byte_aligned(48 vect * 4 bytes) = 8_byte_aligned(0xC0) = 0xC0 - ; 8KB - 0xC0 = 0xF40 - RW_IRAM1 0x100000C0 0xF40 { + ; 8KB - 0xC0 = 0x1F40 + RW_IRAM1 0x100000C0 0x1F40 { .ANY (+RW +ZI) } + RW_IRAM2 0x20004000 0x800 { ; RW data, USB RAM + .ANY (USBRAM) + } } diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s index d1e40b6af5..0d0cd2f8f7 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_MICRO/startup_LPC11xx.s @@ -25,7 +25,7 @@ Stack_Size EQU 0x00000400 EXPORT __initial_sp Stack_Mem SPACE Stack_Size -__initial_sp EQU 0x10001000 ; Top of RAM from LPC11U +__initial_sp EQU 0x10002000 ; Top of RAM from LPC11U Heap_Size EQU 0x00000000 diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/LPC11U24.sct b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/LPC11U24.sct index 0a7772d0c3..093772cc06 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/LPC11U24.sct +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/LPC11U24.sct @@ -6,9 +6,12 @@ LR_IROM1 0x00000000 0x8000 { ; load region size_region (32k) .ANY (+RO) } ; 8_byte_aligned(48 vect * 4 bytes) = 8_byte_aligned(0xC0) = 0xC0 - ; 8KB - 0xC0 = 0xF40 - RW_IRAM1 0x100000C0 0xF40 { + ; 8KB - 0xC0 = 0x1F40 + RW_IRAM1 0x100000C0 0x1F40 { .ANY (+RW +ZI) } + RW_IRAM2 0x20004000 0x800 { ; RW data, USB RAM + .ANY (USBRAM) + } } diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s index b25009ff6c..bcc3899bbb 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_ARM_STD/startup_LPC11xx.s @@ -19,7 +19,7 @@ ; * ; *****************************************************************************/ -__initial_sp EQU 0x10001000 ; Top of RAM from LPC11U +__initial_sp EQU 0x10002000 ; Top of RAM from LPC11U PRESERVE8 THUMB diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/LPC11U24.ld b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/LPC11U24.ld index eb035c8ffb..1074aec32b 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/LPC11U24.ld +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/LPC11U24.ld @@ -4,7 +4,8 @@ MEMORY { FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K - RAM (rwx) : ORIGIN = 0x100000C0, LENGTH = 0xF40 + RAM (rwx) : ORIGIN = 0x100000C0, LENGTH = 0x1F40 + USB_RAM (rwx): ORIGIN = 0x20004000, LENGTH = 0x800 } /* Linker script to place sections and symbol values. Should be used together diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/LPC11U24.ld b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/LPC11U24.ld index 3ea5b6a2d3..b0dd012dd7 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/LPC11U24.ld +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CR/LPC11U24.ld @@ -7,12 +7,12 @@ MEMORY { /* Define each memory region */ MFlash32 (rx) : ORIGIN = 0x0, LENGTH = 0x8000 /* 32k */ - RamLoc4 (rwx) : ORIGIN = 0x100000C0, LENGTH = 0xF40 /* 4k */ + RamLoc8 (rwx) : ORIGIN = 0x100000C0, LENGTH = 0x1F40 /* 8k */ RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2k */ } /* Define a symbol for the top of each memory region */ __top_MFlash32 = 0x0 + 0x8000; - __top_RamLoc4 = 0x10000000 + 0x1000; + __top_RamLoc8 = 0x10000000 + 0x2000; __top_RamUsb2 = 0x20004000 + 0x800; ENTRY(ResetISR) @@ -116,7 +116,7 @@ SECTIONS .uninit_RESERVED : ALIGN(4) { KEEP(*(.bss.$RESERVED*)) - } > RamLoc4 + } > RamLoc8 .data : ALIGN(4) { @@ -126,7 +126,7 @@ SECTIONS *(.data*) . = ALIGN(4) ; _edata = .; - } > RamLoc4 AT>MFlash32 + } > RamLoc8 AT>MFlash32 .bss_RAM2 : ALIGN(4) @@ -145,8 +145,8 @@ SECTIONS . = ALIGN(4) ; _ebss = .; PROVIDE(end = .); - } > RamLoc4 + } > RamLoc8 PROVIDE(_pvHeapStart = .); - PROVIDE(_vStackTop = __top_RamLoc4 - 0); + PROVIDE(_vStackTop = __top_RamLoc8 - 0); } diff --git a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/LPC11U24.ld b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/LPC11U24.ld index dd5b73d31f..6cbc461f79 100644 --- a/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/LPC11U24.ld +++ b/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_CS/LPC11U24.ld @@ -27,7 +27,8 @@ MEMORY { rom (rx) : ORIGIN = 0x00000000, LENGTH = 32K - ram (rwx) : ORIGIN = 0x100000C0, LENGTH = 0xF40 + ram (rwx) : ORIGIN = 0x100000C0, LENGTH = 0x1F40 + usb_ram (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 } /* These force the linker to search for particular symbols from