From f72cb049eb585b1e0acfdbf9dfb38ee4d8447e00 Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Tue, 23 May 2023 10:47:53 +0200 Subject: [PATCH 1/4] sys/Kconfig.stdio: model stdio_semihosting in Kconfig --- sys/Kconfig.stdio | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/Kconfig.stdio b/sys/Kconfig.stdio index d460041cb6..e29bf20a88 100644 --- a/sys/Kconfig.stdio +++ b/sys/Kconfig.stdio @@ -29,6 +29,12 @@ config MODULE_STDIO_RTT select MODULE_ZTIMER select MODULE_ZTIMER_MSEC +config MODULE_STDIO_SEMIHOSTING + bool "ARM and RISC-V Semihosting" + depends on HAS_ARCH_ARM || HAS_ARCH_RISCV + select MODULE_ZTIMER + select MODULE_ZTIMER_MSEC + config MODULE_SLIPDEV_STDIO bool "SLIP network device" depends on MODULE_SLIPDEV From a8ef65d1390dc7280d9da5190d04adfa23215d0e Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Tue, 23 May 2023 10:48:05 +0200 Subject: [PATCH 2/4] tests/sys/stdio_semihosting: add Kconfig config --- tests/sys/stdio_semihosting/app.config.test | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 tests/sys/stdio_semihosting/app.config.test diff --git a/tests/sys/stdio_semihosting/app.config.test b/tests/sys/stdio_semihosting/app.config.test new file mode 100644 index 0000000000..2b6ee44c88 --- /dev/null +++ b/tests/sys/stdio_semihosting/app.config.test @@ -0,0 +1,5 @@ +CONFIG_MODULE_STDIO_SEMIHOSTING=y +CONFIG_MODULE_SHELL=y +CONFIG_MODULE_SHELL_CMDS_DEFAULT=y +CONFIG_MODULE_PS=y +CONFIG_FORCE_USB_STDIO=n From 3b505a2883ae545ba8ba37d9ccd0c39fd479b2ea Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Sat, 17 Jun 2023 15:12:31 +0200 Subject: [PATCH 3/4] pkg/tinyusb: sys: fix stdio buffered inclusion in Kconfig --- pkg/tinyusb/cdc_acm_stdio/Kconfig | 1 + sys/Kconfig.picolibc | 2 +- sys/Kconfig.stdio | 1 + sys/usb/usbus/cdc/acm/Kconfig | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/tinyusb/cdc_acm_stdio/Kconfig b/pkg/tinyusb/cdc_acm_stdio/Kconfig index b25cf791e5..91addc0a19 100644 --- a/pkg/tinyusb/cdc_acm_stdio/Kconfig +++ b/pkg/tinyusb/cdc_acm_stdio/Kconfig @@ -14,5 +14,6 @@ config MODULE_STDIO_TINYUSB_CDC_ACM depends on MODULE_TINYUSB_DEVICE depends on MODULE_TINYUSB_CLASS_CDC select MODULE_STDIO_AVAILABLE + select USE_STDOUT_BUFFERED endchoice diff --git a/sys/Kconfig.picolibc b/sys/Kconfig.picolibc index cabfc3d015..ccb18a9528 100644 --- a/sys/Kconfig.picolibc +++ b/sys/Kconfig.picolibc @@ -7,7 +7,7 @@ if MODULE_PICOLIBC -config PICOLIBC_STDOUT_BUFFERED +config MODULE_PICOLIBC_STDOUT_BUFFERED bool "Buffered standard output" default USE_STDOUT_BUFFERED help diff --git a/sys/Kconfig.stdio b/sys/Kconfig.stdio index e29bf20a88..15e5f28597 100644 --- a/sys/Kconfig.stdio +++ b/sys/Kconfig.stdio @@ -34,6 +34,7 @@ config MODULE_STDIO_SEMIHOSTING depends on HAS_ARCH_ARM || HAS_ARCH_RISCV select MODULE_ZTIMER select MODULE_ZTIMER_MSEC + select USE_STDOUT_BUFFERED config MODULE_SLIPDEV_STDIO bool "SLIP network device" diff --git a/sys/usb/usbus/cdc/acm/Kconfig b/sys/usb/usbus/cdc/acm/Kconfig index 524e4b9cb1..897ce2b230 100644 --- a/sys/usb/usbus/cdc/acm/Kconfig +++ b/sys/usb/usbus/cdc/acm/Kconfig @@ -61,5 +61,7 @@ config MODULE_STDIO_CDC_ACM depends on MODULE_USBUS_CDC_ACM && !MODULE_TINYUSB_DEVICE select MODULE_ISRPIPE select MODULE_STDIO_AVAILABLE + select USE_STDOUT_BUFFERED + endchoice From d4b35ec1729528d33b72f5c3512e9076f6531f7b Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Sat, 17 Jun 2023 15:13:19 +0200 Subject: [PATCH 4/4] boards: fix periph_uart_hw_fc dependency resolution --- boards/common/weact-f4x1cx/Kconfig | 2 ++ boards/common/weact-f4x1cx/Makefile.features | 6 ------ boards/common/weact-f4x1cx/weact-f4x1cx.config | 2 -- boards/nrf51dk/Kconfig | 2 +- boards/nrf51dk/Makefile.dep | 4 +++- boards/nrf51dongle/Kconfig | 2 +- boards/nrf51dongle/Makefile.dep | 5 ++++- boards/particle-argon/Kconfig | 2 +- boards/particle-boron/Kconfig | 2 +- boards/stm32f723e-disco/Kconfig | 2 +- boards/stm32f723e-disco/Makefile.dep | 2 +- boards/stm32l496g-disco/Kconfig | 2 +- boards/stm32l496g-disco/Makefile.dep | 2 +- boards/ublox-c030-u201/Kconfig | 2 +- boards/ublox-c030-u201/Makefile.dep | 5 ++++- 15 files changed, 22 insertions(+), 20 deletions(-) delete mode 100644 boards/common/weact-f4x1cx/weact-f4x1cx.config diff --git a/boards/common/weact-f4x1cx/Kconfig b/boards/common/weact-f4x1cx/Kconfig index 46fc01fcd7..825127591f 100644 --- a/boards/common/weact-f4x1cx/Kconfig +++ b/boards/common/weact-f4x1cx/Kconfig @@ -24,6 +24,8 @@ config BOARD_COMMON_WEACT_F4X1CX select HAVE_SAUL_GPIO select HAVE_MTD_SPI_NOR + select MODULE_BOOTLOADER_STM32 if MODULE_STDIO_CDC_ACM + select MODULE_USB_BOARD_RESET if KCONFIG_USB && TEST_KCONFIG config CLOCK_HSE default 25000000 diff --git a/boards/common/weact-f4x1cx/Makefile.features b/boards/common/weact-f4x1cx/Makefile.features index 8778a2e59c..d2d81aba42 100644 --- a/boards/common/weact-f4x1cx/Makefile.features +++ b/boards/common/weact-f4x1cx/Makefile.features @@ -12,9 +12,3 @@ FEATURES_PROVIDED += periph_usbdev # Various other features (if any) FEATURES_PROVIDED += highlevel_stdio - -# This configuration enables modules that are only available when using Kconfig -# module modelling -ifeq (1, $(TEST_KCONFIG)) - KCONFIG_BOARD_CONFIG += $(RIOTBOARD)/common/weact-f4x1cx/weact-f4x1cx.config -endif diff --git a/boards/common/weact-f4x1cx/weact-f4x1cx.config b/boards/common/weact-f4x1cx/weact-f4x1cx.config deleted file mode 100644 index d7a295b937..0000000000 --- a/boards/common/weact-f4x1cx/weact-f4x1cx.config +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_MODULE_BOOTLOADER_STM32=y -CONFIG_MODULE_USB_BOARD_RESET=y diff --git a/boards/nrf51dk/Kconfig b/boards/nrf51dk/Kconfig index 6cc36c9b6b..be2b3812bf 100644 --- a/boards/nrf51dk/Kconfig +++ b/boards/nrf51dk/Kconfig @@ -20,6 +20,6 @@ config BOARD_NRF51DK select HAVE_SAUL_GPIO - select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC + select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART source "$(RIOTBOARD)/common/nrf51/Kconfig" diff --git a/boards/nrf51dk/Makefile.dep b/boards/nrf51dk/Makefile.dep index 7b8cb845b6..48cf92c800 100644 --- a/boards/nrf51dk/Makefile.dep +++ b/boards/nrf51dk/Makefile.dep @@ -2,6 +2,8 @@ ifneq (,$(filter saul_default,$(USEMODULE))) USEMODULE += saul_gpio endif -FEATURES_REQUIRED += periph_uart_hw_fc +ifneq (,$(filter periph_uart,$(USEMODULE))) + FEATURES_REQUIRED += periph_uart_hw_fc +endif include $(RIOTBOARD)/common/nrf51/Makefile.dep diff --git a/boards/nrf51dongle/Kconfig b/boards/nrf51dongle/Kconfig index 367b8714c0..4c4b61861b 100644 --- a/boards/nrf51dongle/Kconfig +++ b/boards/nrf51dongle/Kconfig @@ -15,6 +15,6 @@ config BOARD_NRF51DONGLE select HAS_PERIPH_UART select HAS_PERIPH_UART_HW_FC - select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC + select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART source "$(RIOTBOARD)/common/nrf51/Kconfig" diff --git a/boards/nrf51dongle/Makefile.dep b/boards/nrf51dongle/Makefile.dep index 581680658c..8237864e02 100644 --- a/boards/nrf51dongle/Makefile.dep +++ b/boards/nrf51dongle/Makefile.dep @@ -1,3 +1,6 @@ -FEATURES_REQUIRED += periph_uart_hw_fc + +ifneq (,$(filter periph_uart,$(USEMODULE))) + FEATURES_REQUIRED += periph_uart_hw_fc +endif include $(RIOTBOARD)/common/nrf51/Makefile.dep diff --git a/boards/particle-argon/Kconfig b/boards/particle-argon/Kconfig index 28729ede92..3420c70f8d 100644 --- a/boards/particle-argon/Kconfig +++ b/boards/particle-argon/Kconfig @@ -11,6 +11,6 @@ config BOARD_PARTICLE_ARGON bool default y select BOARD_COMMON_PARTICLE_MESH - select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART + select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART source "$(RIOTBOARD)/common/particle-mesh/Kconfig" diff --git a/boards/particle-boron/Kconfig b/boards/particle-boron/Kconfig index 842061223b..cdd324939f 100644 --- a/boards/particle-boron/Kconfig +++ b/boards/particle-boron/Kconfig @@ -11,6 +11,6 @@ config BOARD_PARTICLE_BORON bool default y select BOARD_COMMON_PARTICLE_MESH - select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART + select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART source "$(RIOTBOARD)/common/particle-mesh/Kconfig" diff --git a/boards/stm32f723e-disco/Kconfig b/boards/stm32f723e-disco/Kconfig index 4621f6a6da..fa9b2e71c6 100644 --- a/boards/stm32f723e-disco/Kconfig +++ b/boards/stm32f723e-disco/Kconfig @@ -34,7 +34,7 @@ config BOARD_STM32F723E_DISCO select HAVE_SAUL_GPIO select HAVE_FT5X06 - select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART + select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART # Workaround due to stdout only working with stdin enabled select MODULE_STDIN if TEST_KCONFIG diff --git a/boards/stm32f723e-disco/Makefile.dep b/boards/stm32f723e-disco/Makefile.dep index c58bbadcdb..6334b41c7e 100644 --- a/boards/stm32f723e-disco/Makefile.dep +++ b/boards/stm32f723e-disco/Makefile.dep @@ -1,5 +1,5 @@ ifneq (,$(filter periph_uart,$(USEMODULE))) - USEMODULE += periph_uart_hw_fc + FEATURES_REQUIRED += periph_uart_hw_fc endif ifneq (,$(filter saul_default,$(USEMODULE))) diff --git a/boards/stm32l496g-disco/Kconfig b/boards/stm32l496g-disco/Kconfig index 5121c61815..cc5a452ffe 100644 --- a/boards/stm32l496g-disco/Kconfig +++ b/boards/stm32l496g-disco/Kconfig @@ -41,7 +41,7 @@ config BOARD_STM32L496G_DISCO select HAVE_FT5X06 select MODULE_PERIPH_LPUART if MODULE_PERIPH_UART - select MODULE_PERIPH_UART_HW_FC if MODULE_PERIPH_UART && !MODULE_PERIPH_SPI_STMOD + select MODULE_PERIPH_UART_HW_FC if MODULE_PERIPH_UART && !MODULE_PERIPH_SPI_STMOD && HAS_PERIPH_UART_HW_FC source "$(RIOTBOARD)/common/stm32/Kconfig" diff --git a/boards/stm32l496g-disco/Makefile.dep b/boards/stm32l496g-disco/Makefile.dep index f1d8250e5c..27f8d0c45e 100644 --- a/boards/stm32l496g-disco/Makefile.dep +++ b/boards/stm32l496g-disco/Makefile.dep @@ -14,6 +14,6 @@ ifneq (,$(filter periph_uart,$(USEMODULE))) USEMODULE += periph_lpuart ifeq (,$(filter periph_spi_stmod_plus,$(USEMODULE))) # if STMod+ is not used with SPI (default), the UART interface uses HW FC - USEMODULE += periph_uart_hw_fc + FEATURES_REQUIRED += periph_uart_hw_fc endif endif diff --git a/boards/ublox-c030-u201/Kconfig b/boards/ublox-c030-u201/Kconfig index fc73c1fa7b..2e1fd0ddd7 100644 --- a/boards/ublox-c030-u201/Kconfig +++ b/boards/ublox-c030-u201/Kconfig @@ -28,7 +28,7 @@ config BOARD_UBLOX_C030_U201 select BOARD_HAS_LSE select HAVE_SAUL_GPIO - select MODULE_PERIPH_UART_HW_FC if TEST_KCONFIG && HAS_PERIPH_UART_HW_FC + select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART config CLOCK_HSE default 12000000 diff --git a/boards/ublox-c030-u201/Makefile.dep b/boards/ublox-c030-u201/Makefile.dep index 78e64f15ca..5bac246cb4 100644 --- a/boards/ublox-c030-u201/Makefile.dep +++ b/boards/ublox-c030-u201/Makefile.dep @@ -1,4 +1,7 @@ -USEMODULE += periph_uart_hw_fc +ifneq (,$(filter periph_uart,$(USEMODULE))) + FEATURES_REQUIRED += periph_uart_hw_fc +endif + ifneq (,$(filter saul_default,$(USEMODULE))) USEMODULE += saul_gpio