Rust¶
Разработка OpenSiFli для Rust ведётся в репозитории OpenSiFli/sifli-rs, где есть HAL, PAC, крейты для таблиц Flash, примеры, а также заметки о прошивке и отладке.
Сопровождающие проекта указывают, что он всё ещё разрабатывается и не готов к серийному применению. Рассматривайте Rust на SF32 как экспериментальное направление, кроме случаев, когда команда может работать близко к аппаратуре и готова передавать исправления в исходный проект.
Инструкции по первоначальной настройке toolchain, сборке неизменённого примера Blinky и конфигурации flash-runner приведены в разделе Начало работы с Rust. Эта статья поможет оценить текущий уровень поддержки и решить, стоит ли развивать проект на Rust дальше базового примера.
Крейты, упомянутые 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 во встраиваемых системах. | Продукты, которым уже сейчас нужны полноценные стеки Bluetooth, дисплея и аудио. |
| Участие в повышении зрелости HAL/PAC. | Разовые прототипы, которые быстрее сделать на Arduino или примерах SDK. |
Последнее обновление: