Rust для STM32 Blue Pill с Visual Studio Code
Прочитайте статью: https://medium.com/@ly.lee/coding-the-stm32-blue-pill-with-rust-and-visual-studio-code-b21615d8a20
Основано на:
Книге Хорхе Апарисио Discovery: https://japaric.github.io/discovery/
HAL для Blue Pill от Хорхе Апарисио: https://japaric.github.io/stm32f103xx-hal/stm32f103xx_hal/
Quickstart для Cortex-M от Хорхе Апарисио: https://docs.rs/cortex-m-quickstart/0.2.7/cortex_m_quickstart/
Блоге Нериюса Арлаускаса Embedded Rust: http://nercury.github.io/rust/embedded/experiments/2018/04/29/rust-embedded-01-discovery-vl-flipping-bits.html
STM32 Blue Pill | ST-Link V2 USB Debugger | ||
V3 | [Red] | 3.3V | (Pin 8) |
IO | [Orange] | SWDIO | (Pin 4) |
CLK | [Brown] | SWDCLK | (Pin 2) |
GND | [Black] | GND | (Pin 6) |
Для Ubuntu: Установите необходимые пакеты (arm-none-eabi-gdb
устарел)
sudo apt install pkg-config cmake libssl-dev zlib1g-dev gdb-multiarch curl git
sudo ln -s /usr/bin/gdb-multiarch /usr/bin/arm-none-eabi-gdb
Для Windows:
Установите ARM Cross-Compiler и Linker с веб-сайта разработчика ARM:
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads
Прокрутите страницу вниз, пока не найдёте
Windows 32-bit File: gcc-arm-none-eabi-…-win32.exe
Нажмите Download
Выберите опцию «Добавить путь к переменной среды» на последнем этапе установки.
В проводнике Windows перейдите в папку
C:\Program Files (x86)\GNU Tools Arm Embedded\7 2018-q2-update\bin
(Часть 7 2018-q2-update
может отличаться для вашей установки)
Скопируйте файл arm-none-eabi-ar.exe
в ar.exe
Этот обходной путь с ar.exe
является временным, пока мы не найдём решение проблемы сборки Rust для Windows
Для Ubuntu:
sudo apt install binutils-arm-none-eabi gcc-arm-none-eabi
Откройте новый командный терминал Windows или Ubuntu (не Windows Bash) и введите
arm-none-eabi-gcc -v
Вы должны увидеть что-то вроде version 5.4.1 20160919 (release)
Если вы не видите ошибок, закройте командную строку.
Если вы видите ошибку, обновите переменную среды PATH, чтобы она включала папку для файлов ARM ".exe".
Для Windows:
Загрузите OpenOCD (для отладки Blue Pill) с неофициального веб-сайта выпуска OpenOCD:
https://github.com/gnu-mcu-eclipse/openocd/releases
Найдите gnu-mcu-eclipse-openocd-…-win64.zip
Распакуйте загрузку OpenOCD и скопируйте файлы OpenOCD в c:\openocd
, чтобы файл opencd.exe
находился в папке c:\openocd\bin
Для Ubuntu:
sudo apt install openocd
Только для Windows: загрузите драйвер USB-устройства ST-Link с веб-сайта драйвера ST-Link (требуется регистрация по электронной почте):
http://www.st.com/en/embedded-software/stsw-link009.html
Пролистайте вниз и нажмите кнопку Get Software
Распакуйте скачанный файл ST-Link. Дважды щёлкните по файлу установщика dpinst_amd64.exe
.
Только для Windows: установите Build Tools for Visual Studio 2017
(необходимо для rustup
) с
https://aka.ms/buildtools
Под «Workloads» выберите Visual C++ Build Tools
.
Внимание: размер загрузки составляет 1,1 ГБ. ELF32
Данные: дополнение до двух, прямой порядок байтов.
Версия: 1 (текущая).
ОС/ABI: UNIX 1. System V.
ABI Version: 0.
Тип: EXEC (исполняемый файл).
Машина: ARM.
Версия: 0x1.
Адрес точки входа: 0x8000cfb.
Начало заголовков программы: 52 (байта в файле).
Начало заголовков разделов: 258948 (байт в файле).
Флаги: 0x5000200, версия 5 EABI, ABI с плавающей точкой soft-float.
Размер этого заголовка: 52 байта.
Размер заголовков программ: 32 байта.
Количество заголовков программ: 3.
Размер заголовков разделов: 40 байт.
Количество заголовков разделов: 21.
Индекс таблицы строк заголовков разделов: 20.
Запустите OpenOCD на терминале. Скрипты находятся по адресу /usr/share/openocd/scripts
.
— Для Windows:
```cmd
c:\openocd\bin\openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg
```
— Для Ubuntu:
```bash
openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg
```
Вы должны увидеть что-то вроде:
GNU MCU Eclipse 64-bits Open On-Chip Debugger 0.10.0+dev-00487-gaf359c18 (2018-05-12-19:30)
Licensed under GNU GPL v2
For bug reports, read http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2.cfg is deprecated, please switch to interface/stlink.cfg
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
...
Начните сеанс отладки в другом командном окне:
arm-none-eabi-gdb -x loader.gdb target/thumbv7m-none-eabi/release/stm32-blue-pill-rust
Общие команды GDB:
step:
Выполнить текущую строку исходного кода, войти в функции, если они есть. То же самое, что и команда step into в Visual Studio Code.
next:
Выполнить текущую строку исходного кода, не входить в функции. То же, что и команда step over в Visual Studio Code.
where:
Показать трассировку стека.
where full:
Показать трассировку стека с локальными переменными.
Дополнительные команды: https://darkdust.net/files/GDB%20Cheat%20Sheet.pdf
Настройка пользовательского интерфейса Visual Studio Code была выполнена с помощью следующих файлов:
.vscode/tasks.json
Определяет следующие задачи:
Connect: Запускает OpenOCD. Использует разные команды для Ubuntu и Windows (opencd
против c:\opencd\bin\opencd
).
Build: Выполняет cargo build --release
. Настроен как задача сборки по умолчанию.
Remove: Выполняет cargo clean
Check: Выполняет cargo check --release
.vscode/launch.json
Запускает следующую команду при запуске отладчика:
arm-none-eabi-gdb -x loader.gdb target/thumbv7m-none-eabi/release/stm32-blue-pill-rust
Эта команда заставляет gdb
выполнить скрипт loader.gdb
в начале отладки.
Обязательный параметр target/thumbv7m-none-eabi/release/stm32-blue-pill-rust
является избыточным. Цель указана снова в loader.gdb
.
loader.gdb
Это GDB. Как определено в лицензии Apache-2.0, предоставляется двойная лицензия, как указано выше, без каких-либо дополнительных условий.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )