From 761e06aac06f82b4c7cbb11bac872e915091c7a0 Mon Sep 17 00:00:00 2001 From: cjj <3212642982@qq.com> Date: Tue, 19 May 2026 19:10:46 +0800 Subject: [PATCH] arch/risc-v/esp32c6: fix WiFi STA build and add wifi_usj config Build fixes needed for esp32c6 WiFi STA mode: - arch/risc-v/Kconfig: select ONESHOT_COUNT/FAST_DIVISION for esp32c6 - Wireless.mk: force esp_mbedtls.h before mbedtls headers via -include to prevent implicit-declaration errors in crypto_mbedtls/tls_mbedtls - esp_oneshot.c: use periph_module_enable() instead of v5.2+ RCC API (esp-hal-3rdparty release/v5.1.c predates PERIPH_RCC_ACQUIRE_ATOMIC) - esp_wifi_utils.c, esp_coex_adapter.c: add missing - hal_esp32c6.mk: add timer_periph.c to chip sources - configs/nsh/defconfig: enable ONESHOT, switch to USB serial console - configs/wifi_usj/defconfig: new WiFi STA config using USB serial JTAG Tested: WPA2 4-way handshake completes, DHCP IP assigned via wificonn. Signed-off-by: cjj --- arch/risc-v/Kconfig | 2 + arch/risc-v/src/common/espressif/Wireless.mk | 7 ++ .../risc-v/src/common/espressif/esp_oneshot.c | 25 +++--- .../src/common/espressif/esp_wifi_utils.c | 1 + arch/risc-v/src/esp32c6/esp_coex_adapter.c | 1 + arch/risc-v/src/esp32c6/hal_esp32c6.mk | 1 + .../esp32c6-devkitc/configs/nsh/defconfig | 3 +- .../configs/wifi_usj/defconfig | 83 +++++++++++++++++++ 8 files changed, 107 insertions(+), 16 deletions(-) create mode 100644 boards/risc-v/esp32c6/esp32c6-devkitc/configs/wifi_usj/defconfig diff --git a/arch/risc-v/Kconfig b/arch/risc-v/Kconfig index 9c478054aaf..d31f61db4d7 100644 --- a/arch/risc-v/Kconfig +++ b/arch/risc-v/Kconfig @@ -144,6 +144,8 @@ config ARCH_CHIP_ESP32C6 select ARCH_HAVE_RESET select ARCH_HAVE_RNG select ARCH_HAVE_TICKLESS + select ONESHOT_COUNT if ONESHOT + select ONESHOT_FAST_DIVISION if ONESHOT select LIBC_ARCH_MEMCPY select LIBC_ARCH_MEMCHR select LIBC_ARCH_MEMCMP diff --git a/arch/risc-v/src/common/espressif/Wireless.mk b/arch/risc-v/src/common/espressif/Wireless.mk index c63e1d190fb..4a923700495 100644 --- a/arch/risc-v/src/common/espressif/Wireless.mk +++ b/arch/risc-v/src/common/espressif/Wireless.mk @@ -242,4 +242,11 @@ CHIP_CSRCS += crypto_mbedtls.c CHIP_CSRCS += tls_mbedtls.c CHIP_CSRCS += aes-siv.c +# Force esp_mbedtls.h before any mbedtls headers for crypto_mbedtls-* and tls_mbedtls files. +# These files include mbedtls headers before the __NuttX__ esp_mbedtls.h guard, +# causing implicit-declaration errors. -include guarantees the rename macros are +# active before any mbedtls header is parsed. +# Use TOPDIR (reliable in all sub-make contexts) not ARCH_SRCDIR (empty in makedepfile). +CFLAGS += -include $(TOPDIR)$(DELIM)arch$(DELIM)risc-v$(DELIM)src$(DELIM)chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)nuttx$(DELIM)include$(DELIM)mbedtls$(DELIM)esp_mbedtls.h + endif diff --git a/arch/risc-v/src/common/espressif/esp_oneshot.c b/arch/risc-v/src/common/espressif/esp_oneshot.c index ff9307d1aac..7809bcd44db 100644 --- a/arch/risc-v/src/common/espressif/esp_oneshot.c +++ b/arch/risc-v/src/common/espressif/esp_oneshot.c @@ -414,24 +414,19 @@ struct oneshot_lowerhalf_s *oneshot_initialize(int chan, uint16_t resolution) periph = timer_group_periph_signals.groups[GROUP_ID].module; - PERIPH_RCC_ACQUIRE_ATOMIC(periph, ref_count) - { - if (ref_count == 0) - { - timer_ll_enable_bus_clock(GROUP_ID, true); - timer_ll_reset_register(GROUP_ID); - } - } + /* esp-hal-3rdparty release/v5.1.c (pinned via ESP_HAL_3RDPARTY_VERSION) + * predates the RCC abstraction (PERIPH_RCC_ACQUIRE_ATOMIC, + * timer_ll_enable_bus_clock, timer_ll_reset_register, + * esp_clk_tree_enable_src — all v5.2+). periph_module_enable() is the + * v5.1.c equivalent: it ungates the peripheral bus clock, resets the + * peripheral registers, and bumps an internal refcount. The default + * GPTimer clock source is always available without an explicit enable + * call in v5.1.c. + */ + periph_module_enable(periph); timer_hal_init(&lower->hal, GROUP_ID, TIMER_ID); - ret = esp_clk_tree_enable_src((soc_module_clk_t)GPTIMER_CLK_SRC_DEFAULT, - true); - if (ret != ESP_OK) - { - return NULL; - } - /* Configure clock source */ timer_ll_set_clock_source(GROUP_ID, lower->hal.timer_id, diff --git a/arch/risc-v/src/common/espressif/esp_wifi_utils.c b/arch/risc-v/src/common/espressif/esp_wifi_utils.c index a47d0e206d2..a6461f9af0e 100644 --- a/arch/risc-v/src/common/espressif/esp_wifi_utils.c +++ b/arch/risc-v/src/common/espressif/esp_wifi_utils.c @@ -31,6 +31,7 @@ #include #include +#include #include #include diff --git a/arch/risc-v/src/esp32c6/esp_coex_adapter.c b/arch/risc-v/src/esp32c6/esp_coex_adapter.c index 88fed2ea448..031f9ba7d91 100644 --- a/arch/risc-v/src/esp32c6/esp_coex_adapter.c +++ b/arch/risc-v/src/esp32c6/esp_coex_adapter.c @@ -45,6 +45,7 @@ #include "rom/ets_sys.h" #include "soc/soc_caps.h" #include "private/esp_modem_wrapper.h" +#include /**************************************************************************** * Pre-processor Definitions diff --git a/arch/risc-v/src/esp32c6/hal_esp32c6.mk b/arch/risc-v/src/esp32c6/hal_esp32c6.mk index 7d99f1c6c74..f0a47a57a7f 100644 --- a/arch/risc-v/src/esp32c6/hal_esp32c6.mk +++ b/arch/risc-v/src/esp32c6/hal_esp32c6.mk @@ -153,6 +153,7 @@ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)log$ CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)riscv$(DELIM)interrupt.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)lldesc.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)gpio_periph.c +CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)timer_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)ledc_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)rmt_periph.c CHIP_CSRCS += chip$(DELIM)$(ESP_HAL_3RDPARTY_REPO)$(DELIM)components$(DELIM)soc$(DELIM)$(CHIP_SERIES)$(DELIM)i2c_periph.c diff --git a/boards/risc-v/esp32c6/esp32c6-devkitc/configs/nsh/defconfig b/boards/risc-v/esp32c6/esp32c6-devkitc/configs/nsh/defconfig index 0447207f137..629ba027186 100644 --- a/boards/risc-v/esp32c6/esp32c6-devkitc/configs/nsh/defconfig +++ b/boards/risc-v/esp32c6/esp32c6-devkitc/configs/nsh/defconfig @@ -33,6 +33,7 @@ CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 CONFIG_NSH_READLINE=y CONFIG_NSH_STRERROR=y +CONFIG_ONESHOT=y CONFIG_PREALLOC_TIMERS=0 CONFIG_RR_INTERVAL=200 CONFIG_SCHED_BACKTRACE=y @@ -44,4 +45,4 @@ CONFIG_SYSTEM_DUMPSTACK=y CONFIG_SYSTEM_NSH=y CONFIG_TESTING_GETPRIME=y CONFIG_TESTING_OSTEST=y -CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_ESPRESSIF_USBSERIAL=y diff --git a/boards/risc-v/esp32c6/esp32c6-devkitc/configs/wifi_usj/defconfig b/boards/risc-v/esp32c6/esp32c6-devkitc/configs/wifi_usj/defconfig new file mode 100644 index 00000000000..3423c5fd016 --- /dev/null +++ b/boards/risc-v/esp32c6/esp32c6-devkitc/configs/wifi_usj/defconfig @@ -0,0 +1,83 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ESPRESSIF_UART0 is not set +# CONFIG_NDEBUG is not set +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ALLOW_BSD_COMPONENTS=y +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32c6-devkitc" +CONFIG_ARCH_BOARD_COMMON=y +CONFIG_ARCH_BOARD_ESP32C6_DEVKITC=y +CONFIG_ARCH_CHIP="esp32c6" +CONFIG_ARCH_CHIP_ESP32C6=y +CONFIG_ARCH_CHIP_ESP32C6WROOM1=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_LOOPSPERMSEC=15000 +CONFIG_BUILTIN=y +CONFIG_DRIVERS_IEEE80211=y +CONFIG_DRIVERS_WIRELESS=y +CONFIG_ESPRESSIF_ESP32C6=y +CONFIG_ESPRESSIF_SPIFLASH=y +CONFIG_ESPRESSIF_SPIFLASH_SPIFFS=y +CONFIG_ESPRESSIF_USBSERIAL=y +CONFIG_ESPRESSIF_WIFI=y +CONFIG_EXAMPLES_RANDOM=y +CONFIG_EXAMPLES_WIFICONN=y +CONFIG_FS_PROCFS=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=8192 +CONFIG_INTELHEX_BINARY=y +CONFIG_IOB_NBUFFERS=64 +CONFIG_IOB_THROTTLE=24 +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETDEV_PHY_IOCTL=y +CONFIG_NETDEV_WIRELESS_IOCTL=y +CONFIG_NETUTILS_CJSON=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1514 +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_TCP=y +CONFIG_NET_TCP_DELAYED_ACK=y +CONFIG_NET_TCP_WRITE_BUFFERS=y +CONFIG_NET_UDP=y +CONFIG_NET_UDP_WRITE_BUFFERS=y +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_ONESHOT=y +CONFIG_PREALLOC_TIMERS=0 +CONFIG_PTHREAD_MUTEX_TYPES=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_BACKTRACE=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_SIG_DEFAULT=y +CONFIG_START_DAY=29 +CONFIG_START_MONTH=11 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_DUMPSTACK=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_PING=y +CONFIG_TESTING_GETPRIME=y +CONFIG_TESTING_OSTEST=y +CONFIG_TLS_TASK_NELEM=4 +CONFIG_WIRELESS=y +CONFIG_WIRELESS_WAPI=y +CONFIG_WIRELESS_WAPI_CMDTOOL=y -- Gitee