内核配置

内核选项用于选择 Linux 中包含的驱动和系统功能。 S31 defconfig 位于 linux-esp32-s31/arch/riscv/configs/ 下。 顶层构建应用 configs/kernel/common.config 和 configs/kernel/board.config,可用 DEBUG=1 追加诊断片段。所有构建使用完整配置。

S31 选项

下列名称省略了 .config 文件中使用的 CONFIG_ 前缀。

选项

用途

ESP32S31_CLIC

核心本地中断控制器

ESP32S31_SYSTIMER_CLOCKSOURCE

S31 defconfig 使用的 SYSTIMER 驱动,提供 16 MHz 时钟源和 S31 定时事件辅助函数

ESP32S31_SYSTIMER

构建同一个 SYSTIMER 驱动的另一项 Kconfig 入口

ESP32S31_SYSTEM_TIMERS

通过 Counter 框架只读访问 SYSTIMER 和 LP RTC 计数器

ESP32S31_COPROC_CONTEXT

保存和恢复协处理器状态

ESP32S31_CACHE

缓存支持

ESP32S31_CLOCK

时钟和复位提供程序

ESP32S31_PMU

电源域提供程序

ESP32S31_DT_OVERLAY

运行时覆盖层管理器

ESP32S31_AHB_GDMA, ESP32S31_AXI_GDMA

DMAengine 提供程序

ESP32S31_GPTIMER, ESP32S31_PCNT

通用定时器和脉冲计数器

ESP32S31_ADC, ESP32S31_DAC

模拟转换

ESP32S31_COMPARATOR, ESP32S31_TOUCH

比较器和触摸感应

ESP32S31_WATCHDOG

看门狗支持

ESP32S31_LP_REMOTEPROC

LP 核固件和邮箱

ESP32S31_RADIO_BLOBS

外部无线固件支持

ESP32S31_RADIO_SMODE, ESP32S31_RADIO_SMODE_DRIVER

Linux S-mode 无线运行时

ESP32S31_WIFI、ESP32S31_WIFI_SOFTMAC

mac80211 单 STA 前端

ESP32S31_RADIO_XIP

专用 Flash 分区中的预链接无线载荷

CC_OPTIMIZE_FOR_SIZE

原生内核体积优化(-Os)

TRIM_UNUSED_KSYMS

上游未使用导出裁剪机制,保留自动生成的无线导入白名单

UNUSED_KSYMS_WHITELIST

顶层构建传入的 out/generated/radio-kernel-symbols.txt 路径

EXT4_FS、JBD2

完整配置中的内置 ext4 与日志支持

BT_ESP32S31

蓝牙前端

CRYPTO_DEV_ESP32S31

硬件加密驱动

外设子系统也有各自的选项,例如 I2C_ESP32S31、SPI_ESP32S31 和 SND_SOC_ESP32S31_I2S。 其 Kconfig 条目会声明框架依赖。I2C 和 SPI 使用 depends on 声明时钟、设备树 支持等要求,必须先启用这些依赖。I2S 选项还会选中通用 DMAengine PCM 辅助 组件。每 CPU 时钟事件由 RISC-V 定时器驱动实现,它会调用 S31 SYSTIMER 事件 辅助函数;ESP32S31_SYSTEM_TIMERS 则是独立的 Counter 接口。

顶层构建强制检查体积优化、无线 XIP、带自动生成无线白名单的上游导出裁剪、 内置 ext4 和完整开发板外设配置。关闭这些必需选项会使配置检查失败。 白名单在原生 Linux 构建前根据无线载荷的未定义符号生成,不应改为手工维护列表。

检查构建

运行 make linux 后,生成的配置位于 out/linux/.config。例如:

grep -E '^(CONFIG_I2C_ESP32S31=|# CONFIG_I2C_ESP32S31 is not set)' out/linux/.config
grep -E '^(CONFIG_ESP32S31_RADIO_SMODE_DRIVER=|# CONFIG_ESP32S31_RADIO_SMODE_DRIVER is not set)' out/linux/.config

y 将功能编入内核;对于支持模块化的选项,m 将其构建为可加载模块。 禁用的选项显示为 # CONFIG_NAME is not set。

.config 是生成的文件。如需长期保留更改,应更新源码 defconfig,以及影响 该选项的 configs/kernel/ 片段。下次顶层构建会重新应用这些输入, 并通过 olddefconfig 解析依赖。要使用可选外设,还需在开发板上启用对应的 覆盖层;覆盖层无法提供构建时被省略的驱动。