Превращаем ST-Link в J-Link и дружим его с Миландром.

Превращаем ST-Link в J-Link и учим его работать с микроконтроллерами Миландр.

Денис Заикин
Cover Image

Уже около года прошло с момента публикации вот этой новости (SEG-JLINK. Segger J-Link debug probe for STM32) на сайте STMicroelectronics, но её я только недавно заметил.

Забегая вперед скажу, что удалось прошить мой программатор под J-Link, правда без танцев не обошлось. И пока единственное что могу сказать, так это то, что шиться контроллеры стали быстрее (а может это самовнушение).

Интересно? Тогда читайте дальше.

И так, что же там обещают после обновления до J-Link

With unparalleled performance, extensive feature set, large number of supported MCUs, and compatibility with all popular development environments, the J-Link (SEG-JLINK) debug probes optimize user debugging and flash programming experience.

Хорошую производительность, поддержку большого количества микроконтроллеров и совместимость со всеми популярными средами разработки и много много всего.. Прям то, что нужно

Скажу сразу лицензионное соглашение предполагает обновление ПО на отладочных платах Nucleo и Discovery.

Вот список поддерживаемых плат:

  • 32F0308DISCOVERY (STM32F0308-DISCO)
  • 32F3348DISCOVERY (STM32F3348-DISCO)
  • 32F411EDISCOVERY (STM32F411E-DISCO)
  • 32F429IDISCOVERY (STM32F429I-DISC1)
  • 32F429IDISCOVERY (STM32F429I-DISCO)
  • 32F469IDISCOVERY (STM32F469I-DISCO)
  • 32F746GDISCOVERY (STM32F746G-DISCO)
  • 32L0538DISCOVERY (STM32L0538-DISCO)
  • 32L100CDISCOVERY (STM32L100C-DISCO)
  • 32L476GDISCOVERY (STM32L476-DISCO)
  • NUCLEO-F030R8
  • NUCLEO-F031K6
  • NUCLEO-F042K6
  • NUCLEO-F070RB
  • NUCLEO-F072RB
  • NUCLEO-F091RC
  • NUCLEO-F103RB
  • NUCLEO-F207ZG
  • NUCLEO-F302R8
  • NUCLEO-F303K8
  • NUCLEO-F303RE
  • NUCLEO-F303ZE
  • NUCLEO-F334R8
  • NUCLEO-F401RE
  • NUCLEO-F410RB
  • NUCLEO-F411RE
  • NUCLEO-F429ZI
  • NUCLEO-F446RE
  • NUCLEO-F446ZE
  • NUCLEO-F746ZG
  • NUCLEO-F767ZI (Nucleo-144)
  • NUCLEO-L011K4
  • NUCLEO-L031K6
  • NUCLEO-L053R8
  • NUCLEO-L073RZ
  • NUCLEO-L152RE
  • NUCLEO-L476RG
  • STM32F0DISCOVERY
  • STM32F3DISCOVERY
  • STM32F4DISCOVERY (STM32F407G-DISC1)

Если вашей платы нет в списке, не расстраивайтесь, скорее всего и её можно прошить.

Из основных плюсов после хирургического вмешательства можно выделить:

  • Загрузка в RAM со скоростью до 3 МБайт/с
  • Неограниченное количество точек останова
  • Ну и конечно же кросплатформенность

Для того, что бы обновиться необходимо скачать с сайта Segger утилитку ST-Link Reflash Utility и распаковать в удобное для вас место. Эта же утилита позволит и откатиться обратно на стандартную прошивку ST-Link.

Что именно нужно делать. Желающие могут почитать оригинальную статью на официальном сайте, ну а остальные милости прошу:

1. Отключаем ST-Link если он подключен к ПК (Иначе он не определяется утилитой, хотя может мне просто не повезло)

2. Запускаем утилиту

3. Принимаем лицензионное соглашение

4. И ещё раз

5. Подключаем наш ST-Link

6. Выбираем [1] Upgrade to J-Link и ждем окончания обновления прошивки. Пункт [3] возвращает родной ST-Link.

Должно получиться что-то похожее на это.

Прошиваться будут только те программаторы которые изначально запрограммированы только для отладки STM32, если как у меня прошивка стояла STM32+STM8 - то придется сначала прошить чистую, а затем уже J-Link.

Теперь осталось только настроить нашу любимую среду разработки (я про Keil) для работы с микроконтроллерами Миландр, так как изначально J-Link поддерживает российский ARM чуть меньше чем никак. 

Решение максимально простое (решение найдено на форуме Миландр) - нужно показать J-Link как и куда шить. Для этого качаем файл MilandrDBforSegger.zip. И распаковываем в папку ..\Keil_v5\ARM\Segger\

Теперь можно шить и отлаживать микроконтроллеры Миландр. Я проверял только на 1986ВЕ92, прошивка и отладка работают отлично.

Интерфейс программирования выбран SWD, а скорость 3 МГц (выше ставить бессмысленно - отладка просто отваливается, аналогично и с JTAG).

Желаю хорошего и приятного кодинга.