Вход на сайт

Зарегистрировавшись на сайте Вы сможете добавлять свои материалы






Самодельный st link v2


Создаём ST-Link V2 / STM32 / Сообщество EasyElectronics.ru

      Как-то так исторически сложилось, что, хоть и «подружился» с микроконтроллерами от ST Microelectronics я уже давненько, но полноценного отладчика до сих пор у меня не было. «Подсадил» на STM8 меня друг, подарив на день рождения платку STM8S-Discovery. Вдоволь наигравшись с целевым камушком, я отключил отладочную часть платки, а встроенный ST-Link стал «рабочей лошадкой» в моей лаборатории. Таковым и оставался бы до сих пор, и всё было хорошо, да вот где-то с полгода назад случилась ситуация, которая сподвигнула меня на изыскания по размножению отладчика: мне пришлось подключить обратно отладочную часть дискавери, так как проэкт, над которым предполагалось работать, использовал тот же проц, что и в дискавери, и обросла платка некислым таким «ежиком» из проводов и деталюшек, закипела работа… А тут заказчик звонит-мол, приедь ко мне да подправь, плиз, прошивочку в своём устройстве-да там фигня, задержку на секунду увеличить и всего-то делов… А «рабочая лошадь» чуть ли не намертво к рабочему столу привязана проводами да кабелюками, блин! Пришлось разбирать, конечно… Вернувшись от заказчика и грустно поглядев на то, что ещё утром было полем для бурной деятельности по проверке идей-полез искать вдохновения в гугле. Кому интересно, что из этого получилось-добро пожаловать под отрезь… :)

      Вариант «пойти и купить», конечно же, рассматривался. Но, поскольку «неспортивно», был оставлен в качестве «плана Б». Очень быстро были найдены фотографии внутренностей полноценного ST-Link, его «слизанная» схема, и всё хорошо, да только прошивки для полного счастья не хватало. Но на третьей странице гугля была найдена ссылочка на наш же форум, где пользователь Chinook выложил «слизанную» им прошивку от ST-Link V2.
      Само собой разумеется, вариант «сделать самому» тут же перевесил «план Б». Ну и кроме того, возможность добавить некоторый функционал, отсутствующий в фирменном St-Link, весьма таки грела душу.
      Тут надо заметить, что чаще я делаю мелкие девайсики, которые дополняют или расширяют функционал родительских устройств. Счётчики там всякие, интерфейсные платки, индикаторы и прочая тому подобная мелочёвка. И большинство этих штучек получают свои миллиамперы питания от родительского устройства, вживляясь в его схему. Поэтому отсутствие в штатном St-Link возможности запитывать таргет непосредственно от отладчика, и как следствие-отсутствие возможности выбора питания-5 или 3.3 вольта-меня нисколько не радовало. Да, конечно же, существует лабораторный источник питания и всё такое… Собственно говоря, первое включение после сборки всегда через лабораторный БП-мало ли что, даже новые деталюшки и то не всегда бывают исправными, ну а если уж где-то «соплю» проглядеть-так и подавно проблемы будут. Но когда всё проверено-зачем лабораторный БП гонять, если можно запитаться прямо от компа?
     Вот примерно с такими мыслями я и приступил к компиляции входных данных. Были изучены доступные схемы отладчиков-из мануалов по разным версиям Discovery и найденные в сети, внесены изменения и доработки, в результате получилась вот такая spaghetti diagram схема:

      Поскольку на момент составления схемы всё ещё были некоторые нестыковки, в частности-разночтения в подключении ножек идентификации, разводка JTAG в одной из схем отличалась, и, кроме того, окончательно было непонятно: заработает этот компот как надо или же нет-то часть ножек контроллера была выведена на контактные площадки для удобства перекоммутации. А если бы эта компиляция не заработала-то эти дополнительные контактные площадки позволят использовать плату как отладочную для какого-нибудь простенького USB устройства. Как раз с целью возможности использовать эту плату как отладочную я и развёл на ней JTAG-интерфейс, ибо JTAG J-Link у меня имеется в виде отдельного устройства. А для облегчения программирования платы теми, кто будет повторять эту конструкцию, на отдельный разъём были выведены все контакты, необходимые при программировании микроконтроллера с использованием его собственного загрузчика. Забегая вперёд, замечу, что ошибки в выбранной мной для работы версии схемы всё же сделали своё чёрное дело, и готовую плату пришлось-таки немного почикать скальпелем и засопливить перемычками. В статью пошла уже исправленная версия схемы и разводки, ну а фотки-уж как есть…

      Разводка разъёма SWIM выполнена в соответствии с распиновкой оригинального ST-Link'а, поскольку у меня есть уже очень много устройств, кабеля программирования которых используют именно эту распиновку. А вот распиновка SWD/JTAG разъёма моя собственная. Во-первых, применённый в оригинальном ST-Link разъём не вписывался в выбранный мной корпус, во-вторых, для штыревых разъёмов типа PLS-PLD я, по возможности, предпочитаю делать «диагональные» или «симметричные» разводки разъёмов, как минимум в той части, в которой разведена сила. При этом, если вдруг разъём случайно будет перевёрнут на 180 градусов, земля и питание всё равно попадут на свои места-меньше риска испустить magic smoke. Просто устройство не будет работать. Естественно, если в разъёме присутствуют сигналы выборки или включения, неплохо бы позаботиться, чтобы при перевороте разъёма они попали на пины, которые обеспечат этим сигналам неактивные уровни. Такая себе защита от дурака, хотя и давно известно, что хуже дурака-только инициативный дурак…


      Плата разводилась с использованием компонентов типоразмера 0603 под корпус 20-13 фирмы Sanhe. Можно было, конечно, использовать и 0805-места на плате более чем достаточно. Но я уже давненько перешёл на 0603, и не стал изменять своим привычкам. Размещение компонентов выбрано таким, чтобы плату можно было как монтировать в корпус (при этом кварцевый резонатор и разъёмы отладчика запаиваются на обратной стороне платы и используются выводные светодиоды), так и без корпуса, при этом разъёмы и кварц запаиваются сверху, и используется двухцветный светодиод FYLS-1210. Поскольку мне до сих пор не понятно, как и для чего ST-Link использует контроль напряжения целевого устройства, предусмотрена возможность коммутации измерительного входа микроконтроллера с постоянно присутствующего напряжения питания на напряжение питания целевой платы. Для контроля напряжения питания целевой платы необходимо запаять резистор R14, для отключения возможности контроля должен быть запаян резистор R16, причём должен быть запаян либо один, либо второй, но никак не оба вместе. В моей плате запаян R14, всё отлично работает.


      Печатная плата устройства во всех отношениях экспериментальная. Экспериментальное устройство, первая проба металлизации отверстий в домашних условиях, первый тентинг с использованием фоторезиста Riston, первая попытка вытравить зазоры 0.2мм на гальванически нарощенной и из-за этого толстой фольге, первое использование сухой плёночной маски… Что-то из всего этого получилось идеально, что-то не очень, но это уже тема для отдельной статьи.
      После запаивания компонентов и пробной установки разъёмов плата приобретает следующий вид:

      Делаем пробное подключение к лабораторному блоку питания, убеждаемся в отсутствии дыма и нагрева деталей, убеждаемся, что стабилизатор выдаёт свои 3.3 вольта. Потом подключаем платку к компьютеру, который должен бодро отрапортовать о неопознанном устройстве USB. Раз так-значит пока всё в порядке.
      Идём на сайт ST Microelectronics и скачиваем оттуда Flash Loader Demostrator. «Повбывав би гадiв», которые ST сайт делали. Найти там что-либо… Впрочем, извините, отвлёкся. Скачиваем, распаковываем, устанавливаем. Прямо на разъём загрузчика одеваем перемычку, которая соединит вывод BOOT0 микроконтроллера с плюсом питания и введёт контроллер в режим загрузчика, туда же подключаем разъём от USB-RS232 преобразователя:

      Подключаем это всё в USB следующем порядке: cначала подключаем USB-RS232, затем подключаем ST-Link, отключать потом будем в обратном порядке. Запускаем Flash Loader Demonstrator, и, если мы не поджарили микроконтроллер во время впаивания, не убили его статикой и не перепутали RX/TX при подключении интерфейса, то софтинка должна бодро отрапортовать, что Target is readable. А значит, ещё один шаг к созданию собственного отладчика пройден.
      Из прикреплённого к статье архива извлекаем файлик STLinkV2.J16.S4.bin, натравливаем на него Flash Loader, ждём пару секунд. Готово! Отключаем сначала ST-link, затем интерфейс. Я не рассматриваю вариант прошивки через JTAG-у кого он есть, те и сами знают, как это сделать; у новичков же адаптер JTAG вряд ли будет. Собственно, его-то мы как раз и делаем… Итак, отключаем интерфейс программирования, снимаем перемычку, и торжественно подключаем наш свежеиспечённый ST-Link к компьютеру. Который должен найти новое устройство и запросить на него дровишки, которые мы уже успели заблаговременно скачать с сайта производителя. Торжественно подключаем целевое устройство, запускаем IAR (ну или кто там в чём программирует), нажимаем «записать» и… Нифига не работает! Can not communicate with tool. Вот же ж блин! Столько труда и всё впустую. Последующие три дня проходят в попытках понять что же не так. Попытки замыкания ножек идентификации на землю и на питание в разных комбинациях, изучение осциллограмм, курение логов USBLyzer'а… Пока в один вечер, а если точнее-уже давным-давно ночер, не промахнулся по менюшке и вместо STVP не запустил St-Link Upgrade Utility. Хотя и обновлять на ту же самую версию-нонсенс, палец автоматом кликнул «Upgrade». Апгрейд прошёл штатно, но что самое главное-девайс перестал отваливаться и наконец-то заработал! Когда радости немного поулеглись (я аж проснулся), вернул схему к первоначальному виду и повторил эксперимент. И таки да, дело не в перемычках, а в прошивке. Судя по всему, что поскольку Chinook скомпоновал прошивку из двух разных версий, что-то в ней не совсем срослось. И хотя устройство и определяется как полноценный дискавери, работать оно не может. Корректное обновление записывает полноценную прошивку и решает проблему.

     Теперь, когда железяка работает, пора подумать и о корпусе. Не, я, конечно, понимаю, что «труЪ киберпанк» и всякое такое… Но пару выездов для работы на территорию заказчиков, когда приходилось располагаться с ноутбуком посреди торчащих прутьев арматуры, а провода и платы размещать между кучками стальной стружки, при этом бояться пошевелиться, чтобы случайно что-нибудь ни на таргет, ни на отладчик не уронить, и самому при этом с насеста не сверзиться-навели на стойкую уверенность, что корпус таки быть должен. Как минимум, одной зоной внимания меньше… Берём наш свежеприобретённый корпус, берём боевой «Дремель» и зубопротезный бор, и через пяток минут жужжания бормашинкой и ещё пяток-шуршания надфилем получаем вот такую красоту:

     Ну что ж, теперь можно и разъёмы на их постоянное место впаять, и корпус закрыть. Всё получилось, железяка работает. Но… У нас получилась унылая белая (серая, чёрная-кому там какая попадётся) коробка с двумя разъёмами и перемычкой. Уберём её в ящик стола на месяц-другой, потом решим поШкодить, достанем-и будем долго вспоминать, какой контакт разъёма куда надо подключать, и в какое положение перемычку ставить. Что-то вспомнится, что-то нет, прийдётся доставать из архива проэкт, открывать его и смотреть, что там куда подключено. Непорядок, одним словом. А раз так-надо этот непорядок исправить, желательно, одновременно скрасив унылость монотонной коробки. Сходим на сайт ST, нагло утырим у них их логотип, засунем его в Photoshop (или любимый опенсорсный графический редактор-на выбор по вкусу), немножко там над ним поколдуем… Посолим, поперчим, испечём до готовности:
Полученную бумажку можно вырезать и приклеить на тонкий двухсторонний скотч, но-«нормальные герои всегда идут в обход». Выпросил я как-то на одной из обслуживаемых мной фирм жидкость чудную, заморскую, «жидкий скотч» называемую. Остатки, на попробовать, а вдруг пригодится. Как оказалось впоследствии-очень полезная в мастерской штука. Выкройку на заготовку приклеить перед вырезанием, наклейки всякие сделать, шильдики… Жена с дочкой для рукоделия ихнего таскают периодически, но чего они там с ним делают-не знаю. В общем, у кого ещё этой штуки в арсенале нету-рекомендую обзавестись. А у кого есть-берём баллон и брызгаем на обратную сторону бумажки. Тут должен сделать два замечания. Во-первых, брызгать надо ещё не вырезанный шильдик: так покрытие будет равномерным, и весь стол потом не будет из себя представлять липучку для мух. Хотя брызгать в любом случае лучше на балконе или в подъезде, ибо разлетается неимоверно. Если раз-два, да ещё газетку на стол постелить, то вроде как и ничего. А вот если пользоваться постоянно-комки липкой пыли потом будут обнаруживаться «в самых неожиданных местах»(С). О том, что дышать распылом крайне не рекомендуется, я даже не упоминаю. И во-вторых, не следует пытаться за один раз нанести всю толщину покрытия, особенно на бумаге. Вот как раз о неприятном свойстве бумаги всё впитывать я после продолжительной работы с плёночными шильдиками как-то забыл, ну и дунул, что называется, «от души». Налитая лужица тут же бодро впиталась в бумагу, и теперь у меня наклейка не беленькая, а как будто масляными пальцами залапанная местами. Переделывать я уже не стал, ну а вы постарайтесь не повторять моих ошибок. Наносите клеевой состав тонкими слоями, и каждый раз дожидайтесь высыхания предыдущего слоя (2-3 минуты при комнатной температуре). При этом первые два слоя «запечатают» поры в бумаге, а последующие два-три создадут необходимую для хорошей адгезии толщину слоя. Вот теперь, после окончательной сушки, можно вырезать готовый шильдик и клеить его на наш корпус. Выглядеть это будет так:

Ну вот, а теперь можно и попрограммировать. Равно как и попрошивать, поотлаживать…

Пару слов напоследок. Поскольку это моя первая статья в сообществе, просьба ногами не бить и гнилыми помидорами/тухлыми яйцами не кидать. Объективная критика, наоборот, очень даже приветствуется. Статью размещаю в личном блоге, можно ли/нужно ли её скопировать куда-то в профильный раздел-пусть решают общественность и Ди Хальт. Отладчик был сделан в январе 2013, и 95% этой статьи было написано тогда же, но дописал оставшиеся 5% и публикую я всё это только сейчас, потому что до сего момента не было случая проверить работу отладчика по SWD и JTAG. Собственно, до этого времени работал преимущественно с STM8. Сейчас появилась девборда с STM32, работоспособность SWD/JTAG проверил, даже прошивку в клоне уже успел обновить на крайнюю, всё в порядке. Так что публикую со спокойной душой. :)

UPD:Перезалил ST-Link V2 PCB.zip, так как в него по недосмотру попала старая версия разводки, та самая, которую пришлось скальпелем чикать. Файл CAMTASTIC-LUT.pdf был старый! С фоторезистным вариантом-CAMTASTIC.pdf всё было и есть в порядке. Если Вы будете пробовать изготавливать плату по ЛУТ-технологии-перекачайте, пожалуйста, архив снова. Извините, недосмотрел, сам я уже давно от ЛУТ ушёл…

UPD2:Коллективный разум в комментариях выявил недостаток этой версии отладчика-отсутствие преобразователя уровней. Собственно говоря, во время проэктирования этой платы я даже и не знал, что в оригинале этот самый преобразователь есть. Соответственно, его отсутствие не позволит работать с целевыми платами, МК в которых запитаны от напряжения существенно ниже 3.3в. С этим отладчиком работа с такими платами будет возможна только в случае временного повышения напряжения питания до 3.3в (если это не приведёт к повреждению каких-либо других компонентов платы, естественно). Ну что ж, появится свободное время-буду думать о второй версии этой платы, уже с преобразователем уровней, и, возможно, гальванической развязкой. А пока хочу отдельно и особо поблагодарить коллег dosikus , GYUR22 ,Katz и Vga за конструктивную критику и ценные комментарии…

ST-LINK / V2 - внутрисхемный отладчик / программатор ST-LINK / V2 для STM8 и STM32

ST-LINK / V2 - это внутрисхемный отладчик и программатор для микроконтроллеров STM8 и STM32. Модуль однопроводного интерфейса (SWIM) и интерфейсы JTAG / последовательной отладки проводов (SWD) используются для связи с любым микроконтроллером STM8 или STM32, расположенным на плате приложения. Помимо обеспечения тех же функций, что и ST-LINK / V2, ST-LINK / V2-ISOL обеспечивает цифровую изоляцию между ПК и целевой платой приложения.Он также выдерживает напряжения до 1000 В действ. .

Приложения STM8 используют полноскоростной интерфейс USB для связи с программным обеспечением ST Visual Develop (STVD-STM8) или ST Visual Programmer (STVP-STM8) или с интегрированными средами разработки сторонних производителей.
Приложения STM32 используют полноскоростной интерфейс USB для связи с программным инструментом STM32CubeIDE или со сторонними интегрированными средами разработки.

Основные характеристики

  • Питание 5 В через разъем USB
  • USB 2.0 полноскоростной совместимый интерфейс
  • Кабель USB Type-A - Mini-B в комплекте
  • Особенности
  • SWIM:
    • Поддержка прикладного напряжения от 1,65 В до 5,5 В на интерфейсе SWIM
    • Поддержка низкоскоростного и высокоскоростного режимов SWIM
    • Скорости программирования SWIM: 9.7 кбайт / с на низкоскоростной, 12,8 кбайт / с на высокоскоростной
    • Кабель SWIM для подключения к приложению со стандартным разъемом ERNI Номер по вертикали: 284697 или 214017 Номер по горизонтали: 214012
    • Кабель SWIM для подключения к приложению с помощью контактных разъемов или разъема с шагом 2,54 мм.
  • Особенности
  • JTAG / отладки последовательного кабеля (SWD):
    • 1.Поддержка прикладного напряжения от 65 В до 3,6 В на интерфейсе JTAG / SWD и допустимые входы 5 В
    • Кабель JTAG для подключения к стандартному 20-контактному разъему JTAG с шагом 2,54 мм.
    • Поддержка JTAG
    • Поддержка связи SWD и средства просмотра последовательной связи (SWV)
  • Поддержка прямого обновления прошивки (DFU)
  • Светодиод состояния мигает во время связи с ПК
  • Рабочая температура от 0 ° C до 50 ° C
  • 1000 В действующее значение высокое напряжение изоляции (только ST-LINK / V2-ISOL)
.

stfrank / ST-Link-V2-Firmware: Документация для извлечения / восстановления поврежденных прошивок ST-Link / V2 как для автономного, так и для встроенного внутрисхемного программатора / отладчика ST-Link.

перейти к содержанию Зарегистрироваться
  • Почему именно GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • мобильный
    • Истории клиентов →
    • Безопасность →
  • команда
  • предприятие
.

STSW-LINK004 - Утилита STM32 ST-LINK

Утилита STM32 ST-LINK (STSW-LINK004) - это полнофункциональный программный интерфейс для программирования микроконтроллеров STM32.

Он обеспечивает простую в использовании и эффективную среду для чтения, записи и проверки запоминающего устройства.
Инструмент предлагает широкий спектр функций для программирования внутренней памяти STM32 (Flash, RAM, OTP и другие), внешней памяти, для проверки программного содержимого (контрольная сумма, проверка во время и после программирования, сравнение с файлом) и для автоматизации программирования STM32.
Утилита STM32 ST-LINK поставляется в виде графического пользовательского интерфейса (GUI) с интерфейсом командной строки (CLI).

Основные характеристики

  • Бесплатное программное обеспечение
  • Поддерживает Motorola S19, Intel HEX и двоичные форматы
  • Загрузка, редактирование и сохранение исполняемых файлов и файлов данных, созданных компиляторами Assembler / Linker или C.
  • Удаление, программирование, просмотр и проверка содержимого флэш-памяти устройства
  • Программирование, стирание и проверка внешних запоминающих устройств с примерами внешних флеш-загрузчиков, чтобы пользователи могли разрабатывать загрузчики для конкретных внешних запоминающих устройств
  • Автоматизация программирования STM32 (стирание, проверка, программирование, настройка байтов опций, вычисление контрольной суммы)
  • Программирование Одноразовая программируемая память
  • Поддерживает байты параметров программирования и настройки
  • Предлагает интерфейс командной строки
  • Сравнить файл с целевой памятью
  • Поддерживает просмотр состояния памяти и ядра в режиме Live-update
  • Обновление прошивки
  • ST-LINK / V2
.

stlink-org / stlink: набор инструментов для программирования MCU STM32 с открытым исходным кодом

перейти к содержанию Зарегистрироваться
  • Почему именно GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • мобильный
    • Истории клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
.

Смотрите также