[LPC11U24] Take advantage of the full 8K of RAM

The linker command scripts/startup files used only 4K of RAM on this target.
pull/17/head
Bogdan Marinescu 2013-07-17 15:29:40 +03:00
parent 0c33d40fbb
commit dd70336886
7 changed files with 22 additions and 14 deletions

View File

@ -6,9 +6,12 @@ LR_IROM1 0x00000000 0x8000 { ; load region size_region (32k)
.ANY (+RO) .ANY (+RO)
} }
; 8_byte_aligned(48 vect * 4 bytes) = 8_byte_aligned(0xC0) = 0xC0 ; 8_byte_aligned(48 vect * 4 bytes) = 8_byte_aligned(0xC0) = 0xC0
; 8KB - 0xC0 = 0xF40 ; 8KB - 0xC0 = 0x1F40
RW_IRAM1 0x100000C0 0xF40 { RW_IRAM1 0x100000C0 0x1F40 {
.ANY (+RW +ZI) .ANY (+RW +ZI)
} }
RW_IRAM2 0x20004000 0x800 { ; RW data, USB RAM
.ANY (USBRAM)
}
} }

View File

@ -25,7 +25,7 @@ Stack_Size EQU 0x00000400
EXPORT __initial_sp EXPORT __initial_sp
Stack_Mem SPACE Stack_Size 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 Heap_Size EQU 0x00000000

View File

@ -6,9 +6,12 @@ LR_IROM1 0x00000000 0x8000 { ; load region size_region (32k)
.ANY (+RO) .ANY (+RO)
} }
; 8_byte_aligned(48 vect * 4 bytes) = 8_byte_aligned(0xC0) = 0xC0 ; 8_byte_aligned(48 vect * 4 bytes) = 8_byte_aligned(0xC0) = 0xC0
; 8KB - 0xC0 = 0xF40 ; 8KB - 0xC0 = 0x1F40
RW_IRAM1 0x100000C0 0xF40 { RW_IRAM1 0x100000C0 0x1F40 {
.ANY (+RW +ZI) .ANY (+RW +ZI)
} }
RW_IRAM2 0x20004000 0x800 { ; RW data, USB RAM
.ANY (USBRAM)
}
} }

View File

@ -19,7 +19,7 @@
; * ; *
; *****************************************************************************/ ; *****************************************************************************/
__initial_sp EQU 0x10001000 ; Top of RAM from LPC11U __initial_sp EQU 0x10002000 ; Top of RAM from LPC11U
PRESERVE8 PRESERVE8
THUMB THUMB

View File

@ -4,7 +4,8 @@
MEMORY MEMORY
{ {
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K 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 /* Linker script to place sections and symbol values. Should be used together

View File

@ -7,12 +7,12 @@ MEMORY
{ {
/* Define each memory region */ /* Define each memory region */
MFlash32 (rx) : ORIGIN = 0x0, LENGTH = 0x8000 /* 32k */ 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 */ RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2k */
} }
/* Define a symbol for the top of each memory region */ /* Define a symbol for the top of each memory region */
__top_MFlash32 = 0x0 + 0x8000; __top_MFlash32 = 0x0 + 0x8000;
__top_RamLoc4 = 0x10000000 + 0x1000; __top_RamLoc8 = 0x10000000 + 0x2000;
__top_RamUsb2 = 0x20004000 + 0x800; __top_RamUsb2 = 0x20004000 + 0x800;
ENTRY(ResetISR) ENTRY(ResetISR)
@ -116,7 +116,7 @@ SECTIONS
.uninit_RESERVED : ALIGN(4) .uninit_RESERVED : ALIGN(4)
{ {
KEEP(*(.bss.$RESERVED*)) KEEP(*(.bss.$RESERVED*))
} > RamLoc4 } > RamLoc8
.data : ALIGN(4) .data : ALIGN(4)
{ {
@ -126,7 +126,7 @@ SECTIONS
*(.data*) *(.data*)
. = ALIGN(4) ; . = ALIGN(4) ;
_edata = .; _edata = .;
} > RamLoc4 AT>MFlash32 } > RamLoc8 AT>MFlash32
.bss_RAM2 : ALIGN(4) .bss_RAM2 : ALIGN(4)
@ -145,8 +145,8 @@ SECTIONS
. = ALIGN(4) ; . = ALIGN(4) ;
_ebss = .; _ebss = .;
PROVIDE(end = .); PROVIDE(end = .);
} > RamLoc4 } > RamLoc8
PROVIDE(_pvHeapStart = .); PROVIDE(_pvHeapStart = .);
PROVIDE(_vStackTop = __top_RamLoc4 - 0); PROVIDE(_vStackTop = __top_RamLoc8 - 0);
} }

View File

@ -27,7 +27,8 @@ MEMORY
{ {
rom (rx) : ORIGIN = 0x00000000, LENGTH = 32K 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 /* These force the linker to search for particular symbols from