Прошивка 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

 

Реклама

Рубрики: STM32

Tagged as: , , , ,

1 комментарий »

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

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

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

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

    Нравится

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

      Нравится

      • Приветствую!
        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 человек

        • Привет!
          Да, есть такое и к примеру с 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 на этой железочке, но для этого очевидно прошивка должна суметь такое отдать.

    Нравится

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

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

      Нравится

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

    Нравится

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

      Нравится

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

        Нравится

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

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

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

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

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

        connecting to target via SWD
        cannot connect to target

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

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

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

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

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

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

            Нравится 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