Микроконтроллеры stm32 прошиваются разными способами, например, через COM порт, или по USB, используя режим dfu. Также прошивку можно заливить по интерфейсу SWD.
Для подключения к SWD используется или отдельное устройство st-link, или st-link, входящий в отладочные платы семейства discovery.
Программирование микроконтроллеров stm32 при помощи stlink
Для того чтобы залить прошивку на микроконтроллер stm32 из под linux потребуется утилита st-flash. Готовых пакетов с этой утилитой нет, поэтому её надо собирать из исходников.
Скачиваем исходники st-link:
git clone git://github.com/texane/stlink.git
Собираем
./autogen.sh ./configure make
Добавляем правило для udev, чтобы к st-link был доступ не только у root’a:
sudo cp 49-stlinkv1.rules 49-stlinkv2.rules /etc/udev/rules.d sudo udevadm control --reload-rules
Теперь можно прошивать:
st-flash write firmware.bin 0x08000000
Отладка программы для stm32 при помощи st-link
Используя st-link можно не только заливать прошивку но и отлаживать её. Для этого запускаем gdb сервер st-util.
Затем запускаем arm-none-eabi-gdb и в нем выполняем команды.
Подключаемся к gdb серверу:
target remote localhost:4242
Загружаем файл:
file firmware.elf
Загруженный файл заливаем в микроконтроллер:
load
Устанавливаем breakpoint на функцию main:
break main
Запускаем выполнение программы:
continue
Поле того, как отладчик остановится на функции main, можно выполнять пошаговую отладку:
step
В арсенале отладчика gdb есть ещё куча полезных команд. А если связать gdb c eclipse, то получиться довольно удобная среда с графическим интерфейсом.
Проект не собирается! отсутствуют ./autogen.sh ./configure
ну и make ругается
Андрей
сначала
cmake
затем
make
у меня Debian 9, всё собралось…
Информация по инсталляции stlink немного устарела. Сейчас инсталляцию выполнить можно так:
$ sudo apt install -y cmake
$ mkdir ~/stlink
$ git clone git://github.com/texane/stlink.git ~/stlink
$ mkdir ~/stlink/bin
$ cd ~/stlink/bin
$ cmake ..
$ make
$ sudo make install
Рулесы копировать не надо, т.к. последняя команда это делает самостоятельно.
Стоит обновить:
~/stlink$ make release
~/stlink$ cd build
~/stlink/build$ sudo make install
~/stlink$ sudo /etc/init.d/udev reload
не забудьте воткнуть отладочную плату и запустить st-util:
~$ LD_LIBRARY_PATH=/usr/local/lib/lib st-link