Не все так просто піде (((

Існує проблема, таргет xtensa немає в офіційному переліку таргетів для компіляції, і тепер для цього треба використовувати зовнішні інструменти.

Що б встановити все це діло нам треба espup.

cargo install espup

І далі треба встановити сам тулчейн:

espup install

Також під кінець інсталяції ви побачите те що вам треба КОЖЕН РАЗ ВИКОНУВАТИ КОЛИ ВИ ВІДКРИВАЄТЕ НОВИЙ ТЕРМІНАЛ І ХОЧЕТЕ ЗКОМПІЛЮВАТИ

. $HOME/export-esp.sh

Детальніше можете прочитати на самій сторінці Github espup.

Створення проєкту.

Також тут свої нюанси, для нормальної компіляції потребується детальніше налаштування проєкт. Тому що б спростити створення та конфігурацію є можливість згенерувати проєкт за допомогою cargo-generate. Для початку встановіть його:

cargo install cargo-generate

Далі вже ви можете почати:

cargo generate https://gitlab.com/imbiruss/rustilka.git template

Вибори

Перед початком звісно у вас запитають назву проєкт, думаю тут все зрозуміло:

Назва для проекту

Алокація

Аллокація потребується для різних колекцій і типів даних що розширюються динамічно, наприклад Vec, HashMaps, BTree і т. д. ЧИ треба вам та алокація?

Логування та println!

Логування в esp-hal йдеться через usb-serial-jtag чи usb-serial адаптер на багатьох платах, тому тут є й опціональний вибір чи треба вам логування. Згодом буде ясно як моніторити ці логи та прінти. Також це опціоеально через те що самі розробники повідомили про те що esp-backtrace може сповільнувати роботу програми, але на моєму досвіді такого не було, тому тут на ваш розсуд.

Довбаний println! відсутній в  no_std >:(

ВІФІ та синій зуб

Незважайте на те що пункт має тільки wifi в тексті, також підтримується протокол синього зуба(Bluetooth), просто сама бібліотека для підтримки бездротових протоколів називається esp-wifi, хоч і має підтримку Bluetooth.

Опа, віфі і блютузіу

Вітаю, у вас все готово!

Тепер у вас згенерований проєкт, заходьте в редактор та робіть мигалку з асінком по блютузу і логуванням :)

фіналочка

Все ж таки як зкомпілювати?

Взагалі можна просто зкомпілювати, потім зконвертувати в .bin за допомогою binutils, а там вже різними утилітами завантажити прошивку, НУДНО! Для полегшення цього процесу можна встановити утиліту espflash:

cargo install cargo-espflash

Відтепер достатньо однієї команди для компіляції та прошивання:

cargo espflash flash --monitor

(аргумент --monitor лише для того що б дивитись різні логи які надсилаються через println! чи крейт log)

Але якщо вам ліньки навіть таке прописувати чи ви звикли до cargo run то можна прописати таке в .cargo/config.toml:

[target.xtensa-esp32s3-none-elf]
runner = "espflash flash --monitor"