Настройка среды разработки ESP-IDF и компиляция XiaoZhi
В этом руководстве описано, как настроить среду ESP-IDF и собрать прошивку XiaoZhi. Примеры приведены для Windows; команды командной строки в Linux те же.
Требования к версии (из README xiaozhi-esp32, v2.5.x)
- Минимальная версия — ESP-IDF v6.0.1, рекомендуется ветка
release/v6.1. - ESP-IDF 5.x больше не поддерживается. С 5.x сборка завершается ошибкой на этапе разрешения зависимостей.
- Используйте ветку
release/v6.1и избегайте релизного тегаv6.1: для этого тега есть сообщения о сбое инициализации Wi-Fi на ESP32-C3, см. issue #2344.
Выбор среды разработки
- Редактор: Cursor или VSCode с расширением ESP-IDF, версия SDK — v6.0.1 или новее.
- ОС: проект рекомендует Linux (быстрее сборка, нет проблем с драйверами последовательного порта); Windows тоже подходит.
- Стиль кода: проект использует стиль Google C++, перед отправкой кода см. руководство по стилю кода.
Установка ESP-IDF
1. Загрузка установщика
В Windows установщик ESP-IDF можно получить здесь:
Выберите v6.0.1 или новее. Чтобы использовать рекомендуемую ветку release/v6.1, получите её через Git:
git clone -b release/v6.1 --recursive https://github.com/espressif/esp-idf.git2. Шаги установки
- Запустите загруженный установщик
- Примите лицензионное соглашение
- Выберите путь установки (избегайте диска C: и нелатинских символов в пути)
- Завершите работу мастера
3. Проверка установки
- Откройте ярлык ESP-IDF PowerShell, созданный установщиком (название немного зависит от выбранной версии)
- Терминал автоматически импортирует окружение IDF
- Убедитесь, что версия не ниже 6.0.1:
idf.py --version- Соберите пример проекта:
cd examples/get-started/hello_world/
idf.py buildСборка прошивки XiaoZhi
1. Получение исходного кода
# Клонирование через Git (рекомендуется)
git clone https://github.com/78/xiaozhi-esp32
# Или загрузите ZIP-архив с GitHub2. Настройка платы
- Задайте целевой чип:
# ESP32-S3
idf.py set-target esp32s3
# ESP32-C3
idf.py set-target esp32c3- Выберите плату:
idf.py menuconfig
# Перейдите в Xiaozhi Assistant -> Target Boardconfig.json, целевой чип и плату можно настроить одним шагом с помощью входящего в проект скрипта: python scripts/build.py <имя-каталога-платы>. Язык и слово пробуждения задаются параметрами --language и --wake-word; подробности — в руководстве по пользовательским платам.3. Сборка и прошивка
Основные команды:
# Только сборка
idf.py build
# Сборка и прошивка
idf.py build flash monitor
# Более высокая скорость прошивки
idf.py -b 2000000 build flash monitor
# Указать последовательный порт
idf.py -p COM5 build flash monitor4. Частые изменения конфигурации
Изменение слова пробуждения
idf.py menuconfig
# Перейдите в ESP Speech Recognition -> Wake WordИзменение WebSocket API
idf.py menuconfig
# Перейдите в Xiaozhi Assistant -> Websocket -> Websocket URLОбязательные шаги после смены версии ESP-IDF
После перехода с 5.x (или другой версии) на v6.0.1+ необходимо привести зависимости и кэш в соответствие с новым SDK:
# Обновите подмодули в каталоге ESP-IDF
cd <каталог esp-idf>
git submodule update --init --recursiveЗатем заново загрузите export.sh из этого каталога (в Windows используйте соответствующее окружение ESP-IDF PowerShell), вернитесь в каталог проекта XiaoZhi и выполните:
idf.py fullclean
idf.py buildЧастые проблемы
1. Ускорение компиляции
- Отключите антивирус (включая Windows Defender)
- Удалите папку build и выполните сборку заново
2. Проблемы с драйвером последовательного порта
Если последовательный порт не определяется, установите USB-драйвер для вашего чипа.
3. Конфликты I2C
Если возникает конфликт I2C:
- Выполните
idf.py menuconfig - Выберите
Component config -> Audio Codec Device Configuration - Отключите первый параметр
- Выполните сборку заново
4. Ошибка: project depends on idf (>=6.0.1)
Если вы видите ошибку вида:
ERROR: Because project depends on idf (>=6.0.1) which doesn't match any versions, version solving failed.версия ESP-IDF в текущем окружении слишком старая (например, 5.x). Проект объявляет idf: '>=6.0.1' в main/idf_component.yml. Установите ESP-IDF v6.0.1 или новее (рекомендуется ветка release/v6.1), убедитесь, что терминал загрузил новое окружение, и повторите:
idf.py set-target esp32s3
idf.py build5. Сбой инициализации Wi-Fi на ESP32-C3
Если вы используете релизный тег v6.1 и на ESP32-C3 не инициализируется Wi-Fi, перейдите на ветку release/v6.1, см. issue #2344.
6. Windows: слишком длинная командная строка
Если Ninja сообщает об ошибке CreateProcess (команда компилятора превышает лимит в 32 767 символов), выполните в том же каталоге проекта и в том же терминале ESP-IDF:
idf.py -D CMAKE_NINJA_FORCE_RESPONSE_FILE=ON reconfigure
idf.py buildПосле idf.py fullclean или очистки кэша CMake команду reconfigure нужно выполнить снова. Помочь может и перенос проекта в более короткий путь (например, E:\xz). См. обходной путь в issue #2340.
Примечания
- Не используйте нелатинские символы в пути к проекту
- При переносе проекта удаляйте папку build
- Убедитесь, что выбрана правильная модель чипа
- Регулярно очищайте каталог build, чтобы избежать проблем со сборкой
Дополнительные материалы
- Руководство по пользовательским платам
- Загрузка прошивки и информация о релизах
- Источники: README xiaozhi-esp32,
main/idf_component.yml