实机验证通过后,按 Kapi 无屏底座路线补齐 Pendant RTC 吊坠项目的迁移修复。 1. BLE 配网与资源隔离 - sdkconfig.defaults 开启 BT 优先 PSRAM 分配,并将 LWIP socket 上限提升到 20 - sdkconfig.defaults.esp32s3 允许 BSS/NOINIT 放入 PSRAM,释放内部 SRAM 给 BLE/WiFi/RTC - 配网模式 codec 使用 StartOutputOnly(),跳过麦克风 RX DMA 和 ES7210 输入链路 - ResetWifiConfiguration() 改为独立 wifi_reset task,避免在 iot_button/esp_timer 回调中阻塞延时 - WifiBoard 增加 IsWifiConfigMode(),供启动阶段判断是否走配网资源隔离路径 2. 音频底噪与 DMA 残留修复 - AudioCodec 增加 StartOutputOnly(),支持仅启动扬声器输出 - RTC 音频通道打开后灌入 200ms silence PCM,覆盖 I2S DMA 残留数据 - 软退出进入待命前重启 codec output 并再次灌静音,减少待命音/欢迎语前杂音 - box_audio_codec 在无硬件回采时使用 channel_mask=0,避免 I2S slot mask 被错误污染 3. 软件 loopback AEC - 引入 esp_aec 底层同步 API,使用 DAC 输出复制构建 ref ring - 上行 mic PCM 与延迟 ref 做同步消回声,适配无屏无硬件回采的 Pendant 形态 - AEC 采用 lazy init,减少启动阶段对 WiFi/BLE 内部 SRAM 的压力 - ref 静音时直接 passthrough,避免 AI 静音后误压制用户语音 - 在 player_pipeline_write 和 codec->OutputData 两条下行路径都追加 ref hook 4. RTC 连接稳定性与软退出 - VolcRtcProtocol 增加 LeaveRoom(bool notify_closed),支持 stop 房间但保留 rtc_handle - hibernate 路径使用 LeaveRoom(false),避免关闭回调顺手关掉 codec output 导致待命音无声 - LeaveRoom/ForceRebuildEngine 重置 downlink_is_pcm_ 和首包标志,避免本地 Opus 音效被当 PCM 播成杂音 - OpenAudioChannel 连续失败 3 次后 ForceRebuildEngine,清理 RTC SDK 内部异常状态 - 加入 DIAG-RTC socket/heap/PSRAM/RSSI 日志,便于定位 ICE socket 和内存问题 5. Dialog watchdog 与 BOOT 唤醒 - Dialog watchdog 到期不再写 reboot_dlg_idle 后 esp_restart - 新增 EnterIdleHibernate():软退房、清空残留音频队列、关闭麦克风、播放待命音后静默 - 新增 WakeFromHibernate():BOOT 唤醒后复用 RTC engine 并通过 ToggleChatState() 重连 RTC - BOOT 单击优先判断 IsHibernating(),异步唤醒,避免走普通按键状态机 - hibernate 期间禁止 PowerSaveTimer 进入 Light Sleep,保护 I2C/codec 总线 6. 文档与衍生项目沉淀 - 更新石头光源属性检测方案文档 - 将 Pendant 实测通过的软退出、AEC、BLE 配网隔离经验同步到衍生项目移植规则
177 lines
4.9 KiB
Plaintext
177 lines
4.9 KiB
Plaintext
CONFIG_COMPILER_CXX_EXCEPTIONS=y
|
|
CONFIG_COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE=1024
|
|
|
|
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF=y
|
|
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
|
|
CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS=y
|
|
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
|
|
|
|
# Boot ROM Behavior - 禁用Boot ROM日志输出 新增禁用日志配置(生产环境)
|
|
# =====================================================================
|
|
CONFIG_BOOT_ROM_LOG_ALWAYS_OFF=y
|
|
|
|
# 彻底禁用启动阶段和系统组件日志
|
|
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
|
|
CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2048
|
|
CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
|
|
CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
|
|
|
|
# 禁用coexist组件日志
|
|
CONFIG_ESP_COEX_LOG_LEVEL_NONE=y
|
|
|
|
# 禁用WiFi相关日志
|
|
CONFIG_ESP_WIFI_LOG_LEVEL_NONE=y
|
|
|
|
# 禁用蓝牙日志
|
|
CONFIG_BT_LOG_LEVEL_NONE=y
|
|
|
|
# 彻底禁用底层组件日志输出
|
|
CONFIG_ESP_CONSOLE_UART_NONE=y
|
|
CONFIG_ESP_CONSOLE_NONE=y
|
|
CONFIG_FREERTOS_USE_TRACE_FACILITY=n
|
|
CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=n
|
|
|
|
# 禁用coexist固件版本输出
|
|
CONFIG_ESP_COEX_POWER_MANAGEMENT=n
|
|
CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE=n
|
|
|
|
# 禁用wakenet模型加载日志
|
|
CONFIG_SR_MODEL_WN9_QUANT=n
|
|
CONFIG_ESP_SR_RUN_TEST=n
|
|
|
|
# 彻底禁用所有printf输出
|
|
CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=n
|
|
CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=n
|
|
CONFIG_VFS_SUPPORT_IO=n
|
|
|
|
# 禁用系统启动信息
|
|
CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
|
|
CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=n
|
|
CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
|
|
CONFIG_ESP_TASK_WDT_TIMEOUT_S=5
|
|
|
|
# 禁用ROM启动日志
|
|
CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP=y
|
|
CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
|
|
# =====================================================================
|
|
|
|
CONFIG_HTTPD_MAX_REQ_HDR_LEN=2048
|
|
CONFIG_HTTPD_MAX_URI_LEN=2048
|
|
|
|
CONFIG_PARTITION_TABLE_CUSTOM=y
|
|
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
|
|
CONFIG_PARTITION_TABLE_OFFSET=0x8000
|
|
|
|
CONFIG_ESP_TASK_WDT_TIMEOUT_S=10
|
|
CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y
|
|
CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y
|
|
|
|
CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192
|
|
CONFIG_MBEDTLS_DYNAMIC_BUFFER=y
|
|
CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=n
|
|
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y
|
|
CONFIG_ESP_WIFI_IRAM_OPT=n
|
|
CONFIG_ESP_WIFI_RX_IRAM_OPT=n
|
|
CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER=y
|
|
|
|
CONFIG_CODEC_I2C_BACKWARD_COMPATIBLE=n
|
|
|
|
# LVGL 9.2.2
|
|
|
|
CONFIG_LV_OS_NONE=y
|
|
CONFIG_LV_USE_OS=0
|
|
CONFIG_LV_USE_CLIB_MALLOC=y
|
|
CONFIG_LV_USE_CLIB_STRING=y
|
|
CONFIG_LV_USE_CLIB_SPRINTF=y
|
|
CONFIG_LV_USE_IMGFONT=y
|
|
|
|
# Use compressed font
|
|
CONFIG_LV_FONT_FMT_TXT_LARGE=y
|
|
CONFIG_LV_USE_FONT_COMPRESSED=y
|
|
CONFIG_LV_USE_FONT_PLACEHOLDER=y
|
|
|
|
# Disable extra widgets to save flash size
|
|
CONFIG_LV_USE_ANIMIMG=n
|
|
CONFIG_LV_USE_CALENDAR=n
|
|
CONFIG_LV_USE_CALENDAR_HEADER_ARROW=n
|
|
CONFIG_LV_USE_CALENDAR_HEADER_DROPDOWN=n
|
|
CONFIG_LV_USE_CHART=n
|
|
CONFIG_LV_USE_KEYBOARD=n
|
|
CONFIG_LV_USE_LED=n
|
|
CONFIG_LV_USE_LIST=n
|
|
|
|
# Volcano RTC Configuration
|
|
CONFIG_CONNECTION_TYPE_MQTT_UDP=y
|
|
# CONFIG_CONNECTION_TYPE_WEBSOCKET is not set
|
|
# CONFIG_CONNECTION_TYPE_VOLC_RTC is not set
|
|
CONFIG_VOLC_INSTANCE_ID=""
|
|
CONFIG_VOLC_PRODUCT_KEY=""
|
|
CONFIG_VOLC_PRODUCT_SECRET=""
|
|
CONFIG_VOLC_BOT_ID=""
|
|
CONFIG_VOLC_DEVICE_NAME=""
|
|
CONFIG_LV_USE_MENU=n
|
|
CONFIG_LV_USE_MSGBOX=n
|
|
CONFIG_LV_USE_SPAN=n
|
|
CONFIG_LV_USE_SPINBOX=n
|
|
CONFIG_LV_USE_SPINNER=n
|
|
CONFIG_LV_USE_TABVIEW=n
|
|
CONFIG_LV_USE_TILEVIEW=n
|
|
CONFIG_LV_USE_WIN=n
|
|
|
|
CONFIG_LV_BUILD_EXAMPLES=n
|
|
|
|
# Audio Processing Configuration for AEC+VAD Echo-Aware Optimization
|
|
CONFIG_USE_AUDIO_PROCESSOR=n
|
|
CONFIG_USE_REALTIME_CHAT=y
|
|
CONFIG_USE_WAKE_WORD_DETECT=n
|
|
CONFIG_USE_CUSTOM_WAKE_WORD=n
|
|
CONFIG_WAKE_WORD_NONE=y
|
|
|
|
# Standard ESP-IDF Audio and Logging Configuration
|
|
# CONFIG_LOG_DEFAULT_LEVEL_INFO=y 原有打印日志配置 恢复原有日志打印可以取消注释
|
|
# 彻底禁用所有日志输出 新增禁用日志配置(生产环境)
|
|
# =====================================================================
|
|
CONFIG_LOG_DEFAULT_LEVEL_NONE=y
|
|
CONFIG_LOG_MAXIMUM_LEVEL_NONE=y
|
|
CONFIG_LOG_COLORS=n
|
|
|
|
# 禁用启动任务日志
|
|
CONFIG_ESP_TASK_WDT_EN=n
|
|
CONFIG_ESP_INT_WDT_EN=n
|
|
|
|
# 禁用所有组件的详细日志
|
|
CONFIG_LWIP_ESP32_ETHERNET=n
|
|
CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
|
|
|
|
# 禁用调试和监控功能
|
|
CONFIG_ESP_DEBUG_STUBS_ENABLE=n
|
|
CONFIG_ESP_GDBSTUB_ENABLED=n
|
|
# =====================================================================
|
|
|
|
# Bluetooth Configuration for BluFi Provisioning
|
|
CONFIG_BT_ENABLED=y
|
|
CONFIG_BT_CONTROLLER_ENABLED=y
|
|
CONFIG_BT_CONTROLLER_ONLY=n
|
|
CONFIG_BT_BLUEDROID_ENABLED=y
|
|
CONFIG_BT_CLASSIC_ENABLED=n
|
|
CONFIG_BT_BLE_ENABLED=y
|
|
CONFIG_BT_GATTS_ENABLE=y
|
|
CONFIG_BT_GATTC_ENABLE=y
|
|
CONFIG_BT_BLE_SMP_ENABLE=y
|
|
CONFIG_BT_STACK_NO_LOG=n
|
|
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
|
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=n
|
|
CONFIG_BT_RESERVE_DRAM=0x10000
|
|
CONFIG_LWIP_MAX_SOCKETS=20
|
|
|
|
# BluFi Configuration
|
|
CONFIG_BT_BLUFI_ENABLED=y
|
|
CONFIG_BT_BLE_BLUFI_ENABLE=y
|
|
# Disable BLE 5.0 features for BluFi compatibility
|
|
CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n
|
|
CONFIG_BT_BLUFI_MAX_CONN=1
|
|
|
|
# Bluetooth and WiFi Coexistence
|
|
CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y
|
|
CONFIG_ESP_WIFI_SW_COEXIST_ENABLE=y
|