Среда разработки
Официальная документация содержит более полные инструкции по настройке. Однако я кратко расскажу об основных инструментах и настройках, которые понадобятся для наших упражнений. Если возникнут проблемы, обратитесь к официальной документации.
cargo-binstall
Чтобы установить бинарные утилиты Rust без сборки из исходников через cargo install или ручной загрузки пакетов, можно использовать cargo-binstall. Мы применим его, чтобы установить инструмент espflash.
#![allow(unused)]
fn main() {
cargo install cargo-binstall
}
espflash
«espflash — это утилита для прошивки через последовательный порт, основанная на esptool.py, для SoC и модулей Espressif.» Именно её мы будем использовать (если не используем probe-rs), чтобы загрузить наш код на устройство и запустить его.
cargo binstall espflash
Если возникнут проблемы, можно установить именно ту версию, которая использовалась при написании этой книги.
cargo binstall espflash@4.2.0
После установки введите команду espflash, чтобы проверить, что всё работает.
espflash --version
Шаблоны ESP-RS
Мы будем использовать шаблоны, которые предоставляет ESP-RS. Их два:
- esp-generate: шаблон
no_std. Большую часть времени мы будем работать именно с ним. - esp-idf-template: шаблон
std.
esp-generate
Утилита esp-generate предназначена для создания приложений no_std. Сейчас она поддерживает ESP32, ESP32-C2/C3/C6, ESP32-H2 и ESP32-S2/S3.
cargo install esp-generate --locked
Если хотите повторить код ровно так, как он есть в этом проекте, установите ту версию esp-generate, которая использовалась для создания примеров:
cargo install esp-generate@1.0.0 --locked
Создание проекта с esp-generate
В этой книге мы будем использовать ESP32. Я настоятельно рекомендую брать то же оборудование, чтобы было проще следовать за материалом.
# Замените PROJECT_NAME и --chip на ваш чип и название проекта.
esp-generate --chip esp32 PROJECT_NAME
Тулчейны для целей RISC-V и Xtensa
Также понадобится espup, чтобы установить необходимые тулчейны. Подробности можно найти здесь.
cargo binstall espup
или точная версия, использованная на момент написания книги:
cargo binstall espup@0.16.0
Затем установите тулчейн:
espup install
Если хотите использовать проект ровно в том виде, в каком я его создал, может понадобиться точная версия тулчейна Rust. Для этого выполните команду:
espup install --toolchain-version 1.90.0
Примечание: Устанавливайте эту конкретную версию только если собираетесь клонировать и запускать примеры проекта ровно в том виде, в каком они есть. Несовпадение версий может привести к странным ошибкам (пример ошибки: asm! macro is not allowed in naked functions).
Использование примера проекта без изменений
Когда вы создаёте проект с помощью esp-generate, он автоматически устанавливает «esp» как канал тулчейна. Если же вы хотите клонировать и использовать готовые проекты вместо создания с нуля, нужно указать имя тулчейна «book-1.0.0» (в файле rust-toolchain.toml проекта настроен тулчейн book-1.0.0). Это относится только к случаю, когда вы клонируете проект из репозитория esp32-projects и хотите запустить его без изменений.
espup install --name book-1.0.0 --toolchain-version 1.90.0
Окружение ESP Toolchain в оболочке
Если вы используете оболочку Fish, добавьте следующую строку в конфигурацию Fish:
echo '. ~/export-esp.sh' >> ~/.config/fish/config.fish
Если вы используете bash, добавьте следующую строку в файл ~/.bashrc:
echo '. ~/export-esp.sh' >> ~/.bashrc
Проверьте путь к компилятору и убедитесь, что тулчейн теперь доступен:
which xtensa-esp32-elf-gcc
Доступ к USB
Чтобы прошивать ESP32, вашему компьютеру нужно разрешение на доступ к USB-порту. Выполните эту команду, чтобы его выдать:
sudo usermod -a -G dialout $USER
Выйдите из системы и войдите снова, чтобы изменения вступили в силу.