From: asterix Date: Thu, 12 Aug 2010 15:54:22 +0000 (+0000) Subject: Refactor and reorder ld script for cortex-m3. X-Git-Tag: 2.6.0~212 X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;h=e246ec67f269cbe2925e91a6900b8a4d746ded8f;p=bertos.git Refactor and reorder ld script for cortex-m3. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@4178 38d2e660-2303-0410-9eaa-f027e97ec537 --- diff --git a/bertos/cpu/cortex-m3/scripts/cortex-m3_ram.ld b/bertos/cpu/cortex-m3/scripts/cortex-m3_ram.ld new file mode 100644 index 00000000..df757988 --- /dev/null +++ b/bertos/cpu/cortex-m3/scripts/cortex-m3_ram.ld @@ -0,0 +1,109 @@ +/** + * \file + * + * + * \author Manuele Fanelli + * + * \brief Script for Cortex M3 family processors. + * + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +OUTPUT_ARCH(arm) + +/* + * Define stack size here + */ +STACK_SIZE = 0x1000; + +/* + * Allocate section memory + */ +SECTIONS +{ + .text : + { + KEEP(*(.vectors)); + . = ALIGN (4); + KEEP(*(.init)); + . = ALIGN (4); + *(.rodata .rodata.*); + . = ALIGN (4); + *(.text .text.*); + . = ALIGN (4); + *(.glue_7t); + . = ALIGN(4); + *(.glue_7); + . = ALIGN(4); + } > ram + + __text_end = .; + PROVIDE (__text_end = .); + + .data : AT (__text_end) + { + . = ALIGN (0x400); + PROVIDE (__data_start = .); + *(vtable) + *(.data .data.*) + . = ALIGN (4); + _edata = .; + PROVIDE (__data_end = .); + } > ram + + .bss : + { + PROVIDE (__bss_start = .); + *(.bss .bss.*) + . = ALIGN(4); + *(COMMON) + . = ALIGN(4); + PROVIDE (__bss_end = .); + } > ram + + /* + * Allocated stack at the end of bss section. + * Data heap is allocate at end of stack. + */ + PROVIDE (__msp_start = .); + . = ALIGN(8); + . += STACK_SIZE; + PROVIDE (__msp_end = .); + + PROVIDE (__psp_start = .); + . = ALIGN(8); + . += STACK_SIZE; + PROVIDE (__psp_end = .); + + PROVIDE (__heap_start = .); + . = ALIGN(8); +} + diff --git a/bertos/cpu/cortex-m3/scripts/cortex-m3_rom.ld b/bertos/cpu/cortex-m3/scripts/cortex-m3_rom.ld new file mode 100644 index 00000000..c488d06f --- /dev/null +++ b/bertos/cpu/cortex-m3/scripts/cortex-m3_rom.ld @@ -0,0 +1,107 @@ +/** + * \file + * + * + * \brief Script Cortex M3 family processors. + * + * \author Daniele Basile + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +OUTPUT_ARCH(arm) + +/* + * Define stack size here + */ +STACK_SIZE = 0x1000; + +/* + * Allocate section memory + */ +SECTIONS +{ + .text : + { + KEEP(*(.vectors)); + . = ALIGN (4); + KEEP(*(.init)); + . = ALIGN (4); + *(.rodata .rodata.*); + . = ALIGN (4); + *(.text .text.*); + . = ALIGN (4); + *(.glue_7t); + . = ALIGN(4); + *(.glue_7); + . = ALIGN(4); + } > rom + + __text_end = .; + PROVIDE (__text_end = .); + + .data : AT (__text_end) + { + . = ALIGN (0x400); + PROVIDE (__data_start = .); + *(vtable) + *(.data .data.*) + . = ALIGN (4); + _edata = .; + PROVIDE (__data_end = .); + } > ram + + .bss : + { + PROVIDE (__bss_start = .); + *(.bss .bss.*) + . = ALIGN(4); + *(COMMON) + . = ALIGN(4); + PROVIDE (__bss_end = .); + } > ram + + /* + * Allocated stack at the end of bss section. + * Data heap is allocate at end of stack. + */ + PROVIDE (__msp_start = .); + . = ALIGN(8); + . += STACK_SIZE; + PROVIDE (__msp_end = .); + + PROVIDE (__psp_start = .); + . = ALIGN(8); + . += STACK_SIZE; + PROVIDE (__psp_end = .); + + PROVIDE (__heap_start = .); + . = ALIGN(8); +} diff --git a/bertos/cpu/cortex-m3/scripts/lm3s1968_ram.ld b/bertos/cpu/cortex-m3/scripts/lm3s1968_ram.ld index 2bd20d96..1afe5643 100644 --- a/bertos/cpu/cortex-m3/scripts/lm3s1968_ram.ld +++ b/bertos/cpu/cortex-m3/scripts/lm3s1968_ram.ld @@ -36,108 +36,14 @@ * */ - -SEARCH_DIR(.) -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") -OUTPUT_ARCH(arm) - /* * Define memory configuration for LM3S1968 board */ MEMORY { - rom(rx) : org = 0x00000000, len = 256k - ram(rwx) : org = 0x20000000, len = 64k + rom(rx) : org = 0x00000000, len = 256k + ram(rwx) : org = 0x20000000, len = 64k } - -/* - * Define stack size here - */ -FIQ_STACK_SIZE = 0x0100; -IRQ_STACK_SIZE = 0x0100; -ABT_STACK_SIZE = 0x0100; -UND_STACK_SIZE = 0x0100; -SVC_STACK_SIZE = 0x0400; - -/* - * Allocate section memory - */ -SECTIONS -{ - .text : - { - KEEP(*(.vectors)); - . = ALIGN (4); - KEEP(*(.init)); - . = ALIGN (4); - *(.rodata .rodata.*); - . = ALIGN (4); - *(.text .text.*); - . = ALIGN (4); - *(.glue_7t); - . = ALIGN(4); - *(.glue_7); - . = ALIGN(4); - } > ram - - _etext = .; - PROVIDE (__etext = .); - - .data : AT (_etext) - { - PROVIDE (__data_start = .); - *(vtable) - . = ALIGN (0x400); - *(.data .data.*) - . = ALIGN (4); - _edata = .; - PROVIDE (__data_end = .); - } > ram - - .bss : - { - PROVIDE (__bss_start = .); - *(.bss .bss.*) - . = ALIGN(4); - *(COMMON) - . = ALIGN(4); - PROVIDE (__bss_end = .); - } > ram - - /* - * Allocated stack at the end of bss section. - * Data heap is allocate at end of stack. - */ - PROVIDE (__stack_start = .); - - PROVIDE (__stack_fiq_start = .); - . += FIQ_STACK_SIZE; - . = ALIGN(4); - PROVIDE (__stack_fiq_end = .); - - PROVIDE (__stack_irq_start = .); - . += IRQ_STACK_SIZE; - . = ALIGN(4); - PROVIDE (__stack_irq_end = .); - - PROVIDE (__stack_abt_start = .); - . += ABT_STACK_SIZE; - . = ALIGN(4); - PROVIDE (__stack_abt_end = .); - - PROVIDE (__stack_und_start = .); - . += UND_STACK_SIZE; - . = ALIGN(4); - PROVIDE (__stack_und_end = .); - - PROVIDE (__stack_svc_start = .); - . += SVC_STACK_SIZE; - . = ALIGN(4); - PROVIDE (__stack_svc_end = .); - - PROVIDE (__stack_end = .); - - PROVIDE (__heap_start = .); -} +INCLUDE "bertos/cpu/cortex-m3/scripts/cortex-m3_ram.ld" diff --git a/bertos/cpu/cortex-m3/scripts/lm3s1968_rom.ld b/bertos/cpu/cortex-m3/scripts/lm3s1968_rom.ld index b4ed93a3..8a8cefe2 100644 --- a/bertos/cpu/cortex-m3/scripts/lm3s1968_rom.ld +++ b/bertos/cpu/cortex-m3/scripts/lm3s1968_rom.ld @@ -36,83 +36,14 @@ * */ -SEARCH_DIR(.) -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") -OUTPUT_ARCH(arm) - /* * Define memory configuration for LM3S1968 board */ MEMORY { - rom(rx) : org = 0x00000000, len = 256k - ram(rwx) : org = 0x20000000, len = 64k + rom(rx) : org = 0x00000000, len = 256k + ram(rwx) : org = 0x20000000, len = 64k } -/* - * Define stack size here - */ -STACK_SIZE = 0x1000; - -/* - * Allocate section memory - */ -SECTIONS -{ - .text : - { - KEEP(*(.vectors)); - . = ALIGN (4); - KEEP(*(.init)); - . = ALIGN (4); - *(.rodata .rodata.*); - . = ALIGN (4); - *(.text .text.*); - . = ALIGN (4); - *(.glue_7t); - . = ALIGN(4); - *(.glue_7); - . = ALIGN(4); - } > rom +INCLUDE "bertos/cpu/cortex-m3/scripts/cortex-m3_rom.ld" - __text_end = .; - PROVIDE (__text_end = .); - - .data : AT (__text_end) - { - . = ALIGN (0x400); - PROVIDE (__data_start = .); - *(vtable) - *(.data .data.*) - . = ALIGN (4); - _edata = .; - PROVIDE (__data_end = .); - } > ram - - .bss : - { - PROVIDE (__bss_start = .); - *(.bss .bss.*) - . = ALIGN(4); - *(COMMON) - . = ALIGN(4); - PROVIDE (__bss_end = .); - } > ram - - /* - * Allocated stack at the end of bss section. - * Data heap is allocate at end of stack. - */ - PROVIDE (__msp_start = .); - . = ALIGN(8); - . += STACK_SIZE; - PROVIDE (__msp_end = .); - - PROVIDE (__psp_start = .); - . = ALIGN(8); - . += STACK_SIZE; - PROVIDE (__psp_end = .); - - PROVIDE (__heap_start = .); - . = ALIGN(8); -} diff --git a/bertos/cpu/cortex-m3/scripts/lm3s8962_ram.ld b/bertos/cpu/cortex-m3/scripts/lm3s8962_ram.ld index 87d9a309..54bef074 100644 --- a/bertos/cpu/cortex-m3/scripts/lm3s8962_ram.ld +++ b/bertos/cpu/cortex-m3/scripts/lm3s8962_ram.ld @@ -35,4 +35,14 @@ * \author Andrea Righi */ -INCLUDE bertos/cpu/cortex-m3/scripts/lm3s1968_ram.ld +/* + * Define memory configuration for LM3S1968 board + */ +MEMORY +{ + rom(rx) : org = 0x00000000, len = 256k + ram(rwx) : org = 0x20000000, len = 64k +} + +INCLUDE "bertos/cpu/cortex-m3/scripts/cortex-m3_rom.ld" + diff --git a/bertos/cpu/cortex-m3/scripts/lm3s8962_rom.ld b/bertos/cpu/cortex-m3/scripts/lm3s8962_rom.ld index 03a497f7..93ef1b1a 100644 --- a/bertos/cpu/cortex-m3/scripts/lm3s8962_rom.ld +++ b/bertos/cpu/cortex-m3/scripts/lm3s8962_rom.ld @@ -35,4 +35,13 @@ * \author Andrea Righi */ -INCLUDE bertos/cpu/cortex-m3/scripts/lm3s1968_rom.ld +/*/ + * Define memory configuration for LM3S8962 board + */ +MEMORY +{ + rom(rx) : org = 0x00000000, len = 256k + ram(rwx) : org = 0x20000000, len = 64k +} + +INCLUDE "bertos/cpu/cortex-m3/scripts/cortex-m3_rom.ld" diff --git a/bertos/cpu/cortex-m3/scripts/stm32f103rb_rom.ld b/bertos/cpu/cortex-m3/scripts/stm32f103rb_rom.ld index 334d8118..438bb615 100644 --- a/bertos/cpu/cortex-m3/scripts/stm32f103rb_rom.ld +++ b/bertos/cpu/cortex-m3/scripts/stm32f103rb_rom.ld @@ -36,10 +36,6 @@ * */ -SEARCH_DIR(.) -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") -OUTPUT_ARCH(arm) - /* * Define memory configuration for STM32F103R8 */ @@ -49,70 +45,5 @@ MEMORY ram(rwx) : org = 0x20000000, len = 20k } -/* - * Define stack size here - */ -STACK_SIZE = 0x1000; - -/* - * Allocate section memory - */ -SECTIONS -{ - .text : - { - KEEP(*(.vectors)); - . = ALIGN (4); - KEEP(*(.init)); - . = ALIGN (4); - *(.rodata .rodata.*); - . = ALIGN (4); - *(.text .text.*); - . = ALIGN (4); - *(.glue_7t); - . = ALIGN(4); - *(.glue_7); - . = ALIGN(4); - } > rom +INCLUDE "bertos/cpu/cortex-m3/scripts/cortex-m3_rom.ld" - __text_end = .; - PROVIDE (__text_end = .); - - .data : AT (__text_end) - { - PROVIDE (__data_start = .); - . = ALIGN (0x400); - *(vtable) - *(.data .data.*) - . = ALIGN (4); - _edata = .; - PROVIDE (__data_end = .); - } > ram - - .bss : - { - PROVIDE (__bss_start = .); - *(.bss .bss.*) - . = ALIGN(4); - *(COMMON) - . = ALIGN(4); - PROVIDE (__bss_end = .); - } > ram - - /* - * Allocated stack at the end of bss section. - * Data heap is allocate at end of stack. - */ - PROVIDE (__msp_start = .); - . = ALIGN(8); - . += STACK_SIZE; - PROVIDE (__msp_end = .); - - PROVIDE (__psp_start = .); - . = ALIGN(8); - . += STACK_SIZE; - PROVIDE (__psp_end = .); - - PROVIDE (__heap_start = .); - . = ALIGN(8); -}