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

Rust

OpenSiFli/sifli-rs включает Rust HAL, PAC и работу с таблицами Flash для микроконтроллеров SiFli. Сопровождающие проекта указывают, что разработка продолжается и решение не готово к серийному применению. Поэтому это руководство описывает базовый сценарий для оценки, а не процесс разработки серийной прошивки.

Перед началом выполните начальную настройку SiFli-SDK на той же плате. Это обеспечит заведомо рабочий путь для проверки последовательного порта и восстановления, если Rust-эксперимент не удастся прошить или отладить.

Что понадобится

  • Плата SF32LB52 DevKit LCD и кабель USB Type-C с поддержкой передачи данных, подключённый к USB-to-UART.
  • Базовое знакомство с Rust, разработкой встроенного ПО и командной строкой.
  • git и актуальный инструментарий Rust, установленный с помощью rustup.
  • Актуальное руководство по началу работы с sifli-rs и руководство по прошивке и отладке.

Экспериментальный путь

Не используйте это руководство как подтверждение готовности микросхемы, периферии, конфигурации платы или стека приложения к серийному применению. Прежде чем вкладываться в портирование, проверьте в репозитории статус поддержки конкретной целевой платформы и периферии.

Подготовка целевой платформы Rust

В руководстве репозитория используются целевые платформы Rust для Arm Cortex-M. Установите указанные в нём целевые платформы:

rustup target add thumbv8m.main-none-eabi
rustup target add thumbv8m.main-none-eabihf

Клонируйте актуальную версию репозитория и перейдите в каталог примеров для SF32LB52:

git clone https://github.com/OpenSiFli/sifli-rs.git
cd sifli-rs/examples/sf32lb52x

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

Настройка runner для прошивки

В репозитории в качестве штатного runner для прошивки указан sftool. В файле examples/sf32lb52x/.cargo/config.toml задайте runner с USB-to-UART-портом платы, следуя актуальному руководству по прошивке и отладке. В нём приведён такой шаблон:

runner = 'sftool -c SF32LB52 -p <Your_Port> --compat write_flash'

Для первой прошивки могут потребоваться таблица Flash, загрузчик и образ приложения. Конкретные образы и адреса зависят от документированной конфигурации платы и Flash. Следуйте руководству репозитория; не подставляйте вместо них адреса или бинарные файлы Arduino, Zephyr или SiFli-SDK.

Сборка и запуск базового примера

Настроив runner, соберите и прошейте исходный пример Blinky без изменений:

cargo run --bin blinky

Успешная компиляция — только первая проверка. Убедитесь, что плата ведёт себя ожидаемым образом, и сохраните полный вывод cargo и sftool. Затем внесите одно небольшое обратимое изменение, например измените задержку мигания, и только после этого пробуйте другую периферию.

Если базовый пример не запускается

Сначала убедитесь, что по-прежнему работает базовая конфигурация SiFli-SDK для этой платы. Затем соберите сведения о целевой платформе Rust, коммите, выбранном примере, конфигурации Cargo, команде и выводе sftool, ревизии платы и журнале последовательного порта или отладки. В руководстве исходного проекта отмечено, что отладка может работать нестабильно при переходах в idle/WFI; кроме того, размер таблицы Flash должен позволять разместить образ приложения.

Об архитектуре, охвате поддержки и пригодности Rust для изделия см. страницу Rust в разделе «Разработка».

Перед повторным использованием примера

Перед адаптацией примера убедитесь, что в репозитории задокументирована поддержка именно вашей платы и нужной периферии, а также проверьте соответствующую цель Rust, загрузчик, разметку таблицы Flash и способ отладки. Сохраните заведомо рабочую конфигурацию SiFli-SDK как вариант восстановления.

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