From ed3ffb35089836df6b5b51b76c428078a80dbb3b Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 6 Dec 2008 11:42:25 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@531 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARM7-LPC214x-G++/ch.ld | 2 +- demos/ARM7-LPC214x-GCC-minimal/ch.ld | 2 +- demos/ARM7-LPC214x-GCC/ch.ld | 2 +- demos/ARMCM3-STM32F103-GCC/ch.ld | 96 ++++++++++++++-------------- docs/reports/LPC2148-48-ARM.txt | 14 ++-- docs/reports/STM32F103-48.txt | 4 -- docs/reports/STM32F103-72.txt | 12 ++-- readme.txt | 8 +++ 8 files changed, 70 insertions(+), 70 deletions(-) diff --git a/demos/ARM7-LPC214x-G++/ch.ld b/demos/ARM7-LPC214x-G++/ch.ld index b0425dbca..2bbea7477 100644 --- a/demos/ARM7-LPC214x-G++/ch.ld +++ b/demos/ARM7-LPC214x-G++/ch.ld @@ -45,7 +45,7 @@ SECTIONS { . = 0; - .text : + .text : ALIGN(16) SUBALIGN(16) { _text = .; KEEP(*(vectors)) diff --git a/demos/ARM7-LPC214x-GCC-minimal/ch.ld b/demos/ARM7-LPC214x-GCC-minimal/ch.ld index b0425dbca..2bbea7477 100644 --- a/demos/ARM7-LPC214x-GCC-minimal/ch.ld +++ b/demos/ARM7-LPC214x-GCC-minimal/ch.ld @@ -45,7 +45,7 @@ SECTIONS { . = 0; - .text : + .text : ALIGN(16) SUBALIGN(16) { _text = .; KEEP(*(vectors)) diff --git a/demos/ARM7-LPC214x-GCC/ch.ld b/demos/ARM7-LPC214x-GCC/ch.ld index b0425dbca..2bbea7477 100644 --- a/demos/ARM7-LPC214x-GCC/ch.ld +++ b/demos/ARM7-LPC214x-GCC/ch.ld @@ -45,7 +45,7 @@ SECTIONS { . = 0; - .text : + .text : ALIGN(16) SUBALIGN(16) { _text = .; KEEP(*(vectors)) diff --git a/demos/ARMCM3-STM32F103-GCC/ch.ld b/demos/ARMCM3-STM32F103-GCC/ch.ld index f18ba7e5d..af13b206d 100644 --- a/demos/ARMCM3-STM32F103-GCC/ch.ld +++ b/demos/ARMCM3-STM32F103-GCC/ch.ld @@ -26,64 +26,64 @@ __stacks_total_size__ = __main_stack_size__ + __process_stack_size__; MEMORY { - flash : org = 0x08000000, len = 128k - ram : org = 0x20000000, len = 20k + flash : org = 0x08000000, len = 128k + ram : org = 0x20000000, len = 20k } -__ram_start__ = ORIGIN(ram); -__ram_size__ = LENGTH(ram); -__ram_end__ = __ram_start__ + __ram_size__; +__ram_start__ = ORIGIN(ram); +__ram_size__ = LENGTH(ram); +__ram_end__ = __ram_start__ + __ram_size__; SECTIONS { - . = 0; + . = 0; - .text : - { - _text = .; - KEEP(*(vectors)); - *(.text) - *(.text.*); - *(.rodata); - *(.rodata.*); - *(.glue_7t); - *(.glue_7); - *(.gcc*); - *(.ctors); - *(.dtors); - . = ALIGN(4); - _etext = .; - } > flash + .text : ALIGN(16) SUBALIGN(16) + { + _text = .; + KEEP(*(vectors)); + *(.text) + *(.text.*); + *(.rodata); + *(.rodata.*); + *(.glue_7t); + *(.glue_7); + *(.gcc*); + *(.ctors); + *(.dtors); + . = ALIGN(4); + _etext = .; + } > flash - _textdata = _etext; + _textdata = _etext; - .data : - { - _data = .; - *(.data) - . = ALIGN(4); - *(.data.*) - . = ALIGN(4); - *(.ramtext) - . = ALIGN(4); - _edata = .; - } > ram AT > flash + .data : + { + _data = .; + *(.data) + . = ALIGN(4); + *(.data.*) + . = ALIGN(4); + *(.ramtext) + . = ALIGN(4); + _edata = .; + } > ram AT > flash - .bss : - { - _bss_start = .; - *(.bss) - . = ALIGN(4); - *(.bss.*) - . = ALIGN(4); - *(COMMON) - . = ALIGN(4); - _bss_end = .; - } > ram + .bss : + { + _bss_start = .; + *(.bss) + . = ALIGN(4); + *(.bss.*) + . = ALIGN(4); + *(COMMON) + . = ALIGN(4); + _bss_end = .; + } > ram } PROVIDE(end = .); -_end = .; +_end = .; -__heap_base__ = _end; -__heap_end__ = __ram_end__ - __stacks_total_size__; +__heap_base__ = _end; +__heap_end__ = __ram_end__ - __stacks_total_size__; diff --git a/docs/reports/LPC2148-48-ARM.txt b/docs/reports/LPC2148-48-ARM.txt index 49950b73e..0b385422a 100644 --- a/docs/reports/LPC2148-48-ARM.txt +++ b/docs/reports/LPC2148-48-ARM.txt @@ -1,5 +1,5 @@ *************************************************************************** -Kernel: ChibiOS/RT 0.8.0 +Kernel: ChibiOS/RT 0.8.2 Compiler: GCC 4.3.2 (YAGARTO 28.09.2008) Options: -O2 -fomit-frame-pointer -mabi=apcs-gnu -falign-functions=16 Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states) @@ -53,7 +53,7 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states) --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 16 (Benchmark, context switch #1, optimal) ---- Score : 144452 msgs/S, 288904 ctxswc/S +--- Score : 144451 msgs/S, 288902 ctxswc/S --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 17 (Benchmark, context switch #2, empty ready list) @@ -65,23 +65,23 @@ Settings: CCLK=48, MAMCR=2, MAMTIM=3 (3 wait states) --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 19 (Benchmark, threads creation/termination, worst case) ---- Score : 86776 threads/S +--- Score : 92663 threads/S --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 20 (Benchmark, threads creation/termination, optimal) ---- Score : 119534 threads/S +--- Score : 122600 threads/S --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 21 (Benchmark, mass reschedulation, 5 threads) ---- Score : 36005 reschedulations/S, 216030 ctxswc/S +--- Score : 36006 reschedulations/S, 216036 ctxswc/S --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 22 (Benchmark, I/O Queues throughput) ---- Score : 341232 bytes/S +--- Score : 341236 bytes/S --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 23 (Benchmark, virtual timers set/reset) ---- Score : 309498 timers/S +--- Score : 309496 timers/S --- Result: SUCCESS --------------------------------------------------------------------------- diff --git a/docs/reports/STM32F103-48.txt b/docs/reports/STM32F103-48.txt index bef27a35c..18b35cd02 100644 --- a/docs/reports/STM32F103-48.txt +++ b/docs/reports/STM32F103-48.txt @@ -5,10 +5,6 @@ Options: -O2 -fomit-frame-pointer -mabi=apcs-gnu -falign-functions=16 Settings: SYSCLK=48, ACR=0x11 (1 wait state) *************************************************************************** -***************************** -*** ChibiOS/RT test suite *** -***************************** - --------------------------------------------------------------------------- --- Test Case 1 (Ready List, priority enqueuing test #1) --- Result: SUCCESS diff --git a/docs/reports/STM32F103-72.txt b/docs/reports/STM32F103-72.txt index 20f82a64b..9f9a5ed7d 100644 --- a/docs/reports/STM32F103-72.txt +++ b/docs/reports/STM32F103-72.txt @@ -1,14 +1,10 @@ *************************************************************************** -Kernel: ChibiOS/RT 0.8.0 +Kernel: ChibiOS/RT 0.8.2 Compiler: GCC 4.3.2 (YAGARTO 28.09.2008) Options: -O2 -fomit-frame-pointer -mabi=apcs-gnu -falign-functions=16 Settings: SYSCLK=72, ACR=0x12 (2 wait states) *************************************************************************** -***************************** -*** ChibiOS/RT test suite *** -***************************** - --------------------------------------------------------------------------- --- Test Case 1 (Ready List, priority enqueuing test #1) --- Result: SUCCESS @@ -44,7 +40,7 @@ Settings: SYSCLK=72, ACR=0x12 (2 wait states) --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 12 (Heap, allocation and fragmentation test) ---- Size : 17252 bytes, not fragmented +--- Size : 17224 bytes, not fragmented --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 13 (Memory Pools, allocation and enqueuing test) @@ -69,11 +65,11 @@ Settings: SYSCLK=72, ACR=0x12 (2 wait states) --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 19 (Benchmark, threads creation/termination, worst case) ---- Score : 141666 threads/S +--- Score : 149938 threads/S --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 20 (Benchmark, threads creation/termination, optimal) ---- Score : 188024 threads/S +--- Score : 187045 threads/S --- Result: SUCCESS --------------------------------------------------------------------------- --- Test Case 21 (Benchmark, mass reschedulation, 5 threads) diff --git a/readme.txt b/readme.txt index c5a79c7be..8bad7553b 100644 --- a/readme.txt +++ b/readme.txt @@ -87,6 +87,14 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process, WORKING_AREA(), THD_WA_SIZE() and STACK_ALIGN() instead. - CHANGE: Renamed the default idle thread function from _IdleThread() to _idle(). +- Added to the LPC2148 and STM32 load scripts the options "ALIGN(16) + SUBALIGN(16)" to the flash loading section in order to enforce the alignment + for both the code and read only data. This is done in order to obtain more + accurate timings from benchmarks, those families have 16 bytes + prefetch buffers and are very sensitive to alignment changes. + You can remove those options in order to save some flash space if accurate + response time is not on top of your priorities, it mainly depends on your + requirements. *** 0.8.1 *** - FIX: Fixed a regression in version 0.8.0, the configuration switch