From c83758b440aded83feabc5c28e92adf2d8901969 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 1 Apr 2022 16:45:49 -0700 Subject: [PATCH] [bsp] Switch qemu-vexpress-a9 sample to picolibc This adds the necessary changes to the linker script and then selects picolibc instead of the default (newlib). Before: text data bss dec hex filename 561638 2100 84928 648666 9e5da rtthread.elf After: text data bss dec hex filename 525009 692 86844 612545 958c1 rtthread.elf Signed-off-by: Keith Packard --- bsp/qemu-vexpress-a9/.config | 5 ++++- bsp/qemu-vexpress-a9/link.lds | 17 +++++++++++++++++ bsp/qemu-vexpress-a9/rtconfig.h | 4 ++++ bsp/qemu-vexpress-a9/rtconfig.py | 1 + 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/bsp/qemu-vexpress-a9/.config b/bsp/qemu-vexpress-a9/.config index 3dc3ff6ce3fa..cb5d4d69e2bd 100644 --- a/bsp/qemu-vexpress-a9/.config +++ b/bsp/qemu-vexpress-a9/.config @@ -30,9 +30,12 @@ CONFIG_RT_TIMER_THREAD_STACK_SIZE=1024 # # kservice optimization # -# CONFIG_RT_KSERVICE_USING_STDLIB is not set +CONFIG_RT_KSERVICE_USING_STDLIB=y +CONFIG_RT_KSERVICE_USING_STDLIB_MEMCPY=y +CONFIG_RT_KSERVICE_USING_STDLIB_MEMSET=y # CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set # CONFIG_RT_USING_TINY_FFS is not set +CONFIG_RT_KSERVICE_USING_PRINTF=y # CONFIG_RT_PRINTF_LONGLONG is not set CONFIG_RT_DEBUG=y CONFIG_RT_DEBUG_COLOR=y diff --git a/bsp/qemu-vexpress-a9/link.lds b/bsp/qemu-vexpress-a9/link.lds index 8e4f65b454e3..c8c4c62c6972 100644 --- a/bsp/qemu-vexpress-a9/link.lds +++ b/bsp/qemu-vexpress-a9/link.lds @@ -72,6 +72,23 @@ SECTIONS PROVIDE(__dtors_end__ = .); } + . = ALIGN(8); + .tdata : { + *(.tdata) + *(.tdata.*) + *(.gnu.linkonce.td.*) + } + + .tbss (NOLOAD) : { + *(.tbss .tbss.* .gnu.linkonce.tb.*) + *(.tcommon) + } + + __tdata_source = ADDR(.tdata); + __tdata_size = SIZEOF(.tdata); + __tbss_size = SIZEOF(.tbss); + __tls_size = SIZEOF(.tdata) + SIZEOF(.tbss); + . = ALIGN(8); __data_start = .; .data : diff --git a/bsp/qemu-vexpress-a9/rtconfig.h b/bsp/qemu-vexpress-a9/rtconfig.h index 3671b0268222..6a4dede1a732 100644 --- a/bsp/qemu-vexpress-a9/rtconfig.h +++ b/bsp/qemu-vexpress-a9/rtconfig.h @@ -26,6 +26,10 @@ /* kservice optimization */ +#define RT_KSERVICE_USING_STDLIB +#define RT_KSERVICE_USING_STDLIB_MEMCPY +#define RT_KSERVICE_USING_STDLIB_MEMSET +#define RT_KSERVICE_USING_PRINTF #define RT_DEBUG #define RT_DEBUG_COLOR diff --git a/bsp/qemu-vexpress-a9/rtconfig.py b/bsp/qemu-vexpress-a9/rtconfig.py index edd1b6aab7f8..54f031029e80 100644 --- a/bsp/qemu-vexpress-a9/rtconfig.py +++ b/bsp/qemu-vexpress-a9/rtconfig.py @@ -35,6 +35,7 @@ def get_mac_address(): # only support GNU GCC compiler. PLATFORM = 'gcc' +LIBC = 'picolibc' EXEC_PATH = r'/usr/bin' if os.getenv('RTT_EXEC_PATH'):