Программирование ARM rustup + espup: тулчейн для Rust на платформе ESP32 Thu, August 28 2025  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


rustup + espup: тулчейн для Rust на платформе ESP32 Печать
Добавил(а) microsin   

[Установка rustup]

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: загрузка инсталлятора
Добро пожаловать в Rust!
Этот скрипт загрузит и установит официальный компилятор для языка программирования Rust и менеджер пакетов Cargo.
Метаданные Rustup и тулчейны будут установлены в домашний каталог Rustup, которая находится в профиле пользователя:
$HOME/.rustup
Это можно изменить с помощью переменной окружения RUSTUP_HOME.
Домашняя директория Cargo:
$HOME/.cargo
Это можно изменить с помощью переменной окружения CARGO_HOME.
Программы cargo, rustc, rustup и другие команды будут добавлены в каталог bin системы Cargo:
$HOME/.cargo/bin
Этот путь будет затем добавлен в вашу переменную окружения PATH, путем модификации файлов профиля:
$HOME/.profile $HOME/.bashrc
Вы можете деинсталлировать rustup в любой момент, и для всех этих изменений будет выполнен откат.
Текущие опции инсталляции:
default host triple: x86_64-unknown-linux-gnu default toolchain: stable (default) profile: default modify PATH variable: yes
1) Выполнить стандартную установку (default - просто нажмите enter) 2) Настроить установку 3) Отменить установку > (Enter)
info: profile установлен на 'default' info: default host triple is x86_64-unknown-linux-gnu info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu' info: latest update on 2025-08-07, rust version 1.89.0 (29483883e 2025-08-04) info: загрузка компонента 'cargo' info: загрузка компонента 'clippy' info: загрузка компонента 'rust-docs' 20.2 MiB / 20.2 MiB (100 %) 16.8 MiB/s in 1s info: загрузка компонента 'rust-std' 27.6 MiB / 27.6 MiB (100 %) 18.3 MiB/s in 1s info: загрузка компонента 'rustc' 78.1 MiB / 78.1 MiB (100 %) 21.7 MiB/s in 3s info: загрузка компонента 'rustfmt' info: установка компонента 'cargo' info: установка компонента 'clippy' info: установка компонента 'rust-docs' 20.2 MiB / 20.2 MiB (100 %) 14.7 MiB/s in 1s info: установка компонента 'rust-std' 27.6 MiB / 27.6 MiB (100 %) 16.4 MiB/s in 1s info: установка компонента 'rustc' 78.1 MiB / 78.1 MiB (100 %) 18.3 MiB/s in 4s info: установка компонента 'rustfmt' info: тулчайн по умолчанию установлен на 'stable-x86_64-unknown-linux-gnu'
stable-x86_64-unknown-linux-gnu installed - rustc 1.89.0 (29483883e 2025-08-04)

Rust теперь установлен. Отлично!

Чтобы начать работу, вам может понадобиться перезагрузить текущий шелл. Это перезагрузит переменную окружения PATH, чтобы подключить папку bin Cargo ($HOME/.cargo/bin).

Для конфигурации вашего текущего шелла вам нужно выполнить команду source соответствующего env-файла из $HOME/.cargo.

Это обычно делается следующей командой (обратите внимание на начальную ТОЧКУ):

$ . "$HOME/.cargo/env"            # Для sh/bash/zsh/ash/dash/pdksh
$ source "$HOME/.cargo/env.fish"  # Для fish
$ source $"($nu.home-path)/.cargo/env.nu"  # Для nushell

[Установка espup]

espup это инструмент для установки и облуживания необходимых тулчейнов для разработки приложений микроконтроллеров Espressif SoC на языке Rust.

Чтобы лучше понять, что устанавливает espup, см. главу с описанием установки [3] в документации "The Rust on ESP Book".

Предварительные требования. Перед тем, как запустить или установить espup, убедитесь, что rustup установлен (см. выше "Установка rustup").

На Linux-системах также потребуются следующие пакеты:

Ubuntu/Debian
sudo apt-get install -y gcc build-essential curl pkg-config

Fedora
sudo dnf -y install perl gcc

perl необходим для сборки openssl-sys.

openSUSE Thumbleweed/Leap
sudo zypper install -y gcc ninja make

Установка. Выполните команду:

$ cargo install espup --locked

$ cargo install espup --locked
    Updating crates.io index
  Downloaded espup v0.15.1
  Downloaded 1 crate (52.4KiB) in 0.46s
  Installing espup v0.15.1
    Updating crates.io index
    Updating crates.io index
  Downloaded crc32fast v1.4.2
  Downloaded bzip2 v0.5.2
  Downloaded futures-channel v0.3.31
  Downloaded indicatif-log-bridge v0.2.3
  ...
  Downloaded zstd-sys v2.0.15+zstd.1.5.7
  Downloaded libc v0.2.171
  Downloaded linux-raw-sys v0.9.3
  Downloaded openssl-src v300.4.2+3.4.1
  Downloaded 258 crates (32.7MiB) in 2.17s (largest was `openssl-src` at 9.5MiB)
   Compiling libc v0.2.171
   Compiling proc-macro2 v1.0.94
   Compiling unicode-ident v1.0.18
   Compiling cfg-if v1.0.0
  ...
   Compiling zip v3.0.0
   Compiling tokio-native-tls v0.3.1
   Compiling hyper-tls v0.6.0
   Compiling reqwest v0.12.15
   Compiling espup v0.15.1
    Finished `release` profile [optimized] target(s) in 1m 43s
  Installing $HOME/.cargo/bin/espup
   Installed package `espup v0.15.1` (executable `espup`)

Также можно использовать cargo-binstall [4], или напрямую загрузить предварительно скомпилированные бинарники релиза (см. врезку ниже).

• Linux aarch64

curl -L https://github.com/esp-rs/espup/releases/latest/download/espup-aarch64-unknown-linux-gnu -o espup
chmod a+x espup

• Linux x86_64

curl -L https://github.com/esp-rs/espup/releases/latest/download/espup-x86_64-unknown-linux-gnu -o espup
chmod a+x espup

• macOS aarch64

curl -L https://github.com/esp-rs/espup/releases/latest/download/espup-aarch64-apple-darwin -o espup
chmod a+x espup

• macOS x86_64

curl -L https://github.com/esp-rs/espup/releases/latest/download/espup-x86_64-apple-darwin -o espup
chmod a+x espup

• Windows MSVC

Invoke-WebRequest 'https://github.com/esp-rs/espup/releases/latest/download/espup-x86_64-pc-windows-msvc.exe' \
 -OutFile .\espup.exe

[Быстрый старт]

Выполните команду:

$ espup install

$ espup install
[info]: Installing the Espressif Rust ecosystem
[info]: Checking Rust installation
[info]: Installing Xtensa Rust 1.88.0.0 toolchain
[info]: Installing Xtensa LLVM
[info]: Installing RISC-V Rust targets ('riscv32imc-unknown-none-elf',
 'riscv32imac-unknown-none-elf' and 'riscv32imafc-unknown-none-elf')
  for 'stable' toolchain
[info]: Installing GCC (xtensa-esp-elf)
[info]: Creating symlink between '$HOME/.rustup/toolchains/esp/xtensa-esp32-elf-clang/
 esp-19.1.2_20250225/esp-clang/lib' and '$HOME/.espup/esp-clang'
[info]: All downloads complete
[info]: Installing 'rust' component for Xtensa Rust toolchain
[info]: Installing 'rust-src' component for Xtensa Rust toolchain
[info]: Installation successfully completed!
To get started, you need to set up some environment variables by running: '. $HOME/export-esp.sh' This step must be done every time you open a new terminal. See other methods for setting the environment in https://esp-rs.github.io/book/installation/riscv-and-xtensa.html#3-set-up-the-environment-variables

Для дополнительной информации см. далее секцию "Использование".

Настройка переменных окружения. После установки тулчейна, на системах Unix вам нужно выполнить команду source для файла скрипта export-esp.sh, который выполнит экспорт необходимых переменных окружения. Этот файл генерирует espup, и по умолчанию он находится в домашней директории пользователя. Различные способы для source файла:

• В любом терминале:

$ . $HOME/export-esp.sh

Этот метод требует запуска команды в каждом новом шелле.

• Создание алиаса для выполнения export-esp.sh:

i) Скопируйте и вставьте следующую команду в ваш профиль шелла (файл .profile, .bashrc, .zprofile, и т. п., находящийся в директории $HOME):

alias get_esprs='. $HOME/export-esp.sh'

ii) Обновите конфигурацию путем перезапуска сессии терминала, или запустите команду source [путь до файла профиля], например:

$ source ~/.bashrc

Этот метод соответствует запуску алиаса get_esprs в каждом новом шелле.

• Непосредственное добавление нужных команд сразу в ваш профиль. 

i) Добавьте содержимое скрипта $HOME/export-esp.sh в профиль вашего шелла: cat $HOME/export-esp.sh >> [путь до профиля], например:

$ cat $HOME/export-esp.sh >> ~/.bashrc

ii) Обновите конфигурацию путем перезапуска сессии терминала, или запустите команду source [путь до профиля], например:

$ source ~/.bashrc

Важное замечание: на операционной системе Windows переменные окружения автоматически инжектируются в вашу систему, и действия по их инжектированию не требуются.

[Использование]

Для подсказки по использованию выполните команду:

$ espup --help
Usage: espup < команда>
Команды: completions Генерировать автодополнения команд для данного шелла. install Установит экосистему Espressif Rust uninstall Деинсталлирует экосистему Espressif Rust update Обновит тулчейн Xtensa Rust help Печать этого сообщения, или выведет подсказку на указанную субкоманду (субкоманды)
Опции: -h, --help Напечатает help -V, --version Напечатает версию

[Субкоманда install]

Замечания:

Путь места назначения Xtensa Rust. Пути инсталляции модифицируются установкой переменных окружения CARGO_HOME и RUSTUP_HOME перед запуском команды install. По умолчанию тулчейны будут установлены в подкаталог < rustup_home>/toolchains/esp, хотя это можно поменять опцией -a/--name.

GitHub API. Во время процесса установки делается несколько запросов GitHub, на которые распространяются определенные ограничения. Количество ваших запросов не должно достигать лимита, если вы не запускаете команду espup install много раз за короткий промежуток времени. Рекомендуется установить переменную окружения GITHUB_TOKEN, когда используется espup в интерфейсе командной строки (Command Interface, CI). Если вы используете espup в CI, рекомендуется это делать через xtensa-toolchain action, и убедиться, что GITHUB_TOKEN не установлена, когда работа проводится на машине хоста. См. esp-rs/xtensa-toolchain#15 для дополнительной информации.

$ espup install --help
Установит экосистему Espressif Rust
Использование: espup install [опции]
Опции: -d, --default-host < DEFAULT_HOST> Target triple хоста [возможны значения: x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, x86_64-pc-windows-msvc, x86_64-pc-windows-gnu, x86_64-apple-darwin, aarch64-apple-darwin] -r, --esp-riscv-gcc Установит тулчейн Espressif RISC-V, собранный с croostool-ng. Установите это, только если вы не хотите использовать систему RISC-V toolchain
-f, --export-file < EXPORT_FILE> Относительный или полный путь для генерируемого файла экспорта. Если путь не указан, то файл будет сгенерирован в домашней директории (https://docs.rs/dirs/latest/dirs/fn.home_dir.html) [env: ESPUP_EXPORT_FILE=]
-e, --extended-llvm Расширяет инсталляцию LLVM. При этом будет установлена вся LLVM вместо установки только библиотек. LLVM, или LLVM Core это независимый от целевой системы оптимизатор и генератор кода (подробнее см. Википедию) -l, --log-level < LOG_LEVEL> Уровень подробности логов [default: info] [возможны значения: debug, info, warn, error]
-a, --name < NAME> Имя тулчейна Rust [default: esp]
-b, --stable-version < STABLE_VERSION> Версия стабильного тулчейна Rust. Обратите внимание, что только цели RISC-V используют стабильный канал Rust [default: stable]
-k, --skip-version-parse Пропускает парсинг версии Xtensa Rust
-s, --std Устанавливать только те наборы инструментов, которые требуются для приложений STD. С этой опцией espup пропустит инсталляцию GCC (это будет поддерживаться esp-idf-sys), как следствие вы не сможете создавать no_std приложения.
-t, --targets < TARGETS> Список целей, перечисленных через памятую [esp32,esp32c2,esp32c3,esp32c6,esp32h2,esp32s2,esp32s3,esp32p4,all] [default: all]
-v, --toolchain-version < TOOLCHAIN_VERSION> Версия тулчейна Xtensa Rust
-h, --help Печать подсказки (см. суммарный help с опцией '-h')

[Субкоманда uninstall]

$ espup uninstall --help
Деинсталлирует экосистему Espressif Rust
Использование: espup uninstall [опции]
Опции: -l, --log-level < LOG_LEVEL> Выбор уровня подробности логов [default: info] [возможны значения: debug, info, warn, error] -a, --name < NAME> Имя тулчейна Xtensa Rust [default: esp] -h, --help Печать подсказки

[Субкоманда update]

Опции субкоманды update в целом совпадают с опциями субкоманды install.

$ espup update --help
Обновит тулчейн Xtensa Rust
Использование: espup update [опции]
Опции: -d, --default-host < DEFAULT_HOST> Target triple хоста [возможны значения: x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, x86_64-pc-windows-msvc, x86_64-pc-windows-gnu, x86_64-apple-darwin, aarch64-apple-darwin] Установит тулчейн Espressif RISC-V, собранный с croostool-ng. Установите это, только если вы не хотите использовать систему RISC-V toolchain
-f, --export-file < EXPORT_FILE> Относительный или полный путь для генерируемого файла экспорта. Если путь не указан, то файл будет сгенерирован в домашней директории (https://docs.rs/dirs/latest/dirs/fn.home_dir.html) [env: ESPUP_EXPORT_FILE=]
-e, --extended-llvm Расширяет инсталляцию LLVM. При этом будет установлена вся LLVM вместо установки только библиотек.
-l, --log-level < LOG_LEVEL> Уровень подробности логов [default: info] [возможны значения: debug, info, warn, error]
-a, --name < NAME> Имя тулчейна Rust [default: esp]
-b, --stable-version < STABLE_VERSION> Версия стабильного тулчейна Rust. Обратите внимание, что только цели RISC-V используют стабильный канал Rust [default: stable]
-k, --skip-version-parse Пропускает парсинг версии Xtensa Rust
-s, --std Устанавливать только те наборы инструментов, которые требуются для приложений STD. С этой опцией espup пропустит инсталляцию GCC (это будет поддерживаться esp-idf-sys), как следствие вы не сможете создавать no_std приложения.
-t, --targets < TARGETS> Список целей, перечисленных через памятую [esp32,esp32c2,esp32c3,esp32c6,esp32h2,esp32s2,esp32s3,esp32p4,all] [default: all]
-v, --toolchain-version < TOOLCHAIN_VERSION> Версия тулчейна Xtensa Rust
-h, --help Печать подсказки (см. суммарный help с опцией '-h')

[Разрешение Tab-автодополнения в Bash, Fish, Zsh или PowerShell]

Команда espup поддерживает скрипты дополнения для Bash, Fish, Zsh и PowerShell. Для дополнительной информации см. espup help completions, однако суть так же проста, как использование одного из следующего:

# Bash
$ espup completions bash > ~/.local/share/bash-completion/completions/espup
# Bash (macOS/Homebrew) $ espup completions bash > $(brew --prefix)/etc/bash_completion.d/espup.bash-completion
# Fish $ mkdir -p ~/.config/fish/completions $ espup completions fish > ~/.config/fish/completions/espup.fish
# Zsh $ espup completions zsh > ~/.zfunc/_espup
# PowerShell v5.0+ $ espup completions powershell >> $PROFILE.CurrentUserCurrentHost # или $ espup completions powershell | Out-String | Invoke-Expression
# NuShell $ mkdir -p ~/.config/nushell/completions $ espup completions nushell > ~/.config/nushell/completions/espup.nu

Замечание: вам может понадобиться перезапустить свой шелл, чтобы сделанные изменения вступили в силу.

Для zsh вы должны затем добавить следующую строку в свой файл ~/.zshrc перед compinit:

fpath+=~/.zfunc

[Ссылки]

1. rustup.
2. esp-rs / espup.
3. Setting Up a Rust Development Environment.
4. cargo-bins / cargo-binstall.
5. esp-rs / espup release binaries.
6Rust ESP32: руководство новичка.

 

Добавить комментарий


Защитный код
Обновить

Top of Page