]> rtime.felk.cvut.cz Git - sysless.git/commitdiff
LPC178x: LD script files for LPC1788.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Thu, 20 Dec 2012 23:05:06 +0000 (00:05 +0100)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Thu, 20 Dec 2012 23:05:06 +0000 (00:05 +0100)
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
board/arm/lpc178x-common/libs/ldscripts/lpc1788.ld-app [new file with mode: 0644]
board/arm/lpc178x-common/libs/ldscripts/lpc1788.ld-boot [new file with mode: 0644]
board/arm/lpc178x-common/libs/ldscripts/lpc1788.ld-cfg [new file with mode: 0644]
board/arm/lpc178x-common/libs/ldscripts/lpc178x-base.ld-app [new file with mode: 0644]
board/arm/lpc178x-common/libs/ldscripts/lpc178x-base.ld-boot [new file with mode: 0644]

diff --git a/board/arm/lpc178x-common/libs/ldscripts/lpc1788.ld-app b/board/arm/lpc178x-common/libs/ldscripts/lpc1788.ld-app
new file mode 100644 (file)
index 0000000..73320a3
--- /dev/null
@@ -0,0 +1,10 @@
+/***********************************************************************/
+/*                                                                     */
+/*  ROM.ld:  Linker Script File                                        */
+/*                                                                     */
+/***********************************************************************/
+
+INCLUDE "lpc1788.ld-cfg"
+
+INCLUDE "lpc178x-base.ld-app"
+
diff --git a/board/arm/lpc178x-common/libs/ldscripts/lpc1788.ld-boot b/board/arm/lpc178x-common/libs/ldscripts/lpc1788.ld-boot
new file mode 100644 (file)
index 0000000..e4fddc2
--- /dev/null
@@ -0,0 +1,9 @@
+/***********************************************************************/
+/*                                                                     */
+/*  ROM.ld:  Linker Script File                                        */
+/*                                                                     */
+/***********************************************************************/
+
+INCLUDE "lpc1788.ld-cfg"
+
+INCLUDE "lpc178x-base.ld-boot"
diff --git a/board/arm/lpc178x-common/libs/ldscripts/lpc1788.ld-cfg b/board/arm/lpc178x-common/libs/ldscripts/lpc1788.ld-cfg
new file mode 100644 (file)
index 0000000..2720623
--- /dev/null
@@ -0,0 +1,26 @@
+
+KEYVAL_PAGE_LEN = 0x00001000;
+
+PROVIDE( __bbconf_pt_addr = 0 );
+
+MEMORY
+{
+        /* LPC1768 : 512 ROM + 64k SRAM + 16k SRAM + 16k SRAM */
+        /*--------------------------------------------------- */
+
+
+        /* Main ROM region - 512k for LPC1788 */
+        FLASHBOOT (rx) : ORIGIN = 0x00000000, LENGTH = 0x00007000
+        KEYVAL (rx) : ORIGIN = 0x00007000, LENGTH = 0x00002000
+        FLASHAPP (rx) : ORIGIN = 0x00009000, LENGTH = 0x00077000
+
+        /* local static RAM - 64k for LPC1788 */
+        IRAM0 (rwx) : ORIGIN = 0x10000000, LENGTH = 64k
+
+        /* stack location */
+        STACK (rw) : ORIGIN = 0x10000000 + 0x00007FE0 - 4, LENGTH = 4
+
+        /* AHB SRAM - 32k for LPC1788 - often used for USB */
+        IRAM1 (rwx) : ORIGIN = 0x20000000, LENGTH = 32k
+}
+
diff --git a/board/arm/lpc178x-common/libs/ldscripts/lpc178x-base.ld-app b/board/arm/lpc178x-common/libs/ldscripts/lpc178x-base.ld-app
new file mode 100644 (file)
index 0000000..307b492
--- /dev/null
@@ -0,0 +1,182 @@
+/***********************************************************************/
+/*                                                                     */
+/*  ROM.ld:  Linker Script File                                        */
+/*                                                                     */
+/***********************************************************************/
+
+ENTRY(g_pfnVectors)
+
+PROVIDE (_setup_board = 0);
+PROVIDE (__bbconf_pt_magic = 0xd1ab46d6);
+
+/* SECTION command : Define mapping of input sections */
+/* into output sections. */
+
+SECTIONS
+{
+       /******************************************/
+       /* code section */
+
+        /* "normal" code */
+       
+       .text :
+       {
+               KEEP(*(.isr_vector .isr_vector.*))
+               *(.text .text.*)
+               *(.gnu.linkonce.t.*)
+               *(.glue_7)
+               *(.glue_7t)
+               *(.gcc_except_table)
+               *(.rodata .rodata*)
+               *(.gnu.linkonce.r.*)
+       } >FLASHAPP
+
+       /******************************************/
+       /* .ctors .dtors are used for c++ constructors/destructors */
+       .ctors :
+       {
+               . = ALIGN(4);
+               PROVIDE(__ctors_start = .);
+               KEEP(*(SORT(.ctors.*)))
+               KEEP(*(.ctors))
+               PROVIDE(__ctors_end = .);
+       } >FLASHAPP
+
+       .dtors :
+       {
+               . = ALIGN(4);
+               PROVIDE(__dtors_start = .);
+               KEEP(*(SORT(.dtors.*)))
+               KEEP(*(.dtors))
+               PROVIDE(__dtors_end = .);
+
+               . = ALIGN(4);
+               /* End Of .text section */
+               _etext = .;
+                _sifastcode = .;
+       } >FLASHAPP
+       
+
+        .keyval :
+        {
+                PROVIDE (_keyval_start = .);
+                PROVIDE (_keyval_page_len = KEYVAL_PAGE_LEN );
+        }> KEYVAL
+
+        .app :
+        {
+                PROVIDE (_mem_app_start = . );
+          } > FLASHAPP
+
+        .irqarea (NOLOAD):
+        {
+                . = ALIGN (256);
+                *(.irqarea .irqarea.*)
+
+        } >IRAM0
+
+       /**************************************************/
+        /* fastcode - copied at startup & executed in RAM */
+
+        .fastcode :
+        {
+          . = ALIGN (4);
+          _sfastcode = . ;
+
+          *(.glue_7t) *(.glue_7)
+          *(.fastcode)
+          
+          /* add other modules here ... */
+
+          . = ALIGN (4);
+          _efastcode = . ;
+          _sidata = .;
+        } >IRAM0 AT>FLASHAPP
+
+       /******************************************/
+       /* This used for USB RAM section */
+       .usbram (NOLOAD):
+       {
+               _usbram = . ;
+               *(.usbram)
+               . = ALIGN(4);
+               _eusbram = . ;
+               _usbram_end = . ;
+       } > IRAM1
+
+        /******************************************/
+       /* data section */
+       .data :
+       {
+               _sidata = LOADADDR (.data);
+               . = ALIGN(4);
+               _sdata = .;
+
+               *(vtable vtable.*)
+               *(.data .data.*)
+               *(.gnu.linkonce.d*)
+
+               . = ALIGN(4);
+               _edata = . ;
+       } >IRAM0 AT>FLASHAPP
+
+       /******************************************/
+       /* For no-init variables section */
+       .bss (NOLOAD) :
+       {
+               . = ALIGN(4);
+               _sbss = . ;
+
+               *(.bss .bss.*)
+               *(.gnu.linkonce.b*)
+               *(COMMON)
+
+               . = ALIGN(4);
+               _ebss = . ;
+
+               . = ALIGN(4);
+               _end = . ;
+               PROVIDE (end = .);
+       } >IRAM0
+
+        .stack :
+        {
+             _stack = .;
+        } >STACK
+
+
+       /******************************************/
+       /* Stabs debugging sections.  */
+       .stab          0 : { *(.stab) }
+       .stabstr       0 : { *(.stabstr) }
+       .stab.excl     0 : { *(.stab.excl) }
+       .stab.exclstr  0 : { *(.stab.exclstr) }
+       .stab.index    0 : { *(.stab.index) }
+       .stab.indexstr 0 : { *(.stab.indexstr) }
+       /* .comment       0 : { *(.comment) } */
+       /* DWARF debug sections.
+        Symbols in the DWARF debugging sections are relative to the beginning
+        of the section so we begin them at 0.  */
+       /* DWARF 1 */
+       .debug          0 : { *(.debug) }
+       .line           0 : { *(.line) }
+       /* GNU DWARF 1 extensions */
+       .debug_srcinfo  0 : { *(.debug_srcinfo) }
+       .debug_sfnames  0 : { *(.debug_sfnames) }
+       /* DWARF 1.1 and DWARF 2 */
+       .debug_aranges  0 : { *(.debug_aranges) }
+       .debug_pubnames 0 : { *(.debug_pubnames) }
+       /* DWARF 2 */
+       .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+       .debug_abbrev   0 : { *(.debug_abbrev) }
+       .debug_line     0 : { *(.debug_line) }
+       .debug_frame    0 : { *(.debug_frame) }
+       .debug_str      0 : { *(.debug_str) }
+       .debug_loc      0 : { *(.debug_loc) }
+       .debug_macinfo  0 : { *(.debug_macinfo) }
+       /* SGI/MIPS DWARF 2 extensions */
+       .debug_weaknames 0 : { *(.debug_weaknames) }
+       .debug_funcnames 0 : { *(.debug_funcnames) }
+       .debug_typenames 0 : { *(.debug_typenames) }
+       .debug_varnames  0 : { *(.debug_varnames) }
+}
diff --git a/board/arm/lpc178x-common/libs/ldscripts/lpc178x-base.ld-boot b/board/arm/lpc178x-common/libs/ldscripts/lpc178x-base.ld-boot
new file mode 100644 (file)
index 0000000..6d80128
--- /dev/null
@@ -0,0 +1,182 @@
+/***********************************************************************/
+/*                                                                     */
+/*  ROM.ld:  Linker Script File                                        */
+/*                                                                     */
+/***********************************************************************/
+
+ENTRY(g_pfnVectors)
+
+PROVIDE (_setup_board = 0);
+PROVIDE (__bbconf_pt_magic = 0xd1ab46d6);
+
+/* SECTION command : Define mapping of input sections */
+/* into output sections. */
+
+SECTIONS
+{
+       /******************************************/
+       /* code section */
+
+        /* "normal" code */
+       
+       .text :
+       {
+               KEEP(*(.isr_vector .isr_vector.*))
+               *(.text .text.*)
+               *(.gnu.linkonce.t.*)
+               *(.glue_7)
+               *(.glue_7t)
+               *(.gcc_except_table)
+               *(.rodata .rodata*)
+               *(.gnu.linkonce.r.*)
+       } >FLASHBOOT
+
+       /******************************************/
+       /* .ctors .dtors are used for c++ constructors/destructors */
+       .ctors :
+       {
+               . = ALIGN(4);
+               PROVIDE(__ctors_start = .);
+               KEEP(*(SORT(.ctors.*)))
+               KEEP(*(.ctors))
+               PROVIDE(__ctors_end = .);
+       } >FLASHBOOT
+
+       .dtors :
+       {
+               . = ALIGN(4);
+               PROVIDE(__dtors_start = .);
+               KEEP(*(SORT(.dtors.*)))
+               KEEP(*(.dtors))
+               PROVIDE(__dtors_end = .);
+
+               . = ALIGN(4);
+               /* End Of .text section */
+               _etext = .;
+                _sifastcode = .;
+       } >FLASHBOOT
+       
+
+        .keyval :
+        {
+                PROVIDE (_keyval_start = .);
+                PROVIDE (_keyval_page_len = KEYVAL_PAGE_LEN );
+        }> KEYVAL
+
+        .app :
+        {
+                PROVIDE (_mem_app_start = . );
+          } > FLASHAPP
+
+        .irqarea (NOLOAD):
+        {
+                . = ALIGN (256);
+                *(.irqarea .irqarea.*)
+
+        } >IRAM0
+
+       /**************************************************/
+        /* fastcode - copied at startup & executed in RAM */
+
+        .fastcode :
+        {
+          . = ALIGN (4);
+          _sfastcode = . ;
+
+          *(.glue_7t) *(.glue_7)
+          *(.fastcode)
+          
+          /* add other modules here ... */
+
+          . = ALIGN (4);
+          _efastcode = . ;
+          _sidata = .;
+        } >IRAM0 AT>FLASHBOOT
+
+       /******************************************/
+       /* This used for USB RAM section */
+       .usbram (NOLOAD):
+       {
+               _usbram = . ;
+               *(.usbram)
+               . = ALIGN(4);
+               _eusbram = . ;
+               _usbram_end = . ;
+       } > IRAM1
+
+        /******************************************/
+       /* data section */
+       .data :
+       {
+               _sidata = LOADADDR (.data);
+               . = ALIGN(4);
+               _sdata = .;
+
+               *(vtable vtable.*)
+               *(.data .data.*)
+               *(.gnu.linkonce.d*)
+
+               . = ALIGN(4);
+               _edata = . ;
+       } >IRAM0 AT>FLASHBOOT
+
+       /******************************************/
+       /* For no-init variables section */
+       .bss (NOLOAD) :
+       {
+               . = ALIGN(4);
+               _sbss = . ;
+
+               *(.bss .bss.*)
+               *(.gnu.linkonce.b*)
+               *(COMMON)
+
+               . = ALIGN(4);
+               _ebss = . ;
+
+               . = ALIGN(4);
+               _end = . ;
+               PROVIDE (end = .);
+       } >IRAM0
+
+        .stack :
+        {
+             _stack = .;
+        } >STACK
+
+
+       /******************************************/
+       /* Stabs debugging sections.  */
+       .stab          0 : { *(.stab) }
+       .stabstr       0 : { *(.stabstr) }
+       .stab.excl     0 : { *(.stab.excl) }
+       .stab.exclstr  0 : { *(.stab.exclstr) }
+       .stab.index    0 : { *(.stab.index) }
+       .stab.indexstr 0 : { *(.stab.indexstr) }
+       /* .comment       0 : { *(.comment) } */
+       /* DWARF debug sections.
+        Symbols in the DWARF debugging sections are relative to the beginning
+        of the section so we begin them at 0.  */
+       /* DWARF 1 */
+       .debug          0 : { *(.debug) }
+       .line           0 : { *(.line) }
+       /* GNU DWARF 1 extensions */
+       .debug_srcinfo  0 : { *(.debug_srcinfo) }
+       .debug_sfnames  0 : { *(.debug_sfnames) }
+       /* DWARF 1.1 and DWARF 2 */
+       .debug_aranges  0 : { *(.debug_aranges) }
+       .debug_pubnames 0 : { *(.debug_pubnames) }
+       /* DWARF 2 */
+       .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+       .debug_abbrev   0 : { *(.debug_abbrev) }
+       .debug_line     0 : { *(.debug_line) }
+       .debug_frame    0 : { *(.debug_frame) }
+       .debug_str      0 : { *(.debug_str) }
+       .debug_loc      0 : { *(.debug_loc) }
+       .debug_macinfo  0 : { *(.debug_macinfo) }
+       /* SGI/MIPS DWARF 2 extensions */
+       .debug_weaknames 0 : { *(.debug_weaknames) }
+       .debug_funcnames 0 : { *(.debug_funcnames) }
+       .debug_typenames 0 : { *(.debug_typenames) }
+       .debug_varnames  0 : { *(.debug_varnames) }
+}