Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Среда разработки

Официальная документация содержит более полные инструкции по настройке. Однако я кратко расскажу об основных инструментах и настройках, которые понадобятся для наших упражнений. Если возникнут проблемы, обратитесь к официальной документации.

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

Выйдите из системы и войдите снова, чтобы изменения вступили в силу.