Прошивка ST-Link в J-Link

Иногда полезен программатор J-Link, не буду вникать в тонкости и его плюсы\минусы, но если у Вас в наличии дешевый китайский ST-Link — то считайте, что у вас 2 версии программатора по необходимости! Интересно узнать, как это делать на китайских клонах? Читай дальше ;)

Внимание! Материал ниже представлен исключительно в ознакомительных целях, и если Вам необходим J-Link в коммерческих целях, то следует приобрести официальный программатор.

На просторах Ebay или AliExpress по ключевому слову «ST-Link v2» можно найти множество клонов. Практически все они собраны на STM32F103C8T6 , но, судя по всему, можно нарваться и на другой вариант с камнем STM32F101CBT6 как отписались в комментариях. Такой не подходит и лучше узнать у продавца, если хотите купить в закрытом корпусе или не уверены, что стоит на плате у продавца. (поправка! ВОТ ТУТ пишут, что прекрасно обновляются клоны и на этом камне, но USB в STM32F101CBT6 нет по документации, возможны баги\глюки). У меня же в наличии вот такой (также собирал свой собственный — описанный способ прошивки на нем тоже работает):

Это слайд-шоу требует JavaScript.

Есть различные варианты, они будут идентичны этому. Примерная схема этого варианта:

Ну что, приступим! Для работы нам понадобится:

Изначально утилита от SEGGER не видит китайские клоны и поддерживает только официальные отладочные платы с этим программатором и сами официальные программаторы. Но на форуме esp8266.ru было найдено решение (спасибо pvvx!) — необходим небольшой патч оригинального STLinkReflash.exe и он будет без проблем обновлять и клоны! :)

Патч для STLinkReflash.exe (версия 161007) состоит из замены 3х байт. На всякий случай привожу его тут (адрес: оригинальное значение | новое значение):

  1. 00002568: 75 | 90
  2. 00002569: 66 | 90
  3. 000026AA: 74 | EB

В архиве выше есть как и оригинальный файл, так и патченный — STLinkReflashFixed.exe. Для обновления необходимо использовать его.

Подключаем наш ST-Link, убедитесь, что он корректно определился и на него установились драйвера. Запускаем STLinkReflashFixed.exe. Принимает соглашение от SEGGER:

B14-4.png

Далее принимаем соглашение от STM:

B14-5.png

И мы в главном меню:

B14-6.png

  • [0] Выход
  • [1] Обновить до J-Link
  • [2] Обновить прошивку J-Link
  • [3] Восстановить ST-Link

Выбираем 1-й пункт и прошивка за считанные секунды должна пройти успешно:

B14-7.png

Если необходимо восстановить обратно, то в меню выбираем 3-й пункт и спустя немного времени будет возвращена прошивка ST-Link:

b14-8

Вот и всё! Удачного программирования! ;)

Примечание:
Рекомендации по изменению байт в утилите и схема ST-Link взяты отсюда.

UPDATE 2017.03.09:

На китайских свистках ST-Link реализованы 2 интерфейса — SWD и SWIM. Обычно нужен только первый, т.к. STM8 вещь довольно-таки в себе и проще уже применять STM32 (мало того, что возможностей больше, так и IDE выбор получше, имхо), поэтому интерфейс SWIM (для STM8) как-то и не нужен. Предлагается незначительная переделка платы, после которой SWIM_RST выход заменяется на TRST, что полезно иногда при залоченом STM32 (не нужно жать на кнопку сброса) или для RTL871x.

Переделка крайне проста и всё показывает одно фото (кликни для увеличения):

Тут отпаиваем R17, одной стороной (ламелькой) подпаиваем к правому паду (ведущему к гребенке, лучше прозвоните на своей плате при аналогичной переделке), а второй вывод (ламельку) одножильным проводом в лаке (можно взять с катушек или трансформаторов, 0,1-0,2мм диаметра) соединяем с выводом 18 (PB0). В гребенке штырь с SWIM_DATA можно выпаять — она уже без надобности, я дополнительно цапонлаком закрасил шелкографию на нижней стороне платы, что бы не путала.

Вот и вся переделка. :) Осталось добавить немного термоусадки и карманный J-Link готов:

Это слайд-шоу требует JavaScript.

UPDATE 2017.07.23:

Патч для STLinkReflash.exe (версия 170628) аналогичный и так же состоит из замены 3х байт. Архив для скачивания — STLinkReflash_170628.zip.

Для прошивки использовать STLinkReflashFixed.exe. Также в архиве сохранён оригинальный файл.

UPDATE 2018.08.13:

Патч для STLinkReflash_170807, присланный анонимным читателем (я не делал fixed версию и не проверял):

  1. 00002569: 75 | 90
  2. 0000256A: 70 | 90
  3. 000026B5: 74 | EB

UPDATE 2019.11.19:

Архив для скачивания STLinkReflashFixed.exe (версия 190812) — STLinkReflash_190812.zip.

Прошивка ST-Link в J-Link: Один комментарий

  1. Спасибо огромное за статью! Уже перешил свой ST-Link c STM32F101CBT6 на борту.

    Есть ли «пропатченный» софт (или конкретно JLink.exe), который позволяет полученный программатор использовать для работы с микроконтроллерами, отличными от STM ? Интересует только возможность _слить_/залить прошивку.

    Может существуют альтернативные программы (прошивальщики), которые лишены данного ограничения ?

    Как софт от Segger’а определяет, что нужно наложить ограничение ? Поможет ли смена серийника на полученном программаторе обойти данное ограничение ?

    Нравится

    1. Привет!
      вроде бы не должно быть залоченности только под STM32 — я J-Link’ом прошиваю как и STM32, так и RTL8710\RTL8711, а так же АРМы от Миландра (серия 1986). Предполагаю, что дело не в софте Segger’a, но чего то конкретного посоветовать не могу — с таким не столкнулся..

      Нравится

      1. Приветствую!
        admin, странно, у Segger’а вот здесь: https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/ в конце страницы есть графа «Limitations». Там английским по-белому указано «May be used with ARM based ST devices only». Собственно Segger J-Flash мне то же самое написал. Или Вас оригиналный J-Link? И каким софтом шьете? Поясните пожалуйста подробнее. Заранее благодарю/

        Нравится 1 человек

        1. Привет!
          Да, есть такое и к примеру с NXP или TI перешитый таким образом J-Link не должен работать, но с Миландром работает нормально (на форуме у них встречал, что идентификаторы у них аналогичны STM). Но так же и с RTL8195 работает и сегодня буквально проверил с RDA5981A так же работает, не ругается.
          Я пробовал как с ebay заказанный свисток перешивать, так и самодельные на 103 камне — проблем не возникло. Самодельные же прошил сначала старой прошивкой ST-Link (найденной в интернете STLinkV2.J16.S4.bin как я помню, выложить не могу), потом обновил до последней версии ST-Link официальным способом и потом уже перешил в J-Link.
          Честно говоря не знаю, почему на некоторых экземплярах работает, а на других ругается..

          Нравится 1 человек

  2. STLinkReflash.exe (версия 161007) отыскать нигде не удалось .
    рабочие ссылки на этот файл и на архивы с ним отсутствуют
    Пожалуйста выложите ее для скачивания…
    В настоящий момент можно скачать версию 161221 она не позволяет обновить прошивку
    в описываемом в статье ST-Link

    Нравится

  3. pvvx как-то давал ссылку на еще один апгрейд для этого девайса
    https://lujji.github.io/blog/stlink-clone-trace/
    не пробовали? я пока только пытаюсь разобраться в этом «программаторском» хозяйстве, но как я понимаю в сеггеровской прошивке JLink поддерживается утилита(пин?) SWO?
    так до конца и не разобрался как это подключить и пользоваться (просто ТХ от diagUART?)
    интереснее конечно было бы получить uart на этой железочке, но для этого очевидно прошивка должна суметь такое отдать.

    Нравится

    1. Да, видел эту доработку, но не пробовал,т.к. обычно под рукой есть отдельный USB-UART и удобней его смотреть отдельной программой-терминалом. (дело привычки\вкуса конечно)

      На J-Link тоже есть SWO, с драйверами ставится и утилита JLinkSWOViewer.exe — описание тут https://www.segger.com/j-link-swo-viewer.html
      Предполагаю можно и на клонах это запустить, но не проверял.

      Нравится

  4. Доброго времени суток, форумчане! Встала такая проблема, есть камень ATSAMD10C14 можно ли прошить его через программатор/отладчик тот самый ST-Link?

    Нравится

    1. Доброго!
      ST-Link — сомневаюсь, что получится, а вот если прошить в J-Link — должен увидеть. (но уже не раз встречал сообщения, что некоторые клоны, таким способом прошитые в J-Link не подключаются ни к чему, кроме STM АРМов.. в любом случае откатить обратно в ST-Link можно тут же)

      Нравится

      1. Спасибо. Увы, даже если прошить отладчик в J-Link, при прошивке камня протестует и требует ST, как вы и сказали. Заказал j-link программатор

        Нравится

  5. Не работает, к сожалению, пишет ERROR: Unsupported ST-LINK firmware. Скачал последнюю версию STLinkReflash.exe с сайта Jlink, походу 3-й байт теперь находится по адресу 000026B4: 74 | EB. Заменил, в итоге таже ошибка. Что делаю не так? кто знает?

    Нравится 1 человек

    1. В конце статьи есть архив с исправленной утилитой — на ней пробовали? (fixed которая)
      Если так же — то надо попробовать обновить прошивку самого ST-LINK на что то посвежее (ссылки не могу опубликовать, гуглится довольно быстро слитые прошивки ST-LINK v2 \ 2.1).

      Нравится 1 человек

      1. Скачал STLinkReflasher170628 последняя ссылочка под статьей перешил свою китайскую плату(белая коробочка не в форме флэшки, внутри stm32f103c8) через STLinkReflasherFixed светодиод стал загораться зеленым светом, однако все попытки подключиться через iLink.exe — connect не увенчались успехом.

        connecting to target via SWD
        cannot connect to target

        может подскажете как заставить работать эту железяку, замаялся с ней. Через родной софт ST Link Utility она вообще не работает USB Communication error. Хотя апдейтер их обновляет прошивки на раз, но не работает в итоге ничего.

        Нравится 1 человек

        1. А есть возможность показать, что за плата ?
          Видимо там что то не стандартное…
          Да, а в виде ST-Link она работала или не проверяли ?

          И еще вопрос, а SWD вы вместе с Reset подключаете к программируемому МК ? (может неверно подключили просто или в нем уже есть программа с запрещенной работой отладочного интерфейса)

          Нравится 1 человек

          1. https://www.chipdip.ru/product/st-link-v2
            вот такая плата отладчик. не работает через st-link прошивку обновляет, но работать с программой st link utility отказывается. Сделал фото платы как выложить здесь, или на почту могу выслать. моя почта work_buf@mail.ru

            Нравится 1 человек

            1. Судя по официальному описанию https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/
              >> Initial version that supports ST-LINK/V2 and ST-LINK/V2-1
              Ваш вариант ST-LINK/V2 полностью поддерживается и без Fix версии, что выложена в статье. Т.е. вы можете просто скачать по ссылке выше последний вариант утилиты и обновить St-Link в J-Link как там и сказано официально (если в чипдипе и правда не китайская подделка).
              Фото тогда не нужны, я думал у вас с алиекспресс какой то свисток.

              И опять же вопрос, до обновления в J-Link, если использовать (использовали) как St-Link — отладчик подключался к требуемому МК ? (какой кстати хотите прошить с его помощью? официально, после превращения в J-Link он поддерживает не все МК… может в этом проблема)
              Сам J-Link нормально определяется в ОС и драйвера на него ставятся сегеровские ?
              Если с последним всё нормально — то подозреваю, может неверно подключили что то… (к МК, который собираетесь прошивать)

              Нравится 1 человек

  6. и да
    >> работать с программой st link utility отказывается
    он и не должен с ней работать после обновления до J-Link.
    После перепрошивки, уже нужно пользоваться софтом от сеггера — https://www.segger.com/downloads/jlink/
    Может вам оно и не надо? Тогда лучше откатите до St-Link консольной утилитой и всё будет нормально работать с st link utility )

    Нравится 1 человек

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

Please log in using one of these methods to post your comment:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s