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

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

Кроме оригинальных ST-Link V2 и дешевых китайских ST-Link V2 без поддержки SWO бывают ещё неоригинальные китайские ST-Link V2, которые внешне ничем не отличаются от оригинальных, и SWO поддерживают, но имеют намного более простую конструкцию без буферов и защит — голый микроконтроллер, и работают гораздо менее стабильно. Зато стоят лишь немного дороже цветных "USB-свистков".

Объясните пожалуйста, почему единственный путь (других не находил) это прошить загрузчик и обновиться через утилиту именно строго определённой версии? Почему бы просто не прошить сразу нужную программу и всё?

Загрузчик это сдампленная, когда это было возможно, кем-то давно прошивка. Общественность не должна была заиметь это. Адекватного пути из-за коммерческой тайны не может быть по определению. Способ: загрузить старую прошивку -> обновиться до новой - самый удобный из имеющихся, если не единственный.

Что мешает сдампить уже обновлённую прошивку? Защиты от чтения не стоит.

  1. Насколько помню, основная проблема это невозможность обновления более новыми версиями и поэтому отсутствие поддержки свежих процессоров. Я переделал себе один китайский свисток, но не смог им прошивать STM32G0(или править фьюзы?). Китайцы часто ставят уже 103CB и достаточно просто порезать дорожки и подпаять провода.

  2. За 500+ рублей еще недавно на али можно было купить JLINK-OB в котором уже есть VCP и вывод SWO. Причем им можно отлаживать и прошивать почти любой мелкий ARM. Правда частота SWO всего 200кГц.

ИМХО основное преимущество этого варианта это разъем Type-C, если работаешь не с ноута и рядом не лежит хаб, то удлинитель не очень удобно и не всегда под рукой. Остальное очень натянуто, за годы я купил себе наверно с десяток китайских ST-LINK и ни разу не столкнулся ни с глюками, ни с неисправностью нового. Штуки три сжег, из нескольких выпаял процессор(оказалось дешевле нового), несколько раздал, остальные лежат в ящиках и постоянно теряются.)

Тут по-видимому дело случая, но китайские st-link мне порядком так поднадоели, я не говорил, что они глючные, нет, работают нормально, если рабочий пришёл. Много натыкался на неисправные уже по приходу, то не определялись, то приходила странная партия таких свистков, в которых забывали пару смд резисторов по d+ d- напаять, приходилось самому. В работе они совсем неудобные...

В общем целом им можно пользоваться, но мой опыт, основанный на статистическом методе, заставил меня уйти от этого вариата, вот уже больше года пользуюсь этим своим кастомным и не встречаю никаких проблем. Так что, смотрите сами, как вам удобнее, может мне стоило за 500 рублей, как вы говорите китайский J-Link себе купить, но пока всё хорошо

кстати V3 уже не работает с китайскими процессорами (например, Gigadevice). Кстати дома пользуюсь V2 программатором сделанным из обычной платы BluePill на stm32f103c8t6, там надо несколько элементов навесом всего.

У меня есть китайские свистки. Однако я пользуюсь программатором от MikroE. Есть как проводной так и беспроводной.

Вот! беспроводной хочу!

У меня CodeGrip от MikroE ( https://www.mikroe.com/codegrip-for-arm ). Конечно лютейшая пропиетарщина, в том числе и SSL шифрование обмена для скрытия от всяких. Я был бы рад, если кто сможет сделать опенсурсный вариант. А если он ещё и OpenOCD совместимый будет так вообще бомба.

Ну ок, не устраивает китайский программатор за 3 евро, но тратить свое время и куда больше ресурсов, чтобы повторить оригинальный программатор за 25 евро - это какой-то реально свой путь, бессмысленный и беспощадный. Я понимаю, если бы речь шла про J-Link, который стоит от 500 евро, но это уже апофеоз крохоборства.

Ок, подскажи готовый неплохо защищённый программатор с поддержкой SWO и openocd не за 500$, богатей ты наш!

Jetlink9 - весьма добротный клон за 67$. Пользуюсь ежедневно в работе и дома. Ни один пока не умер на моей памяти. Есть у них же еще более беспроблемный Jetlink Ultra V4, но ценник на 100$ побольше

Извините, но при чем тут openocd в отношении ST-Link? И да, вот вам готовый программатор с поддержкой SWO: оригинальный ST-Link v2:

Удивительно, да?

На каком пине висит swo? Можете на схеме показать? Я мог ошибиться

Жаль, что VCO нет, SWO приятное дополнение, но скорости не очень.

Эм... В общем целом на разработку иногда после работы вечером ушёл месяц, скинулся с другом на платы и компоненты, сделали себе хорошие программаторы и вышло ещё дешевле, чем описано стоимость в статье.

Вы чересчур предираетесь, какой программатор вы используете, тот самый J-Link может?

НЛО прилетело и опубликовало эту надпись здесь

Есть ещё китайский wchlink mini. На нем swd и uart. Умеет шить stm32, risc v и, возможно, ещё какие-то arm'ы

Неплохой, жаль только SWO нет

В официальном магазине STLINK-V3MINIE $11.47

https://estore.st.com/en/products/development-tools/hardware-development-tools/hardware-debugger-and-programmer-tools-for-stm32/stlink-v3minie.html

Это не тот, который я показывал в статье, да VCP есть, но нет других возможностей, гляньте полноценный, не MINIE, там он шире описан. + В оффициальном магазине да, он столько стоит, но можно ли его купить россиянам и белорусам к примеру с учётом текущей ситуации в мире?

swo есть, type-c есть, защита usb от статики просматривается.

да, напрямую заказать тоже не получается, но в локальных магазинах около 1000грн (~$25)

Я, если честно, не понял, зачем нужно SWO/VCP в программаторе?

Т.к. любая (ну или почти любая ) ножка процессора элементарно превращается в UART либо что-либо еще аппаратно, либо битбэнгом - и выводит или вводит все, что душе угодно.

Вирутальный COM? - да вообще без проблем - цепляешь UART к UART2USB с али за 1$ и все - можно отправлять/принимать что угодно, мало того, их можно присоеденить не один, а несколько к разным ножкам и гнать телеметрию по всем ним.

Причем тут программатор?

Ну или я не понимаю чего-то.

Можно. Можно ещё светодиодом сигнализировать какое-либо состояние и по мере отладки переносить зажигание светодиода в разное место программы.

Отладчик как раз и нужен чтобы всего этого НЕ делать. То есть никак не модифицируя программу можно чуть ли не в прямом эфире смотреть значения переменных. Точки останова, опять же. Да и сам отладочный интерфейс зачастую последовательный. То есть всё то же самое, только лучше и УЖЕ сделано производителем.

А последовательный порт? Просто удобно. Не нужно ещё одно устройство иметь и занимать ещё один порт.

То есть это всё не про что-то совершенно уникальное и абсолютно необходимое. Это просто ещё один способ немного облегчить себе жизнь.

Добавлено: И режим флешки туда же. На любом компьютере раздобыл файл прошивки, закинул его в микроконтроллер через CTRL+C, CTRL+V и готово. Не надо никаких утилит устанавливать, никаких программ, никаких сторонних средств и драйверов. Подключил, закинул, прошито!

Про режим флешки я как раз ничего и не писал)

Всё просто, зачем цеплять ещё некий сторонний китайский девайс, когда всё есть в одном устройсве, которое по цене за тот же 1$ дороже будет, чем китайский свисток + максимальная скорость передачи 2000000, не все уарт-усб чипы её тянут + доступен SWO. Используя SWO можете не запускать сторонний терминал, а выводить всё в строенный viewer вашего ПО для разработки и работать в одном окне условно.

В добавок, если имеете 3Д-принтер можно и корпус распечать себе, модель коротого чётко под такой программатор сделана, ну это так, вишенка на торте...

SWO это еще один способ иногда выдать отладочную информацию не тормозя процессор. Можно записать до 8(16?) 32битных регистров ITM_STIMx и они будут последовательно выводится по SWO. Да, можно это же сделать с помощью UART и DMA, но это не всегда удобно и не всегда есть лишний UART.

Когда отлаживаешь что-то небольшое или носишь домой/обратно, то очень удобно когда к твоей плате подключен только маленький свисток.

Причем тут программатор?

Обычно писать "программатор и внутрисхемный отладчик для процессоров STM32" не очень удобно, поэтому пишут коротко "программатор".

SWO Процессор очень даже хорошо тормозит!

Ну или я не понимаю чего-то.

Я тоже ;)

Взял самый дешевый китайский свисток, поиграться в stm8. Подключается плоским шлейфом с 4 проводками прямо в плату без перекрещиваний. Пошаговая отладка в platformio через эти 4 провода работает. Программу в камень заливает. Что еще нужно от программатора?

Ага, немного понял ;) stm8 и stm32 достаточно разные. Для stm8 свисток подходит идеально.

https://habr.com/ru/articles/402927/ - тут допиливали SWO с помощью 2 резисторов ;)

Оригинальный ST-Link V3 стоит $35, это цена космос???

Собрать программатор из статьи, с заказом ПП выйдет не особо и дешевле

Всмысле? Я же показал сколько стоит такой программатор на AliExpress, смотрите скрины в статье и ссылки на другие магазины, не знаю где вы увидели 35$, может на оригинальном сайте, но если вы живёте в России или Беларуси, как я, то вряд ли у вас получится за такую цену купить. Да даже это дорого, вам в статье предалагается решение в 7 раз дешевле, а по факту ещё дешевле. Вот отрывок из статьи:

"Собрать программатор из статьи, с заказом ПП выйдет не особо и дешевле"

Ответ: Всмысле? Я же указал примерный ценник этого программатора, 4-5$ за плату, на доллар дороже чем китайский

Всегда радует, когда кто-то что-то делает сам. Автору +
Автор может записать видео обзор на этот программатор?

Я попробую... В выходные может сделаю и дополню статью, размещу видео в конце статьи, следите за изменениями

в оригинальном STLink2 у меня моментально сломался разъем STM8 (белая пластмасса разъема)

Оригинальный STLink3 хорош (но не иделен) тем что умеет шить по CAN, I2c и всякому такому нестандартному что умет делать бутлоадер на новых STM32. Так что если клонировать еще то неплохо бы это железо сделать по уму а не как сделано - мелкой платой за большие деньги.

Я брал на Али ST-LINK v3 MINI за 1500 руб. в 02.2022, сейчас он стоит 2500 руб. в связи с курсом.
Работа автора хорошая, вопросов нет, но заказ только печатных плат для этого проекта +- в эти же 2500 и выйдет.

Недавно заказывал иные платы, но тот же размер, общая сумма с PCB way вышла 8,66$, на русские это сейчас вроде 866 рублей. Компоненты чуть-чуть дороже. И в итоге вы получаете не одну платку, а несколько. + Лично я когда делал этот программатор скинулся с другом и вышло прямо говоря очень дёшего, ни про какие 2500 не идёт речь

Ни PCBWay, ни JLCPCB не сегодняшний момент в Россию не поставляют, только через посредников с некислой наценкой. Соответственно моя цена более чем реальна, я недавно заказал 5 плат через посредников, вышло где то 2100 за всё, но это было по курсу ~80, а сейчас он уже 97. Так что...

Понятно, я живу в Беларуси, поэтому такая разница, jlc тоже не работает, но pcbway доставляет. + Плат всё же 10 штук сразу приходит

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

И всё, прикиньте.

Как то странно, что у вас в нем нет отладчика или вы просто решили об этом не писать.

Да, я и не думал это уточнять, поскольку подумал, что это само собой разумеется, тут больше речь шла про наличие swo и uart, и иных фич, указанных в аналогах. Через swdio можно конечно отлаживать, это стандартная функция всех существующих программаторов, в утилите для st-link стандартная прошивка уже содержит эту функцию, может поэтому и не уточнял этот момент.

P.s. При сравнении с аналогами этот момент также не указывается

Пользую китайский свисток ST-Link V2. На Алике стоит 200р.

Пользую самопальную программу, которая общается с стлинком через фирменную утилиту ST-Link CLI (Command Line Interface). В отличие от большинства фирменных программ программаторов, загружает HEX перед каждой прошивкой, что актуально при отладке программ. Поскольку оригинальные STM32 дорогие, больше в ходу клоны (GD32 etc), которые CubeIDE на дух не переносит, самопальная прога - наше фсё.

SWO пытался пользовать, в стлинке надо повесить перемычку на ноги проца, и порт SWIM превращается в SWO! Но - исплевался. SWO-терминал надо перезапускать каждый раз после прошивки, еще несколько кликов мыши... И сам терминал корявый.

printf у меня и так работает, первое что делаю в новом проекте - организую выделенный usart на вывод данных stdout, и подключаю к таргету кроме программатора uart-usb свисток.

За стандарт подключения SWD к таргету принял 4-контактный разьем STM-ардуины. Раньше пользовал 6-контактный разьем, слизанный с discovery-платы, на нем есть RST и SWO, но RST задействовать по назначению так и не удалось, он и не нужен, сброс хорошо делается через SWD.

К стлинку - примочка, преобразующая 10-жильный шлейф от стлинка в 4-жильный к разьему таргета. Важная часть примочки - отдельный стаб +3.3 из +5, обеспечивающий питание таргета при прошивке и отладке. Отдельный, потому что вывод +3.3 это от внутреннего стаба стлинка, он всем хорош, но при втыкании в таргет с кондером на питании, питание проца стлинка просаживается, стлинк зависает, надо все передергивать, задолбало...

Примочка закатана в термоусадку. Первая версия, не изолированная, валялась на столе, никого не трогала, и коротнула питанием на что-то... Разьем расплавился, даже шлеф поплыл... Пришлось делать новую. :)))

Свисток подключен к компу через метровый USB-удлиннитель, от стлинка полутораметровый шлейф, никаких проблем с стабильностью передачи сигналов.

У меня тоже 4 пина на платах: RST, SWCK, SWDIO, GND. Устройство, понятное дело, в самозапитке. Для простой прошивки юзаю mikroProg Suit for ARM от MikroE, он работает стабильно даже когда сам STLink зависает от отладочных действий, отладчик не видит а он нормально инициализирует и возвращает к жизни. Отлаживаюсь через OpenOCD под Eclipse.

Еще гальваноразвязку бы туда - и вообще супер!

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

Публикации

Истории