Перейти к содержанию

Rust

Разработка OpenSiFli для Rust ведётся в репозитории OpenSiFli/sifli-rs, где есть HAL, PAC, крейты для таблиц Flash, примеры, а также заметки о прошивке и отладке.

Сопровождающие проекта указывают, что он всё ещё разрабатывается и не готов к серийному применению. Рассматривайте Rust на SF32 как экспериментальное направление, кроме случаев, когда команда может работать близко к аппаратуре и готова передавать исправления в исходный проект.

Инструкции по первоначальной настройке toolchain, сборке неизменённого примера Blinky и конфигурации flash-runner приведены в разделе Начало работы с Rust. Эта статья поможет оценить текущий уровень поддержки и решить, стоит ли развивать проект на Rust дальше базового примера.

Крейты, упомянутые OpenSiFli

Таблица: крейты, упомянутые OpenSiFli
Крейт Назначение
sifli-hal Уровень аппаратных абстракций.
sifli-pac Крейт доступа к периферийным устройствам.
sifli-flash-table Поддержка таблицы Flash.

Когда имеет смысл использовать Rust

Rust может подойти, если вы хотите:

  • Экспериментировать с Rust для встраиваемых систем.
  • Применять строгую типизацию в низкоуровневом коде прошивки.
  • В перспективе разрабатывать драйверы в стиле embedded-hal.
  • Вносить вклад в экосистему Rust для SF32.

Для серийной прошивки на текущем этапе используйте SiFli-SDK.

Контрольные точки оценки

Не начинайте перенос решения на Rust в продукт, пока базовый вариант для первого запуска не заработает на целевой плате. Затем отдельно проверьте каждое необходимое периферийное устройство, разметку флеш-памяти, путь отладки и функцию среды выполнения. Для каждого результата зафиксируйте коммит исходного проекта, целевую платформу Rust, конфигурацию Cargo, ревизию платы и процедуру восстановления.

В репозитории используются sifli-hal, sifli-pac, инструменты для таблиц Flash и асинхронные примеры в стиле Embassy. Поэтому результат зависит не только от того, собирается ли отдельный крейт, но и от взаимодействия этих компонентов. При анализе проблемы сохраняйте минимальный пример, который позволяет её воспроизвести.

Контрольный список рисков

  • Поддерживает ли крейт конкретную целевую микросхему?
  • Охватывает ли HAL нужное периферийное устройство?
  • Совместима ли разметка флеш-памяти с платой?
  • Описан ли процесс отладки для используемого отладочного пробника или инструмента?
  • Можно ли восстановить эту же плату с помощью SiFli-SDK или sftool?
  • Готова ли команда вносить исправления в проект?

Подходящие и неподходящие сценарии

Таблица: где Rust подходит и где не подходит
Подходит Не подходит
Эксперименты и изучение драйверов. Серийный проект, для которого нужна поддержка производителя.
Команды, уже использующие Rust во встраиваемых системах. Продукты, которым уже сейчас нужны полноценные стеки Bluetooth, дисплея и аудио.
Участие в повышении зрелости HAL/PAC. Разовые прототипы, которые быстрее сделать на Arduino или примерах SDK.

Последнее обновление: