Не все так просто піде (((
Існує проблема, таргет 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 може сповільнувати роботу програми, але на моєму досвіді такого не було, тому тут на ваш розсуд.
ВІФІ та синій зуб
Незважайте на те що пункт має тільки 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"