1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/makefiles/stdio.inc.mk
Benjamin Valentin c94860d8fc makefiles/stdio: enable stdout buffering for CDC ACM, ethos, semihosting
CDC ACM, ethos, Semihosting and SLIP all benefit from sending data out
in larger chunks and will benefit from stdout buffering.

`stdio_rtt` does have an internal TX buffer, so we don't need to do any
buffering on top.

With plain UART there was a slight advantage *without* buffering when
testing with `tests/periph_uart_nonblocking` (with the non-blocking feature
disabled).

Since the removal of the buffering saves us some RAM and ROM, disable it by
default there.

This will be different with DMA enabled UARTs.
2020-09-01 12:05:48 +02:00

65 lines
1.5 KiB
Makefile

STDIO_MODULES = \
slipdev_stdio \
stdio_cdc_acm \
stdio_ethos \
stdio_null \
stdio_rtt \
stdio_semihosting \
stdio_uart \
#
ifneq (,$(filter newlib picolibc,$(USEMODULE)))
ifeq (,$(filter $(STDIO_MODULES),$(USEMODULE)))
USEMODULE += stdio_uart
endif
endif
ifneq (,$(filter stdio_cdc_acm,$(USEMODULE)))
USEMODULE += usbus_cdc_acm
USEMODULE += isrpipe
endif
ifneq (,$(filter stdio_rtt,$(USEMODULE)))
USEMODULE += xtimer
endif
ifneq (,$(filter stdio_ethos,$(USEMODULE)))
USEMODULE += ethos
USEMODULE += stdin
USEMODULE += stdio_uart
endif
ifneq (,$(filter stdin,$(USEMODULE)))
ifneq (,$(filter stdio_uart,$(USEMODULE)))
USEMODULE += stdio_uart_rx
endif
endif
ifneq (,$(filter stdio_uart_rx,$(USEMODULE)))
USEMODULE += isrpipe
USEMODULE += stdio_uart
endif
ifneq (,$(filter stdio_uart,$(USEMODULE)))
FEATURES_REQUIRED += periph_uart
endif
ifeq (,$(filter stdio_cdc_acm,$(USEMODULE)))
# The arduino and nrfutil bootloader features cannot be used if the
# stdio_cdc_acm module is not used
FEATURES_BLACKLIST += bootloader_arduino
FEATURES_BLACKLIST += bootloader_nrfutil
endif
ifneq (,$(filter stdio_semihosting,$(USEMODULE)))
USEMODULE += xtimer
FEATURES_REQUIRED += cpu_core_cortexm
endif
# enable stdout buffering for modules that benefit from sending out buffers in larger chunks
ifneq (,$(filter picolibc,$(USEMODULE)))
ifneq (,$(filter stdio_cdc_acm stdio_ethos slipdev_stdio stdio_semihosting,$(USEMODULE)))
USEMODULE += picolibc_stdout_buffered
endif
endif