aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/ARM7-AT91SAM7X-GCC/ch.ld35
-rw-r--r--demos/ARM7-AT91SAM7X-LWIP-GCC/ch.ld35
-rw-r--r--demos/ARM7-AT91SAM7X-UIP-GCC/ch.ld35
-rw-r--r--demos/ARM7-LPC214x-FATFS-GCC/ch.ld41
-rw-r--r--demos/ARM7-LPC214x-G++/ch.ld43
-rw-r--r--demos/ARM7-LPC214x-GCC/ch.ld41
-rw-r--r--demos/ARMCM0-LPC1114-GCC/ch.ld53
-rw-r--r--demos/ARMCM3-LPC1343-GCC/ch.ld53
-rw-r--r--demos/ARMCM3-STM32F103-FATFS-GCC/ch.ld51
-rw-r--r--demos/ARMCM3-STM32F103-GCC/ch.ld53
-rw-r--r--demos/ARMCM3-STM32F107-GCC/ch.ld51
-rw-r--r--docs/reports/AT91SAM7X-48-ARM.txt42
-rw-r--r--docs/reports/AT91SAM7X-48-THUMB.txt44
-rw-r--r--docs/reports/LPC2148-48-ARM.txt33
-rw-r--r--docs/reports/LPC2148-48-THUMB.txt35
-rw-r--r--docs/reports/STM32F103-72.txt4
-rw-r--r--readme.txt2
-rw-r--r--testhal/STM32/ch.ld53
18 files changed, 434 insertions, 270 deletions
diff --git a/demos/ARM7-AT91SAM7X-GCC/ch.ld b/demos/ARM7-AT91SAM7X-GCC/ch.ld
index 277336359..67fe8d223 100644
--- a/demos/ARM7-AT91SAM7X-GCC/ch.ld
+++ b/demos/ARM7-AT91SAM7X-GCC/ch.ld
@@ -47,18 +47,28 @@ SECTIONS
_text = .;
KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ *(.ctors)
+ *(.dtors)
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -84,11 +94,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/ch.ld b/demos/ARM7-AT91SAM7X-LWIP-GCC/ch.ld
index 277336359..67fe8d223 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/ch.ld
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/ch.ld
@@ -47,18 +47,28 @@ SECTIONS
_text = .;
KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ *(.ctors)
+ *(.dtors)
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -84,11 +94,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARM7-AT91SAM7X-UIP-GCC/ch.ld b/demos/ARM7-AT91SAM7X-UIP-GCC/ch.ld
index 277336359..67fe8d223 100644
--- a/demos/ARM7-AT91SAM7X-UIP-GCC/ch.ld
+++ b/demos/ARM7-AT91SAM7X-UIP-GCC/ch.ld
@@ -47,18 +47,28 @@ SECTIONS
_text = .;
KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ *(.ctors)
+ *(.dtors)
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -84,11 +94,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARM7-LPC214x-FATFS-GCC/ch.ld b/demos/ARM7-LPC214x-FATFS-GCC/ch.ld
index e68868f72..8515eeac7 100644
--- a/demos/ARM7-LPC214x-FATFS-GCC/ch.ld
+++ b/demos/ARM7-LPC214x-FATFS-GCC/ch.ld
@@ -43,25 +43,35 @@ __dma_end__ = 0x7FD00000 + __dma_size__;
SECTIONS
{
- . = 0;
+ . = 0;
- .text : ALIGN(16) SUBALIGN(16)
- {
+ .text : ALIGN(16) SUBALIGN(16)
+ {
_text = .;
KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ *(.ctors)
+ *(.dtors)
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -87,11 +97,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARM7-LPC214x-G++/ch.ld b/demos/ARM7-LPC214x-G++/ch.ld
index 1ce752804..8515eeac7 100644
--- a/demos/ARM7-LPC214x-G++/ch.ld
+++ b/demos/ARM7-LPC214x-G++/ch.ld
@@ -25,7 +25,7 @@ __abt_stack_size__ = 0x0004;
__fiq_stack_size__ = 0x0010;
__irq_stack_size__ = 0x0080;
__svc_stack_size__ = 0x0004;
-__sys_stack_size__ = 0x0800;
+__sys_stack_size__ = 0x0400;
__stacks_total_size__ = __und_stack_size__ + __abt_stack_size__ + __fiq_stack_size__ + __irq_stack_size__ + __svc_stack_size__ + __sys_stack_size__;
MEMORY
@@ -43,25 +43,35 @@ __dma_end__ = 0x7FD00000 + __dma_size__;
SECTIONS
{
- . = 0;
+ . = 0;
- .text : ALIGN(16) SUBALIGN(16)
- {
+ .text : ALIGN(16) SUBALIGN(16)
+ {
_text = .;
KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ *(.ctors)
+ *(.dtors)
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -87,11 +97,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARM7-LPC214x-GCC/ch.ld b/demos/ARM7-LPC214x-GCC/ch.ld
index e68868f72..8515eeac7 100644
--- a/demos/ARM7-LPC214x-GCC/ch.ld
+++ b/demos/ARM7-LPC214x-GCC/ch.ld
@@ -43,25 +43,35 @@ __dma_end__ = 0x7FD00000 + __dma_size__;
SECTIONS
{
- . = 0;
+ . = 0;
- .text : ALIGN(16) SUBALIGN(16)
- {
+ .text : ALIGN(16) SUBALIGN(16)
+ {
_text = .;
KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ *(.ctors)
+ *(.dtors)
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -87,11 +97,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARMCM0-LPC1114-GCC/ch.ld b/demos/ARMCM0-LPC1114-GCC/ch.ld
index 8497ebeea..0eff7df98 100644
--- a/demos/ARMCM0-LPC1114-GCC/ch.ld
+++ b/demos/ARMCM0-LPC1114-GCC/ch.ld
@@ -38,23 +38,47 @@ SECTIONS
{
. = 0;
- .text : ALIGN(4) SUBALIGN(4)
+ .text : ALIGN(16) SUBALIGN(16)
{
_text = .;
- KEEP(*(vectors));
+ KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ } > flash
+
+ .ctors :
+ {
+ PROVIDE(_ctors_start_ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(_ctors_end_ = .);
+ } > flash
+
+ .dtors :
+ {
+ PROVIDE(_dtors_start_ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(_dtors_end_ = .);
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -80,11 +104,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARMCM3-LPC1343-GCC/ch.ld b/demos/ARMCM3-LPC1343-GCC/ch.ld
index a7f0cda45..83028c619 100644
--- a/demos/ARMCM3-LPC1343-GCC/ch.ld
+++ b/demos/ARMCM3-LPC1343-GCC/ch.ld
@@ -38,23 +38,47 @@ SECTIONS
{
. = 0;
- .text : ALIGN(4) SUBALIGN(4)
+ .text : ALIGN(16) SUBALIGN(16)
{
_text = .;
- KEEP(*(vectors));
+ KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ } > flash
+
+ .ctors :
+ {
+ PROVIDE(_ctors_start_ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(_ctors_end_ = .);
+ } > flash
+
+ .dtors :
+ {
+ PROVIDE(_dtors_start_ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(_dtors_end_ = .);
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -80,11 +104,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARMCM3-STM32F103-FATFS-GCC/ch.ld b/demos/ARMCM3-STM32F103-FATFS-GCC/ch.ld
index 0dd8cfeab..44f494121 100644
--- a/demos/ARMCM3-STM32F103-FATFS-GCC/ch.ld
+++ b/demos/ARMCM3-STM32F103-FATFS-GCC/ch.ld
@@ -41,20 +41,44 @@ SECTIONS
.text : ALIGN(16) SUBALIGN(16)
{
_text = .;
- KEEP(*(vectors));
+ KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ } > flash
+
+ .ctors :
+ {
+ PROVIDE(_ctors_start_ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(_ctors_end_ = .);
+ } > flash
+
+ .dtors :
+ {
+ PROVIDE(_dtors_start_ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(_dtors_end_ = .);
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -80,11 +104,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARMCM3-STM32F103-GCC/ch.ld b/demos/ARMCM3-STM32F103-GCC/ch.ld
index 1405765cd..44f494121 100644
--- a/demos/ARMCM3-STM32F103-GCC/ch.ld
+++ b/demos/ARMCM3-STM32F103-GCC/ch.ld
@@ -20,7 +20,7 @@
/*
* ST32F103 memory setup.
*/
-__main_stack_size__ = 0x0200;
+__main_stack_size__ = 0x0400;
__process_stack_size__ = 0x0400;
__stacks_total_size__ = __main_stack_size__ + __process_stack_size__;
@@ -41,20 +41,44 @@ SECTIONS
.text : ALIGN(16) SUBALIGN(16)
{
_text = .;
- KEEP(*(vectors));
+ KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ } > flash
+
+ .ctors :
+ {
+ PROVIDE(_ctors_start_ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(_ctors_end_ = .);
+ } > flash
+
+ .dtors :
+ {
+ PROVIDE(_dtors_start_ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(_dtors_end_ = .);
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -80,11 +104,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/demos/ARMCM3-STM32F107-GCC/ch.ld b/demos/ARMCM3-STM32F107-GCC/ch.ld
index c0aa83278..0595192db 100644
--- a/demos/ARMCM3-STM32F107-GCC/ch.ld
+++ b/demos/ARMCM3-STM32F107-GCC/ch.ld
@@ -41,20 +41,44 @@ SECTIONS
.text : ALIGN(16) SUBALIGN(16)
{
_text = .;
- KEEP(*(vectors));
+ KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ } > flash
+
+ .ctors :
+ {
+ PROVIDE(_ctors_start_ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(_ctors_end_ = .);
+ } > flash
+
+ .dtors :
+ {
+ PROVIDE(_dtors_start_ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(_dtors_end_ = .);
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -80,11 +104,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);
diff --git a/docs/reports/AT91SAM7X-48-ARM.txt b/docs/reports/AT91SAM7X-48-ARM.txt
index 01f6a5afc..38ee9cc83 100644
--- a/docs/reports/AT91SAM7X-48-ARM.txt
+++ b/docs/reports/AT91SAM7X-48-ARM.txt
@@ -5,9 +5,12 @@ Settings: MCK=48.054857, MC_FMR = AT91C_MC_FWS_1FWS (1 wait state)
*** ChibiOS/RT test suite
***
-*** Kernel: 1.3.7unstable
-*** Architecture: ARM7TDMI
-*** GCC Version: 4.4.2
+*** Kernel: 1.5.7unstable
+*** GCC Version: 4.5.0
+*** Architecture: ARM
+*** Core Variant: ARM7TDMI
+*** Platform: AT91SAM7x
+*** Test Board: Olimex SAM7-EX256
----------------------------------------------------------------------------
--- Test Case 1.1 (Threads, enqueuing test #1)
@@ -82,6 +85,9 @@ Settings: MCK=48.054857, MC_FMR = AT91C_MC_FWS_1FWS (1 wait state)
--- Test Case 9.2 (Dynamic APIs, threads creation from memory pool)
--- Result: SUCCESS
----------------------------------------------------------------------------
+--- Test Case 9.3 (Dynamic APIs, registry and references)
+--- Result: SUCCESS
+----------------------------------------------------------------------------
--- Test Case 10.1 (Queues, input queues)
--- Result: SUCCESS
----------------------------------------------------------------------------
@@ -89,56 +95,56 @@ Settings: MCK=48.054857, MC_FMR = AT91C_MC_FWS_1FWS (1 wait state)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.1 (Benchmark, messages #1)
---- Score : 114965 msgs/S, 229930 ctxswc/S
+--- Score : 109404 msgs/S, 218808 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.2 (Benchmark, messages #2)
---- Score : 90579 msgs/S, 181158 ctxswc/S
+--- Score : 83877 msgs/S, 167754 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.3 (Benchmark, messages #3)
---- Score : 90579 msgs/S, 181158 ctxswc/S
+--- Score : 83877 msgs/S, 167754 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.4 (Benchmark, context switch)
---- Score : 391224 ctxswc/S
+--- Score : 360160 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.5 (Benchmark, threads, full cycle)
---- Score : 82600 threads/S
+--- Score : 64434 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.6 (Benchmark, threads, create only)
---- Score : 115522 threads/S
+--- Score : 94114 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.7 (Benchmark, mass reschedulation, 5 threads)
---- Score : 28350 reschedulations/S, 170100 ctxswc/S
+--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
+--- Score : 25788 reschedules/S, 154728 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.8 (Benchmark, round robin context switching)
---- Score : 258160 reschedulations/S, 258160 ctxswc/S
+--- Score : 204100 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.9 (Benchmark, I/O Queues throughput)
---- Score : 249280 bytes/S
+--- Score : 217464 bytes/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.10 (Benchmark, virtual timers set/reset)
---- Score : 264256 timers/S
+--- Score : 264170 timers/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.11 (Benchmark, semaphores wait/signal)
---- Score : 466632 wait+signal/S
+--- Score : 425016 wait+signal/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.12 (Benchmark, mutexes lock/unlock)
---- Score : 317812 lock+unlock/S
+--- Score : 309480 lock+unlock/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.13 (Benchmark, RAM footprint)
---- System: 324 bytes
---- Thread: 60 bytes
+--- System: 356 bytes
+--- Thread: 68 bytes
--- Timer : 20 bytes
--- Semaph: 12 bytes
--- EventS: 4 bytes
diff --git a/docs/reports/AT91SAM7X-48-THUMB.txt b/docs/reports/AT91SAM7X-48-THUMB.txt
index 5dc43e3e9..4f75ef6ed 100644
--- a/docs/reports/AT91SAM7X-48-THUMB.txt
+++ b/docs/reports/AT91SAM7X-48-THUMB.txt
@@ -1,13 +1,16 @@
***************************************************************************
-Options: -Os -fomit-frame-pointer -mabi=apcs-gnu
+Options: -O2 -fomit-frame-pointer -mabi=apcs-gnu
Settings: MCK=48.054857, MC_FMR = AT91C_MC_FWS_1FWS (1 wait state)
***************************************************************************
*** ChibiOS/RT test suite
***
-*** Kernel: 1.3.5unstable
-*** Architecture: ARM7TDMI
-*** GCC Version: 4.4.2
+*** Kernel: 1.5.7unstable
+*** GCC Version: 4.5.0
+*** Architecture: ARM
+*** Core Variant: ARM7TDMI
+*** Platform: AT91SAM7x
+*** Test Board: Olimex SAM7-EX256
----------------------------------------------------------------------------
--- Test Case 1.1 (Threads, enqueuing test #1)
@@ -82,6 +85,9 @@ Settings: MCK=48.054857, MC_FMR = AT91C_MC_FWS_1FWS (1 wait state)
--- Test Case 9.2 (Dynamic APIs, threads creation from memory pool)
--- Result: SUCCESS
----------------------------------------------------------------------------
+--- Test Case 9.3 (Dynamic APIs, registry and references)
+--- Result: SUCCESS
+----------------------------------------------------------------------------
--- Test Case 10.1 (Queues, input queues)
--- Result: SUCCESS
----------------------------------------------------------------------------
@@ -89,56 +95,56 @@ Settings: MCK=48.054857, MC_FMR = AT91C_MC_FWS_1FWS (1 wait state)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.1 (Benchmark, messages #1)
---- Score : 104631 msgs/S, 209262 ctxswc/S
+--- Score : 106526 msgs/S, 213052 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.2 (Benchmark, messages #2)
---- Score : 86467 msgs/S, 172934 ctxswc/S
+--- Score : 87601 msgs/S, 175202 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.3 (Benchmark, messages #3)
---- Score : 86467 msgs/S, 172934 ctxswc/S
+--- Score : 87601 msgs/S, 175202 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.4 (Benchmark, context switch)
---- Score : 400560 ctxswc/S
+--- Score : 405776 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.5 (Benchmark, threads, full cycle)
---- Score : 85230 threads/S
+--- Score : 68329 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.6 (Benchmark, threads, create only)
---- Score : 117190 threads/S
+--- Score : 101120 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.7 (Benchmark, mass reschedulation, 5 threads)
---- Score : 28597 reschedulations/S, 171582 ctxswc/S
+--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
+--- Score : 28779 reschedules/S, 172674 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.8 (Benchmark, round robin context switching)
---- Score : 249680 reschedulations/S, 249680 ctxswc/S
+--- Score : 212112 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.9 (Benchmark, I/O Queues throughput)
---- Score : 265680 bytes/S
+--- Score : 262808 bytes/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.10 (Benchmark, virtual timers set/reset)
---- Score : 323120 timers/S
+--- Score : 323178 timers/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.11 (Benchmark, semaphores wait/signal)
---- Score : 364364 wait+signal/S
+--- Score : 364428 wait+signal/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.12 (Benchmark, mutexes lock/unlock)
---- Score : 262400 lock+unlock/S
+--- Score : 268336 lock+unlock/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.13 (Benchmark, RAM footprint)
---- System: 324 bytes
---- Thread: 60 bytes
+--- System: 356 bytes
+--- Thread: 68 bytes
--- Timer : 20 bytes
--- Semaph: 12 bytes
--- EventS: 4 bytes
diff --git a/docs/reports/LPC2148-48-ARM.txt b/docs/reports/LPC2148-48-ARM.txt
index 1ded2925d..9cae2a078 100644
--- a/docs/reports/LPC2148-48-ARM.txt
+++ b/docs/reports/LPC2148-48-ARM.txt
@@ -5,8 +5,8 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
*** ChibiOS/RT test suite
***
-*** Kernel: 1.5.4unstable
-*** GCC Version: 4.4.2
+*** Kernel: 1.5.7unstable
+*** GCC Version: 4.5.0
*** Architecture: ARM
*** Core Variant: ARM7TDMI
*** Platform: LPC214x
@@ -85,6 +85,9 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
--- Test Case 9.2 (Dynamic APIs, threads creation from memory pool)
--- Result: SUCCESS
----------------------------------------------------------------------------
+--- Test Case 9.3 (Dynamic APIs, registry and references)
+--- Result: SUCCESS
+----------------------------------------------------------------------------
--- Test Case 10.1 (Queues, input queues)
--- Result: SUCCESS
----------------------------------------------------------------------------
@@ -92,51 +95,51 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.1 (Benchmark, messages #1)
---- Score : 148086 msgs/S, 296172 ctxswc/S
+--- Score : 138220 msgs/S, 276440 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.2 (Benchmark, messages #2)
---- Score : 116100 msgs/S, 232200 ctxswc/S
+--- Score : 104419 msgs/S, 208838 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.3 (Benchmark, messages #3)
---- Score : 116100 msgs/S, 232200 ctxswc/S
+--- Score : 104419 msgs/S, 208838 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.4 (Benchmark, context switch)
---- Score : 509520 ctxswc/S
+--- Score : 460416 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.5 (Benchmark, threads, full cycle)
---- Score : 87287 threads/S
+--- Score : 85707 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.6 (Benchmark, threads, create only)
---- Score : 122334 threads/S
+--- Score : 124543 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.7 (Benchmark, mass reschedulation, 5 threads)
---- Score : 36238 reschedulations/S, 217428 ctxswc/S
+--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
+--- Score : 33282 reschedules/S, 199692 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.8 (Benchmark, round robin context switching)
---- Score : 341020 reschedulations/S, 341020 ctxswc/S
+--- Score : 265316 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.9 (Benchmark, I/O Queues throughput)
---- Score : 357312 bytes/S
+--- Score : 316988 bytes/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.10 (Benchmark, virtual timers set/reset)
---- Score : 333360 timers/S
+--- Score : 335642 timers/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.11 (Benchmark, semaphores wait/signal)
---- Score : 623248 wait+signal/S
+--- Score : 585024 wait+signal/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.12 (Benchmark, mutexes lock/unlock)
---- Score : 383452 lock+unlock/S
+--- Score : 368620 lock+unlock/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.13 (Benchmark, RAM footprint)
diff --git a/docs/reports/LPC2148-48-THUMB.txt b/docs/reports/LPC2148-48-THUMB.txt
index 9d841ef60..aeaae4845 100644
--- a/docs/reports/LPC2148-48-THUMB.txt
+++ b/docs/reports/LPC2148-48-THUMB.txt
@@ -1,12 +1,12 @@
***************************************************************************
-Options: -Os -fomit-frame-pointer -mabi=apcs-gnu -falign-functions=16
+Options: -O2 -fomit-frame-pointer -mabi=apcs-gnu -falign-functions=16
Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
***************************************************************************
*** ChibiOS/RT test suite
***
-*** Kernel: 1.5.4unstable
-*** GCC Version: 4.4.2
+*** Kernel: 1.5.7unstable
+*** GCC Version: 4.5.0
*** Architecture: ARM
*** Core Variant: ARM7TDMI
*** Platform: LPC214x
@@ -85,6 +85,9 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
--- Test Case 9.2 (Dynamic APIs, threads creation from memory pool)
--- Result: SUCCESS
----------------------------------------------------------------------------
+--- Test Case 9.3 (Dynamic APIs, registry and references)
+--- Result: SUCCESS
+----------------------------------------------------------------------------
--- Test Case 10.1 (Queues, input queues)
--- Result: SUCCESS
----------------------------------------------------------------------------
@@ -92,51 +95,51 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.1 (Benchmark, messages #1)
---- Score : 106455 msgs/S, 212910 ctxswc/S
+--- Score : 106460 msgs/S, 212920 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.2 (Benchmark, messages #2)
---- Score : 88190 msgs/S, 176380 ctxswc/S
+--- Score : 88195 msgs/S, 176390 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.3 (Benchmark, messages #3)
---- Score : 88190 msgs/S, 176380 ctxswc/S
+--- Score : 88195 msgs/S, 176390 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.4 (Benchmark, context switch)
---- Score : 412496 ctxswc/S
+--- Score : 412536 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.5 (Benchmark, threads, full cycle)
---- Score : 67800 threads/S
+--- Score : 69580 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.6 (Benchmark, threads, create only)
---- Score : 100842 threads/S
+--- Score : 104828 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
---- Test Case 11.7 (Benchmark, mass reschedulation, 5 threads)
---- Score : 29488 reschedulations/S, 176928 ctxswc/S
+--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
+--- Score : 29580 reschedules/S, 177480 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.8 (Benchmark, round robin context switching)
---- Score : 257308 reschedulations/S, 257308 ctxswc/S
+--- Score : 221556 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.9 (Benchmark, I/O Queues throughput)
---- Score : 265488 bytes/S
+--- Score : 261124 bytes/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.10 (Benchmark, virtual timers set/reset)
---- Score : 326324 timers/S
+--- Score : 326304 timers/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.11 (Benchmark, semaphores wait/signal)
---- Score : 353452 wait+signal/S
+--- Score : 350836 wait+signal/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.12 (Benchmark, mutexes lock/unlock)
---- Score : 255980 lock+unlock/S
+--- Score : 260148 lock+unlock/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.13 (Benchmark, RAM footprint)
diff --git a/docs/reports/STM32F103-72.txt b/docs/reports/STM32F103-72.txt
index 6e0917cfd..cf20a8f42 100644
--- a/docs/reports/STM32F103-72.txt
+++ b/docs/reports/STM32F103-72.txt
@@ -95,7 +95,7 @@ Settings: SYSCLK=72, ACR=0x12 (2 wait states)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.1 (Benchmark, messages #1)
---- Score : 250284 msgs/S, 500568 ctxswc/S
+--- Score : 250283 msgs/S, 500566 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.2 (Benchmark, messages #2)
@@ -123,7 +123,7 @@ Settings: SYSCLK=72, ACR=0x12 (2 wait states)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.8 (Benchmark, round robin context switching)
---- Score : 481292 ctxswc/S
+--- Score : 481288 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.9 (Benchmark, I/O Queues throughput)
diff --git a/readme.txt b/readme.txt
index 5d8f57945..029aaec6a 100644
--- a/readme.txt
+++ b/readme.txt
@@ -80,6 +80,8 @@
- CHANGE: Renamed the STM32, STM8, LPC214x, AT91SAM7x, MSP430 and simulators
PAL configuration structures to PALConfig, it is better to have the same
name for this structure in all ports (like for all the other drivers).
+- CHANGE: Modified the linker scripts in the ARM demos in order to increase
+ compatibility with the CodeSourcery toolchain.
- Tested the STM8 port with the latest RKit-STM8_2.28.10.0092. It works but
the new compiler shows a slight performance regression except in one
test case.
diff --git a/testhal/STM32/ch.ld b/testhal/STM32/ch.ld
index 1405765cd..44f494121 100644
--- a/testhal/STM32/ch.ld
+++ b/testhal/STM32/ch.ld
@@ -20,7 +20,7 @@
/*
* ST32F103 memory setup.
*/
-__main_stack_size__ = 0x0200;
+__main_stack_size__ = 0x0400;
__process_stack_size__ = 0x0400;
__stacks_total_size__ = __main_stack_size__ + __process_stack_size__;
@@ -41,20 +41,44 @@ SECTIONS
.text : ALIGN(16) SUBALIGN(16)
{
_text = .;
- KEEP(*(vectors));
+ KEEP(*(vectors))
*(.text)
- *(.text.*);
- *(.rodata);
- *(.rodata.*);
- *(.glue_7t);
- *(.glue_7);
- *(.gcc*);
- *(.ctors);
- *(.dtors);
- . = ALIGN(4);
- _etext = .;
+ *(.text.*)
+ *(.rodata)
+ *(.rodata.*)
+ *(.glue_7t)
+ *(.glue_7)
+ *(.gcc*)
+ } > flash
+
+ .ctors :
+ {
+ PROVIDE(_ctors_start_ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(_ctors_end_ = .);
+ } > flash
+
+ .dtors :
+ {
+ PROVIDE(_dtors_start_ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(_dtors_end_ = .);
} > flash
+ .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+ __exidx_start = .;
+ .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+ __exidx_end = .;
+
+ .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+ .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+ . = ALIGN(4);
+ _etext = .;
_textdata = _etext;
.data :
@@ -80,11 +104,6 @@ SECTIONS
. = ALIGN(4);
_bss_end = .;
} > ram
-
- /DISCARD/ :
- {
- *(.eh_*)
- }
}
PROVIDE(end = .);