环境依赖
Win10
ESP-IDF: v4.4.6
开发板: ESP32S3
VSCode: 1.91.1 (system setup)
背景介绍
当我们要进行音频相关的开发时,我们通常需要依赖官方给出的 esp-adf 项目。如果你直接下载下来,设置 target 都是失败的。
解决方案
正确下载和安装 ADF 框架
这一步可以使用 VSCode 插件里自带的 Install ESP-ADF,也可以自己在官网下载:
下载完 ESP-ADF 之后,我们可以打开它的目录,默认我们是不需要它包含IDF子模块的,所以我们要移除IDF子模块。具体的操作过程为:
git submodule deinit -f esp-idf
rm -rf .git/modules/esp-idf
git rm -f esp-idf
然后,我们需要保证其它子模块是正常已经安装好的:
git submodule update --init --recursive --depth 1
下面我介绍三种解决办法:
1.使用 ESP-IDF 4.4 PowerShell 来工作
如果你是一个命令行的高手,之前已经习惯了使用命令行。你可以只是添加一下 ADF 的目录,之后打开就都可以找到ADF相关的内容了。
具体的修改方式是,我们打开 Espressif 所在的目录,找到 Initialize-Idf.ps1,编辑这个文件,直接在
$env:PATH="$env:IDF_TOOLS_PATH;$env:PATH"
的后面添加上一个环境变量即可:
$env:ADF_PATH="D:\Software\Espressif\esp-adf"
Write-Output "Setting ADF_PATH: $env:ADF_PATH"
这样,你每次打开桌面上的 ESP-IDF 4.4 PowerShell,就会看到类似于这样的显示:
2.直接修改项目的 CMakeLists.txt
很多时候,我们开发人员很依赖IDE,很希望不再打开一个命令行进行操作。那么我们再介绍一种只修改当前项目 CMakeLists.txt的方式。
我们先拷贝 ADF 下的其中一个 example:get-started\play_mp3_control
在 VSCode 中,我们直接设置目标芯片为esp32s3会发生下面的错误:
首先告诉我们无法 include 文件:
CMake Error at CMakeLists.txt:10 (include):
include could not find requested file:
/CMakeLists.txt
后面的日志还会再次提醒,没有ADF框架中的一个叫audio_sal的组件:
CMake Error at D:/Software/Espressif/frameworks/esp-idf-v4.4.6/tools/cmake/build.cmake:201 (message):
Failed to resolve component 'audio_sal'.
其实,CMakeLists.txt:10 (include)所指出的 include 失败,就是因为这一句:
include($ENV{ADF_PATH}/CMakeLists.txt)
里面的 $ENV{ADF_PATH} 是空的,遇到这种情况,我们修改一下这个脚本,把它和 IDF_PATH 都打印出来,就一目了然了。
我们可以将 CMakeLists.txt 改为:
cmake_minimum_required(VERSION 3.5)
message("Current IDF_PATH is " $ENV{IDF_PATH})
message("Current ADF_PATH is " $ENV{ADF_PATH})
include($ENV{ADF_PATH}/CMakeLists.txt)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(play_mp3_control)
可以发现,当我们再次尝试设置目标芯片,OUTPUT 日志中打印出来这样的内容:
Current IDF_PATH is D:/Software/Espressif/frameworks/esp-idf-v4.4.6/
Current ADF_PATH is
CMake Error at CMakeLists.txt:10 (include):
include could not find requested file:
/CMakeLists.txt
所以我们可以手动指定 ADF_PATH ,也就是把 CMakeLists.txt 调整为:
cmake_minimum_required(VERSION 3.5)
set(ENV{ADF_PATH} D:/Software/Espressif/esp-adf)
message("Current IDF_PATH is " $ENV{IDF_PATH})
message("Current ADF_PATH is " $ENV{ADF_PATH})
include($ENV{ADF_PATH}/CMakeLists.txt)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(play_mp3_control)
然后就运行正常了。
💡 大家之后遇到困难,也要多看日志,有好多框架引入失败就是某个环境变量没有设置成功导致。
3.修改插件配置
还有一种一劳永逸的办法,是ESP-IDF插件给Win用户创建的配置😊,你可以打开 Settings(快捷键是 Ctrl+,),直接搜索 esp adf,
把带 Win 的配置 Idf: Esp Adf Path Win 写上 ADF_PATH 路径就可以,这样我们就能在后续的项目中顺利使用啦!
结语
以上就是ESP32S3下如何使用官方ADF框架的探索过程以及解决方案了,关于ADF框架,我们需要不断通过例程去学习如何使用它。
我推荐先跑通 get-started 里的三个项目,然后根据自己的业务场景来选择 —— 到底是录音还是语音唤醒?还是播放?还是……
欢迎大家在评论区华山论剑!
修改记录
| 时间 | 内容 |
|---|---|
| 2024-08-05 | 完成初稿 |