stm32: работа с st-link в linux

stlinkv2Микроконтроллеры 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, то получиться довольно удобная среда с графическим интерфейсом.

Запись опубликована в рубрике stm32. Добавьте в закладки постоянную ссылку.

Один комментарий: stm32: работа с st-link в linux

  1. Андрей говорит:

    Проект не собирается! отсутствуют ./autogen.sh ./configure
    ну и make ругается

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>