搭建ESP32A1S的ADF開發環境
一,獲取IDF和IDF-TOOL
adf是樂鑫的音頻開發框架,里面有許多樂鑫的音頻開發API,同時ADF是基於IDF的。
這一部分可以按照官網的教程一步一步來。
官網教程地址:ADF安裝指南
首先下載esp-idf,如果是第一次使用idf,可以在官網下載一個idf工具安裝器,通過這個安裝器直接安裝idf,同時還可以安裝編譯工具鏈。下載的速度也還可以接受。大概三十分鍾就可以搞定。
本安裝器可為您安裝所需的交叉編譯器、OpenOCD、cmake 和 Ninja 編譯工具,以及一款 mconf-idf 配置工具。此外,本安裝器還可在有需要時下載、運行 Python 3.7 和 Git For Windows 的安裝器。本安裝器還可用於下載任意 ESP-IDF 發布版本。
下載完安裝器后直接運行如下(安裝器運行時需要python3和git的支持):
選擇要安裝的idf的3.3
版本,記住路徑不要有空格。使用ADF開發時最好用3.3的idf,比較穩定不會出錯
接下來是選擇idf-tool的安裝路徑:
等個半小時左右安裝完成。測試工具鏈能不能正常工作。我們的桌面會生成這一個cmd雙擊運行后它會自動為我們設置idf_path等編譯需要的環境變量,我們直接cd到idf里examples里一個工程,例如:
D:\ESP\idf3.3\examples\get-started\hello_world
然后執行idf.py build
如果編譯成功的話就說明編譯工具和idf安裝成功。
二,安裝ADF
樂鑫把ADF放在了github,倉庫地址是:https://github.com/espressif/esp-adf;
這是一個帶子模塊的倉庫,如何加速下載請參考博客提升github下載速度里帶子模塊的下載。
步驟:創建ESP文件夾,然后cmd,執行以下命令克隆倉庫:
git clone https://gitclone.com/github.com/espressif/esp-adf.git
等待clone完成后,再打開esp-adf
目錄下的.gitsubmodules
文件,可以看到該目錄下有三個子模塊倉庫:
idf模塊,esp-adf-libs模塊:adf音頻庫,esp-sr:識別語音庫
在esp-adf-libs
目錄下執行:
git clone https://gitclone.com/github.com/espressif/esp-adf-libs
在esp-sr
目錄下執行:
git clone https://gitclone.com/github.com/espressif/esp-sr.git
在esp-idf
目錄下執行:
git clone https://gitclone.com/github.com/espressif/esp-idf
- 1
以上倉庫下載完成后,修改adf目錄下.gitsubmodules
的內容如下:
[submodule "esp-idf"] path = esp-idf url = https://gitclone.com/github.com/espressif/esp-idf [submodule "components/esp-adf-libs"] path = components/esp-adf-libs url = https://gitclone.com/github.com/espressif/esp-adf-libs [submodule "components/esp-sr"] path = components/esp-sr url = https://gitclone.com/github.com/espressif/esp-sr.git
當兩個倉庫下載完成后 在adf
目錄下cmd執行git submodule update --init
,這一步將兩個子模塊切換到當前ADF要求的版本。至此ADF已經完成安裝,這時要測試一下ADF是否能編譯成功。打開之前的桌面cmd,需要注意的是,在每次打開cmd之前要設置ADF_PATH
在cmd執行set ADF_PATH=你的ADF目錄
例如我的是:set ADF_PATH=D:\ESP\esp-adf
,(路徑不要有空格
或者在ESP\.espressif
目錄下添加該語句,如圖,一勞永逸:
然后cd到隨便ADF目錄下examples下隨意一個工程,與之前一樣idf.py build
測試能否成功通過編譯。
三,適配ADF到ESP32A1S
由於ADF里是沒有ESP32A1S的初始化代碼的,所以需要自己添加進去。
1,首先修改esp-adf\components\audio_board
目錄下的三個配置文件,如下:
1.1,CMakeLists.txt 添加內容如下:
if (CONFIG_ESP_AI_THINKER_V2_2_BOARD) message(STATUS "Current board name is " CONFIG_ESP_AI_THINKER_V2_2_BOARD) list(APPEND COMPONENT_ADD_INCLUDEDIRS ./ai_thinker_audio_kit_v2_2) set(COMPONENT_SRCS ./ai_thinker_audio_kit_v2_2/board.c ./ai_thinker_audio_kit_v2_2/board_pins_config.c ) endif()
1.2,compoment.mk 添加如下:
ifdef CONFIG_ESP_AI_THINKER_V2_2_BOARD
COMPONENT_ADD_INCLUDEDIRS += ./ai_thinker_audio_kit_v2_2 COMPONENT_SRCDIRS += ./ai_thinker_audio_kit_v2_2 endif
1.3,Kconfig.projbuild 修改如下
choice AUDIO_BOARD
prompt "Ai-Thinker Audio board" default ESP_AI_THINKER_V2_2_BOARD help Select an audio board to use with the ESP-ADF config AUDIO_BOARD_CUSTOM bool "Custom audio board" config ESP_LYRAT_V4_3_BOARD bool "ESP32-Lyrat V4.3" config ESP_LYRAT_V4_2_BOARD bool "ESP32-Lyrat V4.2" config ESP_LYRATD_MSC_V2_1_BOARD bool "ESP32-LyraTD-MSC V2.1" config ESP_LYRATD_MSC_V2_2_BOARD bool "ESP32-LyraTD-MSC V2.2" config ESP_LYRAT_MINI_V1_1_BOARD bool "ESP32-Lyrat-Mini V1.1" config ESP32_KORVO_DU1906_BOARD bool "ESP32_KORVO_DU1906" config ESP32_S2_KALUGA_1_V1_2_BOARD bool "ESP32-S2-Kaluga-1 v1.2" config ESP_AI_THINKER_V2_2_BOARD bool "ESP32-AiThinker-audio V2.2" endchoice
1.4 下載ai_thinker_audio_kit_v2_2,添加ai_thinker_audio_kit_v2_2
文件夾到esp-adf\components\audio_board
目錄下,board.c是板子的初始化代碼,board_def.h是對板子IO口的定義, board_pins_config.c是配置iis和iic的IO
引腳的代碼。
2,添加音頻驅動文件,修改esp-adf\components\audio_hal
文件夾下的CMakeLists.txt和compoment.mk
2.1 CMakeLists.txt 修改后如下
2.2 compoment.mk 添加以下內容:
COMPONENT_ADD_INCLUDEDIRS += ./driver/ac101 COMPONENT_SRCDIRS += ./driver/ac101
2.3 在driver文件夾下新建ac101文件夾,並添加ac101.c和ac101.h驅動文件。ac101驅動下載
至此,移植完成!接下來就是測試了。老套路打開cmd,設置ADF_PATH,然后cd到測試項目,先執行idf.py menuconfig
叫出配置菜單來切換A1S開發板。在Audio HAL
選項中選擇安信可的板子,然后save
保存配置,最后idf.py build
.(第一次編譯大概5分鍾把)
出現以下畫面時就是編譯通過:
最后進行燒錄,插入開發板,查看開發板的端口號 例如我的是COM4,接着執行idf.py -p COM4 flash monitor
燒錄進開發板的同時開啟了串口監視器,可以看到串口打印
四,使用asr語音識別例程
由於asr例程的app固件大於2M,所以需要修改項目分區表使app固件在flash有足夠的內存空間,否則燒錄后會出現以下錯誤:
步驟:
1,首先設置menuconfig->Serial Flash config
,配置如下:
2,設置項目使用本地分區表:menuconfig->Partition Table->
,如下
3,修改項目根目錄下的partitions.csv,如下
修改factory的size為2M或者更大的內存。
# Espressif ESP32 Partition Table # Name, Type, SubType, Offset, Size nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 0x200000,
參考文章:
esp32-a1s 音頻開發板移植最新 esp-adf 音頻框架
ADF安裝指南
原文地址:https://blog.csdn.net/weixin_44821644/article/details/107893487