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. Добавьте в закладки постоянную ссылку.

4 комментария: stm32: работа с st-link в linux

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

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

  2. Николай говорит:

    Андрей
    сначала
    cmake
    затем
    make
    у меня Debian 9, всё собралось…

  3. Илья Винокуров говорит:

    Информация по инсталляции 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

    Рулесы копировать не надо, т.к. последняя команда это делает самостоятельно.

  4. dponyatov говорит:

    Стоит обновить:

    ~/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

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

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

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