Как стать автором
Обновить

Делаем ST-Link V2.1 из китайского ST-Link V2

Время на прочтение 3 мин
Количество просмотров 151K
Всего голосов 36: ↑36 и ↓0 +36
Комментарии 103

Комментарии 103

НЛО прилетело и опубликовало эту надпись здесь
Бутлоадер был взят сдесь:
github.com/Krakenw/Stlink-Bootloaders
Предполагаю что он был слит с нуклео либо любой другой платы)
Где-то в сети гуляет мануал о том как вытянуть прошивку с stm32…
Именно тот мануал что я имел в виду ))
НЛО прилетело и опубликовало эту надпись здесь
Программатору уже около 3-х лет )
Что за буфер?
НЛО прилетело и опубликовало эту надпись здесь

В итоге, оно через джампер программатор, либо uart? Или синхронно и ничего нажимать не нужно?

В итоге одновременно и swd и uart.
отлично, спасибо!
Пользуйтесь )
Идея — работает. «Издевался» на таком варианте: ST-Link from «Blue Pill»
Это проще, чем ковыряться в ST-Link…
За то корпус аккуратный, и удобнее чем из пилюлю в качестве программатора юзать. (Имхо)
За статью — спасибо!
Пользуйтесь )
Защиты нет совсем. Подтяжки и т.п. не очень понятно как сделаны (ли).
Такой вариант на работе проживет недельку, а потом скончается от замыкания выхода с выходом, замыкания на питашку/землю, и прочим «естественным» причинам
STM32 вообще довольно прочный в этом плане, если не шарахнуть его очень хорошим зарядом статики или 5+ вольтами, то такие программаторы живут вполне себе долго и успешно.

Тем более, по их цене их можно горсть сразу взять, а также, не задумываясь, выдавать в пользование всем желающим, от разработчиков до заказчиков.
Я тоже так думал, пока они не начали гореть по 5 в неделю.
Пришлось сменить шмот на с коротким рукавом, свести все земли в 1 точке и антистатический браслет туда же. Без браслета — вот опять вчера меняли МК, который то шьется, то не шьется и стабилизатор при нем сильно грелся.
Новый шьется без проблем, стаб — холодный.
Да даже от +5 они не дохнут. Выводы почти все толерантные, а подача питания 5 вольт обычно даже из строя их не выводит. Правда на таком питании они отказываются работать.
НЛО прилетело и опубликовало эту надпись здесь
Многовато возни чтобы заменить отдельный USB-UART за 30-60 рублей.
Самое главное — минимизация девайсов. Да и занят всего 1 USB.
И как плюс — можно заливать прошивки без софта, работая как с флешкой.
НЛО прилетело и опубликовало эту надпись здесь
Согласен с вами. Например, сделали плату на заказ. Человек её продал в другой город, забыл о ней, а через год вам звонит, нужно баг починить, плату перепрошить.
Стандартный USB-UART, USBASP и STLINK можно купить в любом городе в магазине радиотоваров. Вам остается только скинуть по почте файл прошивки, а не ехать с вашим хитрым программатором в другой город.
У нас схожая «нестандартная» распиновка несколько лет как стандарт.

SWD, 3.3, земля, сброс и uart_tx чтобы знать что в железке творится. Так, что инициативу поддерживаю, как и резисторы защитные (на фото программаторов их не видно, наверное, в нижнем слое).
Распиновку я нацарапал на корпусе поверх старой, потому не забуду )
А сгорать — не сгорает уже третий год.
Расскажите, как нужно использовать программатор чтобы он сгорел?
НЛО прилетело и опубликовало эту надпись здесь
У меня на прошлой работе был линолеум и пластиковое кресло с синтетической обивкой. Сила последующих разрядов на разные токопроводящие предметы была такова, что я аж подпрыгивал или сильно дёргался. Периодически получалось так, что разряжался на отлаживаемые устройства — и сильно переживал, что рано или поздно что-нибудь спалю. Жаловался руководству, выпрашивал оборудовать место браслетом (на монтажном участке-то всё как положено, а в отделе разработки фигвам) — бесполезно, ради меня одного чесаться не хотели, а коллег почему-то эта беда не касалась. Индивидуальная особенность организма, видимо.

К счастью, за много лет так ничего и не сгорело — ни устройства, ни программаторы, ни порты компа.
А стандартная распиновка — это, пардон, что? Cortex Debug Connector, к которому вечно шнурка на 2×5×1,27 мм не найдёшь под рукой, в котором есть ненужные TDO/TDI и одновременно нет нужного для отладки/настройки банального UART?..

Мы себе завели свой собственный 6-контактный разъём с UART TX/RX или SWDIO/SWDCLK + BOOT + RESET + GND + VCC и с той поры в ус не дуем. Копеечную платку адаптера для настройки или перепрошивки через UART-бутлоадер (CP2102, LDO, две кнопки, microUSB) желающим просто дарим.
Есть несколько вариантов модификации, и часть из них нельзя сделать если чип не подходящий (не хватит памяти).

А как узнать, какой вариант подойдет?
Если модификация не подойдет для вашего МК то программа выдаст ошибку о нехватке памяти, а вообще такая модификация там только одна, у нее есть аналог, и я это упомянул в следующей строчке
Например, модификацию STM32+MSD+VCP можно сделать только если чип STM32F1xxCBxx, однако у нее есть аналог STM32+Audio
Хорошо, сейчас попробую перепрошить свой программатор)
У меня какой-то китайский клон запаян — STM32GC102CB.))
Вот на счет этой странной маркировки не уверен…
В сети о ней разное пишут…
Если все же решитесь прошить — обязательно сообщите о результатах.
Попробовал сделать — всё получилось!
Отлично.
Пользуйтесь )
Обнаружилась проблема. VisualGDB не хочет работать с программатором, при этом, ST-LINK Utility работает хорошо. VisualGDB использует OpenOCD. Думаю, проблема где-то в конфигах. Пока не смог обнаружить.
Ну st-util 100% работает.
OpenOCD работает, но криво, и судя по отзывам он многих не устраивает )
Ну и если не желаете мучаться с GDB серверами — можно прошить под BMP, он там встроенный.
Только вот не имею ни малейшего понятия можно ли VisualGDB настроить на другой GDB сервер, или BMP.
В том то и дело, что мне нравится работать в Visual Studio+VisualGDB. По этому необходима совместимость с OpenOCD. У меня не получилось заставить работать в такой конфигурации.

В Atollic TrueSTUDIO тоже хорошо работает, он использует ST-LINK_gdbserver.

Видимо, придется перешивать.
Костыльные проблемы требуют костыльных решений…
У меня есть платка от СТ, с настоящим программатором, и она работает. Так что костыль здесь — перепрошивка китайца.
Кривой софт тоже костыль )
Во всяком случае вы можете взять платку с оригинальным st-link v2.1 слить с нее бутлоадер и порадовать себя и народ…
НЛО прилетело и опубликовало эту надпись здесь
Именно таким образом был получен бутлоадер к данной статье. (не мной)
Но мне больше понравился вариант этого мода с прошивкой BMP.
Правда SWO в BMP на форточках не знаю как запустить.
Ради интереса решил попробовать — получилось )
Однако мне кажется она мало чем отличается от той что на гите, кроме информации о плате в которой программатор стоит…

Всё ёмко и по делу, но вот что это, для чего, почему нельзя взять сразу 2.1, в чём вообще преимущество девайса — можно было бы и добавить. Так, как инструкция — супер, как статья — не очень.

В предисловии описано в чем преймущество, а так же в конце статьи.
Почему нельзя взять сразу 2.1? Потому что их не существует по отдельности, только на платах нуклео и дискавери, что я так же упомянул в предисловии.
Если же вам интересно знать что есть ST-Link — гугл открыт для всех)
А не описывал я это потому что описание девайся не является целью данной статьи )
Расскажите пожалуйста подробнее про режим прошивки с виртуальной флешки без программ. Буквально подключил и подал питание — и программатор начал зашивать?
Что насчет битов защиты, сможет ли установить?
Как определить, что уже прошито и проверено?
Не пойдет ли по второму кругу шить, если в нужное время не отключить?
Защиту можно установить программно в прошивке.

Подключил программатор к программируемому девайсу и к пк.
Закинул на виртуальную флешку файл прошивки — вылазит окно копирования файла
Когда копирование завершится можно считать что программатор завершил прошивку.

По второму кругу прошивка не пойдет, потому как для этого придется закинуть на него файл прошивки еще раз.
Это не работает.
Содержимое диска:
Содержимое папки E:\

27-May-04 16:30 46 DETAILS.TXT
1 файлов 46 байт

Содержимое папки E:\System Volume Information

02-Mar-19 11:11 .
02-Mar-19 11:11 ..
02-Mar-19 11:11 12 WPSettings.dat
02-Mar-19 11:11 76 IndexerVolumeGuid
2 файлов 88 байт

Всего файлов:
3 файлов 134 байт
2 папок 139,264 байт свободно
Опишите ваши действия.
Только что проверил — скомпилировал blink в бинарный файл прошивки, закинул на программатор и bluepill начал мерцать.
Скомпилировал в bin, записал на диск программатора и ничего.
Очистил МК, записал на диск и ничего.
Но МК STM32F303
На диске программатора, после неудачной прошивки таким способом — появляется файл FAIL.TXT.
Что в нем?
Если же его нет то прошивка прошла успешно.
А если файл был до прошивки — значит скорее всего вы не правильно подключили программатор к девайсу.

Так же, если не подключен RESET от программаторы к девайсу — программатор не будет сбрасывать девайс после прошивки, и это придется сделать вручную нажатием кнопки RESET после прошивки.
А вот сейчас — сработало…
Имя файла было "_tst.bin" — не работало, переименовал в «tst.bin» — сработало. Фантастика…
Reset не подпаивал, давлю кнопкой.
Компилировал проект в .bin формат в Atollic studio и в SystemWorkbench. Причём Atollic какими то своими путями делает файл с расширением .binary, но содержимое при этом нормальное. SystemWorkbench .bin делает обычным путём (arm-none-eabi-objcopy -O binary "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.bin") Кидаю этот файл на «флеш диск» отладчика и в логе FAIL.TXT получаю — The application file format is unknown and cannot be parsed and/or processed. Причём если эти файлы просто прошивать через ST-LINK Utility, то они прошиваются и нормально работают.
Что не так?
*.binary тоже подойдет, это то же расширение что и *.bin.
«The application file format is unknown and cannot be parsed and/or processed.» значит что файл собран не правильно.

То что binary и bin одно и то же я сам понял и написал же об этом… И я понимаю сам, что что то не так скомпилировано и спрашиваю совета что делать. Менял кое какие настройки компиляции наугад. Результата ноль. И я не знаю как гуглить эту проблему ни по-русски ни по-английски. Думал по ключевым словам stm32 msd, но совсем не то нахожу.

Давайте с другой стороны зайдем. Дайте мне bin файл мигалки для синей пилюли. Я попробую ваш файл кинуть в отладчик. Stm32f103c8t6, pc13 нога светодиода.

Добавил в архив.
Нет. Такая же ошибка. При этом режиме прошивки не нужно трогать джампера BOOT0/1?
BOOT оба на 0.
Ну ясно, обычный режим работы. В общем не судьба…
У вас защита от записи не включена у прошиваемого камня?
Если включена попробуйте выключить.
Была выключена, проверил. Стёр ещё раз память, перепроверил — тот же результат…
Блин… Заработало!
Спасибо :-)
Я думал, что раз Reset на гребёнку (c торца) пилюли не выведен, то и подключать не обязательно. Ведь обычный способ прошивки нормально работает и без Reset.
Поздравляю, пользуйтесь )
Сразу проверил что будет в логе при защите памяти: Flash algorithm write command FAILURE. И прошиться не может при этом.
Ну фишка скорее для быстрой прошивки девайса без софта.
На пример через телефон (не пробовал, не уверен, но и не отрицаю такую возможность).
Xiaomi Redmi 4X не увидел эту «флешку». Что-то пытается, но в проводнике пусто.
Я без понятия где мой OTG переходник сейчас лежит, потому не могу проверить и как либо решить проблему)
Да это уже и не проблема. Таким способом я не буду прошивать :-)
Спортивный интерес)
Я тут вот что подумал, ведь я не доделал st-link… Я его только прошил и не допаивал выводы. Прошивая пилюлю я подключал её вывод R к штатному выводу RST ст-линка (который внутри ст-линка подключен на PB6). Как это вообще заработало?
Не знаю.
Rst что выведен с завода относится к swim интерфейсу, не к swd
Это я уже сам догадался… Взялся доделывать. Посмотрим далее.
Всё допаял. Проверил все функции (SWO, USART). Всё работает.
Отлично, пользуйтесь )
Хотя может сам виноват…
Использую 103C8T6 вместо рекомендуемого 103CBT6
Кем рекомендуемый?)
Практикой рекомендуемой…
Некоторые китайские STM32F103C8T6 имеют «на борту» 128К, Когда поставил «честный» чип STM32F103C8T6 (малазийский), то при попытке сделать апгрейд получил сообщение о нехватки памяти.
На STM32F103CBT6 всё Ок.
Читайте внимательно статью.
Например, модификацию STM32+MSD+VCP можно сделать только если чип STM32F1xxCBxx, однако у нее есть аналог STM32+Audio, который даст STM32+VCP (в принципе что нам и требуется).

Получите тот же v2.1 но без эмуляции флешки.
Да, если посмотреть схему нуклео, то там как раз и нарисован STM32FCBT6
Подскажите пожалуйста, я себе запилил MSD, у него емкость 4кб.
Соответственно почти любую прошивку пихаешь туда — недостаточно места на диске.
микруха C8T6, у нее ОЗУ 20кб.
Зависит ли размер виртуального диска от ОЗУ или от чего то еще?
Или как его увеличить?
Если есть файл FAIL.TXT то не правильно подключен программатор к прошиваемому чипу, либо же чип залочен(не факт что это может стать причиной, уже не помню).
Емкость виртуального носителя зависит от емкости прошиваемого чипа, но не напрямую, я не разбирался как именно зависит.
Емкость озу не имеет значения.
Прошивать через виртуальный носитель можно только файлы *.bin и *.binary.
Не знаю смогу ли чем нибудь еще помочь, так как я прошил его в Black Magic Probe (удобная штука получилась, использую вместе с VS Code).
А если прошить на MSD, то ST-link utility продолжает видеть программатор и работать с ним? Или дальше работа только как с флешкой?
У меня получилась картина, что программатор появился как флешка, а вот ST-link utility его видеть перестает (после первой прошивки через эту утилиту)
Да нет, должно работать одинаково и там и там.
При прошивки через MSD (если закинуть на него файл прошивки) программатор переподключается сразу после того как закончит прошивать подключенный МК.
Спасибо за статью! Сам некоторое время назад интересовался этой проблемой, но пошел другими путями. Путь первый — отрезать STLink v2.1 от платы Nucleo (линк). Путь второй — вообще забить на STLink и шить через FT2232 и OpenOCD (линк). Я в итоге остановился на последнем, он достаточно удобен, и легко повторяем.
Впадаю в рассуждения)

FT2232 не так уж и везде продается )
На али сейчас платка с ним стоит от ~10$ (с учетом доставки)
ST-Link V2 же от ~2$ (с учетом доставки)
Разница пятикратная.

Если же затронуть местные магазины (не Россия) — FT2232 либо нет вообще (даже чисто чипа) либо стоимость от 30$ за платку.
А в Российском «ЧИП и ДИП» так вообще от 96$ за платку.
ST-Link V2 — есть почти в каждом местном радиомагазине (не Россия), стоимость от 5$.
А в Российском «ЧИП и ДИП» от 11$.

Конечно может и не стоит возиться ради такой небольшой разницы как 8$.
Но на них можно купить три десятка хороших dc-dc модулей по 3A каждый.
Тем более если это не проблема для того кто будет модить)
Ну а если учитывать разницу цен в местных (а тем более «ЧИП и ДИП») — то точно уж жаба задушит переплачивать )
Либо же не переделывать а и правда взять Nucleo на али, и за те же деньги что и FT2232 у местных получить ST-Link V2.1 + МК с обвязкой, пускай и не самой удобной.

Единственный + это многофункциональность чипа…
Но меня и CH341 вполне устраивает при его стоимости в местных магазинах ~2$.
А искать чип отдельно и делать плату —
1) очередной гемор на разводке и травлении
2) (хоть это и мало вероятно) если попадется брак или пустышка — не докажешь что это не ты убил чип не правильной разводкой, или перегревом при пайке.
А что если после прошивки программатор определяется, но попытка Upgrade заказнчивается ошибкой: Unknown firmware type. Don;t know how to upgrade.
???
Ой…
Используйте программу из архива.
Слабо мне на такие ножки подпаиваться. Взял отдельный Blue pill, сделал как по ссылке , только не понял, на схеме у него нет резистора на 100 ом, который есть на плате.
Но суть не в этом. Определился нормально, но когда попытался обновить до 2.1, получил ошибку «firmware too big for this board». Так и не вышел каменный цветок…
Сорри, ошибка «The up-to-date firmware is too big for this board». В итоге получилось, но в варианте STM32+Audio ))
Читайте внимательней оригинальную статью (данную статью).
модификацию STM32+MSD+VCP можно сделать только если чип STM32F1xxCBxx, однако у нее есть аналог STM32+Audio, который даст STM32+VCP (в принципе что нам и требуется).
Наконец-то дошли руки.
Делал на маке, а в нем Virtual Box с XP. К сожалению, раз 5 шил бутлоадер, прежде, чем дошло, что ST-Link стал новым и надо «сказать» виртуалбоксу пробросить USB в гостевую ось.
Прям, великолепно все!
Спасибо за статью!
Успешно переделал китайский st-link на базе некоего CKS32F103C8.

Все замененные контакты находились на верхней стороне платы (5В, 3.3В, SWIO и RST) так что не пришлось мучиться с прокладкой проводов на ту сторону.
Встроенный VCP — кайф!
С прошивкой по USB понятно, а что дает VCP? Возможность вывода отладочной информации через SWO?
VCP — UART
SWO — это немного другое (Больше функционала в некотором софте, и только в одном направлении)
Большое спасибо!!! Сделал такой- же из свистка, в SW4STM32 генерит выходной файл в .hex, конвертером хекс- редактора в .bin, .bin в .binary переименовал, закинул на свисток и мой код на целевом контроллере! Удобно! Ну и прошивка / дебаг из среды работает.

Как запитать плату программатором ST Link V2?

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории