You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Zephyr中为ESP32启用WiFi驱动时遇Kconfig编译错误求助

编译Zephyr WiFi示例ESP32版本时的Kconfig依赖错误解决方法

问题场景

使用Zephyr的WiFi示例项目,尝试为ESP32开发板编译,在CMakeLists.txt中添加了以下配置:

set (BOARD esp32)
set (ZEPHYR_MODULES "[path to zephyr root]/zephyrproject/modules/hal/espressif")

执行编译时出现Kconfig依赖警告,最终编译中止,错误信息如下:

警告:MBEDTLS(定义于modules\mbedtls\Kconfig:17)的直接依赖项值为n,但当前被以下符号设为y选中:
 - WIFI_ESP32(定义于drivers/wifi/esp32/Kconfig.esp32:3),值为y,直接依赖项DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y),选中条件DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y)
 - NET_TCP_ISN_RFC6528(定义于subsys/net/ip/Kconfig:504),值为y,直接依赖项NET_TCP && !NET_RAW_MODE && NETWORKING(值:y),选中条件NET_TCP && !NET_RAW_MODE && NETWORKING(值:y)

警告:MBEDTLS_ECP_C(定义于modules\mbedtls\Kconfig.tls-generic:135)的直接依赖项MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = \"config-tls-generic.h\" && MBEDTLS && 0值为n,但当前被以下符号设为y选中:
 - WIFI_ESP32(定义于drivers/wifi/esp32/Kconfig.esp32:3),值为y,直接依赖项DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y),选中条件DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y)

警告:MBEDTLS_ECDH_C(定义于modules\mbedtls\Kconfig.tls-generic:123)的直接依赖项MBEDTLS_ECP_C && MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = \"config-tls-generic.h\" && MBEDTLS && 0值为n,但当前被以下符号设为y选中:
 - WIFI_ESP32(定义于drivers/wifi/esp32/Kconfig.esp32:3),值为y,直接依赖项DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y),选中条件DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y)

警告:MBEDTLS_ECDSA_C(定义于modules\mbedtls\Kconfig.tls-generic:127)的直接依赖项MBEDTLS_ECP_C && MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = \"config-tls-generic.h\" && MBEDTLS && 0值为n,但当前被以下符号设为y选中:
 - WIFI_ESP32(定义于drivers/wifi/esp32/Kconfig.esp32:3),值为y,直接依赖项DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y),选中条件DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y)

警告:MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED(定义于modules\mbedtls\Kconfig.tls-generic:102)的直接依赖项MBEDTLS_ECDH_C && MBEDTLS_ECDSA_C && MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = \"config-tls-generic.h\" && MBEDTLS && 0值为n,但当前被以下符号设为y选中:
 - WIFI_ESP32(定义于drivers/wifi/esp32/Kconfig.esp32:3),值为y,直接依赖项DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y),选中条件DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y)

警告:MBEDTLS_ECP_ALL_ENABLED(定义于modules\mbedtls\Kconfig.tls-generic:143)的直接依赖项MBEDTLS_ECP_C && MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = \"config-tls-generic.h\" && MBEDTLS && 0值为n,但当前被以下符号设为y选中:
 - WIFI_ESP32(定义于drivers/wifi/esp32/Kconfig.esp32:3),值为y,直接依赖项DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y),选中条件DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y)

警告:MBEDTLS_MAC_MD5_ENABLED(定义于modules\mbedtls\Kconfig.tls-generic:309)的直接依赖项MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = \"config-tls-generic.h\" && MBEDTLS && 0值为n,但当前被以下符号设为y选中:
 - NET_TCP_ISN_RFC6528(定义于subsys/net/ip/Kconfig:504),值为y,直接依赖项NET_TCP && !NET_RAW_MODE && NETWORKING(值:y),选中条件NET_TCP && !NET_RAW_MODE && NETWORKING(值:y)

警告:MBEDTLS_MD(定义于modules\mbedtls\Kconfig.tls-generic:361)的直接依赖项MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = \"config-tls-generic.h\" && MBEDTLS && 0值为n,但当前被以下符号设为y选中:
 - NET_TCP_ISN_RFC6528(定义于subsys/net/ip/Kconfig:504),值为y,直接依赖项NET_TCP && !NET_RAW_MODE && NETWORKING(值:y),选中条件NET_TCP && !NET_RAW_MODE && NETWORKING(值:y)

警告:MBEDTLS_ENTROPY_ENABLED(定义于modules\mbedtls\Kconfig.tls-generic:381)的直接依赖项(MBEDTLS_MAC_SHA256_ENABLED || MBEDTLS_MAC_SHA384_ENABLED || MBEDTLS_MAC_SHA512_ENABLED) && MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = \"config-tls-generic.h\" && MBEDTLS && 0值为n,但当前被以下符号设为y选中:
 - WIFI_ESP32(定义于drivers/wifi/esp32/Kconfig.esp32:3),值为y,直接依赖项DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y),选中条件DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED && !SMP && WIFI(值:y)

错误:因Kconfig警告中止编译

问题原因

核心问题是:MBEDTLS相关选项的依赖条件未满足,但被启用的WIFI_ESP32、NET_TCP_ISN_RFC6528等选项间接强制开启,导致Kconfig依赖链冲突,触发编译中止。另外手动设置ZEPHYR_MODULES的方式不符合Zephyr依赖管理规范,容易引发路径或依赖解析错误。

解决步骤

1. 改用Zephyr官方推荐的west工具管理依赖

不要手动修改CMakeLists.txt配置BOARD和ZEPHYR_MODULES,直接通过west命令完成编译:

  • 确保已拉取espressif HAL模块:
    west update espressif
    
  • 直接编译示例项目:
    west build -b esp32 samples/net/wifi
    

west会自动处理模块依赖、BOARD配置,避免手动设置的错误。

2. 修复Kconfig依赖冲突

如果west编译仍出现问题,通过menuconfig调整Kconfig选项:

  • 打开配置界面:
    west build -t menuconfig
    
  • 依次调整以下选项:
    • 进入Security options -> mbedTLS:
      • 启用MBEDTLS_BUILTIN
      • 确认MBEDTLS_CFG_FILE设置为"config-tls-generic.h"
      • 启用MBEDTLS核心选项
      • 启用WIFI_ESP32依赖的MBEDTLS_ECP_C、MBEDTLS_ECDH_C、MBEDTLS_ECDSA_C、MBEDTLS_ENTROPY_ENABLED等选项
    • 进入Networking -> TCP:
      • 确认NET_TCP_ISN_RFC6528依赖的MBEDTLS_MD、MBEDTLS_MAC_MD5_ENABLED已启用
    • 进入Kernel Configuration:
      • 确保SMP(对称多处理)未启用(WIFI_ESP32依赖!SMP)

3. 修正CMakeLists.txt配置(可选)

如果一定要修改CMakeLists.txt,遵循Zephyr规范:

cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(wifi_sample)

# 无需手动设置ZEPHYR_MODULES,west会自动处理
target_sources(app PRIVATE src/main.c)

编译时通过命令行指定BOARD:

west build -b esp32 .

内容的提问来源于stack exchange,提问作者Anushiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:07:07