Шаблон проекта на языке программирования Rust для микроконтроллера STM32F103RBT6
(отладочная плата NUCLEO-F103RB
).
- Скачайте и установите Docker Desktop.
- Склонируйте репозиторий:
git clone https://github.com/Ilyat1337/stm32-rust-template.git
. - Откройте папку в редакторе VSCode.
- Нажмите кнопку
Reopen in container
во всплывающем окне или выполните командуRebuild and Reopen in Container
(для открытия палитры команд используйте сочетание клавишCtrl + Shift + P
). - Дождитесь окончания загрузки. При первом запуске может потребоваться перезапустить редактор, чтобы корректно загрузились необходимые расширения.
- Чтобы удостовериться, что всё работает корректно, выполните команду
Build (release)
(Ctrl + Shift + P
->Run Task
->Build (release)
). Сборка проекта должна завершиться успешно.
Проект содержит набор пользовательских команд, необходимых для сборки и запуска программы на микроконтроллере. Для запуска команды используйте Ctrl + Shift + P
-> Run Task
-> Название команды.
Build (debug)
- собирает программу в режиме Debug. Подходит для отладки кода на микроконтроллере.Build (release)
- собирает программу в режиме Release. Подходит для запуска на микроконтроллере или использования в симуляторе Proteus.Clean
- удаляет артефакты сборки. Команду необходимо запускать перед сборкой, если был отредактирован файл memory.x.Upload
- загружает программу на микроконтроллер. Требует дополнительной настройки на стороне основной операционной системы (см. раздел Подключение платы к компьютеру).
Ко всем перечисленным командам также можно получить используя сочетание клавиш Ctrl + Shift + B
.
На данный момент отладка возможно только на реальном микроконтроллере (отладка в Proteus не поддерживается).
Установите точки остановы в редакторе, после чего запустите отладку нажатием клавиши F5
. Максимальное количество точек остановы - 5. Отладка требует дополнительной настройки на стороне основной операционной системы (см. раздел Подключение платы к компьютеру).
При создании проекта в Proteus выбирайте микроконтроллер STM32F103R6
.
Скомпилируйте проект в режиме Release (команда Build (release)
). В Proteus двойным щелчком мыши по микроконтроллеру откройте его конфигурацию. Выберите файл с программой. Он находится по следующему пути: target/thumbv7m-none-eabi/release/program.elf.
Скачайте и установите драйвер для ST-Link.
Чтобы получить доступ к плате изнутри Docker-контейнера, будет использоваться программа usbipd
. Для её установки в Windows откройте терминал и выполните следующую команду: winget install --interactive --exact dorssel.usbipd-win
.
- Установите дистрибутив Ubuntu 22.04 в WSL. Для этого запустите терминал от имени администратора и выполните следующую команду:
wsl --install -d Ubuntu-22.04
. После её выполнения вы подключитесь к WSL. Если этого не произошло, выполните следующую команду:wsl -d Ubuntu-22.04
. - Сделайте Ubuntu 22.04 дистрибутивом по умолчанию:
wsl.exe --set-default Ubuntu-22.04
(поскольку данная команда выполняется изнутри WSL, необходимо использовать расширение .exe). - Выполните команды, необходимые для работы программы usbipd:
sudo apt update
sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20
- Отключитесь от WSL:
exit
.
- Откройте Docker Desktop.
- Зайдите в настройки.
- Откройте вкладку General. Удостоверьтесь, что около пункта Use the WSL 2 based engine установлена галочка.
- Откройте вкладку Resources -> WSL integration. Установите галочку около пункта Enable integration with my default WSL distro.
- Нажмите кнопку Apply & restart.
Следующие действия необходимо выполнять каждый раз перед открытием проекта в VSCode, если вы планируете работать с платой (загружать или отлаживать программу).
- Подключите плату к компьютеру по USB кабелю.
- Откройте терминал в Windows (в первый раз необходимо запустить его от имени администратора).
- Выполите команду
usbipd list
. Среди списка устройств найдите устройство с названиемST-Link Debug
, запомните его BUSID. - Выполните команду
usbipd bind --busid=<BUSID>
. - Выполните команду
usbipd attach --wsl --busid=<BUSID>
.
Чтобы удостовериться, что всё работает корректно, откройте проект в VSCode, подключитесь к Dev Container. Выполните команду Upload
. Программа должна успешно загрузиться на микроконтроллер.