[Из песочницы] Делаем ST-Link V2.1 из китайского ST-Link V2

tkjk6fbr7s0bd4uty75xfjisfm8.jpegПривет, Хабр!

В данной статье расскажу как модифицировать ST-Link V2 до ST-Link V2.1.

Возможно для кого-то это не будет новостью, но особой инфы по данной теме в инете не нашел.

Кому интересно — прошу под кат.

Предисловие


Так уж случилось, что мне надоели лишние провода.

Немного подумав я вспомнил что на палатах Nucleo и Discovery — ST-Link совмещает в себе SWD и VCP (Virtual Com Port).

Первое что пришло в голову — купить самую дешевую из подобных плат, попытаться сдампить прошивку в обход защиты и залить в программатор из китая, либо же развести новую плату.
Однако мне подсказали ссылку на GitHub с уже вытянутым загрузчиком, в итоге получилось то что получилось.

Приступаем к работе


Модификацию можно произвести только на версии софта под Windows, кроссплатформенная версия софта отказывается обновлять девайс!

Есть несколько вариантов модификации, и часть из них нельзя сделать если чип не подходящий (не хватит памяти).

Например, модификацию STM32+MSD+VCP можно сделать только если чип STM32F1xxCBxx, однако у нее есть аналог STM32+Audio, который даст STM32+VCP (в принципе что нам и требуется).

Понадобится:

— Паяльник;
— Мультиметр с прозвонкой;
— ПК с ОС Windows (может получится через Wine, не пробовал);
— Архив с нужным софтом и бутлоадером (PASS: QWK2tn+fM.EdjX6z).
— Китайский клон ST-Link V2;
— USB-UART адаптер либо второй ST-Link.

Вскрываем…


Платы и чипы во всех разные


Прошивка


Есть два пути — USB-UART (немного сложнее) либо второй ST-Link.

USB-UART
jzqmhq36soe4ejn8uakxgle_otg.png

1) Прозвонкой находим резистор который подключен к BOOT0.
Делаем перемычку от стороны этого резистора которая подключена к BOOT0 к 3.3v.

PA9(TX) может быть подключен к светодиоду или резистору рядом с ним, потому прозваниваем.

Подпаиваем UART на PA9(TX) и PA10(RX).

Я делал это так:

jmrfcro5veg9cvmfv5xo5lv5kb4.jpeg

Так же подпаиваем питание.

Прошиваем загрузчик Protected-2–1-Bootloader.bin с помощью STM32 Flash loader demonstrator.

После прошивки отпаиваем перемычку, PA9 и PA10 (PA10 оставляем если хотим вывести SWO).


ST-Link
jzqmhq36soe4ejn8uakxgle_otg.png
На платах есть по 4 контакта, в некоторых случаях они уже промаркированы, в противном же случае прозваниваем их относительно PA13(SWDIO) и PA14(SWCLK), подпаиваемся вторым ST-Link.

fknhqltfmmh5bugrivgwt6b7nvs.jpeg

Так же подпаиваем питание.

Устанавливаем STM32 ST-LINK Utility V4.3 из архива, снимаем защиту от записи и прошиваем загрузчик Protected-2–1-Bootloader.bin.

Для снятия защиты в программе STM32 ST-LINK Utility жмем Target > Option Bytes, переключаем Read Out Protection в Disabled и жмем Apply.


Обновление до ST-Link V2.1


После прошивки подключаем прошитый ST-Link (уже почти V2.1) к ПК.

В программе STM32 ST-LINK Utility V4.3 жмем ST-LINK > Firmware update.

Жмем Device Connect — получаем список возможных модификаций:

jh5kh5vj7gp3nb6opqjuwgbvz8m.png

Выбираем нужную вам модификацию, в моем случае STM32+MSD+VCP, жмем Yes >>>>.

Ждем пока завершится обновление…

rx8o_kz2hkdsefcms_dv3l0wmvw.jpeg

Профит!

Завершающая часть


Так как SWIM и RST после такой модификации не работают — отрезаю их.

Так же отрезаю дублирующие 5V и 3.3V.

Получается 4 свободных пина.

На них подпаиваюсь проводками к чипу:

PA10 → SWO
PB0 → NRST
PA3 → RX
PA2 → TX

Вывожу все на основной разъем, на оставшиеся свободные пины.

Получилась такая распиновка:

ayof0yidnulvszuslmh_cedle9s.png

Мой девайс после модификации
w5uivds6cw1i-kmzkk7zmaks4i4.jpeg

zithsegdh34lfpfkdzppu_dx1fk.jpeg

Накарябал скальпелем маркировку на корпусе:

_wxeyphddojngarajqqyuqswphy.jpeg


Не забываем отмыть плату после пайки!

В итоге, в ПК девайс определяется так:

onpnu4abfhsqhuwbh20imhtff1a.png

gp61m9ajw7fngz9fvf5ojyckuzg.png

Я без понятия чему равен объем виртуальной флешки (в данном случае к ST-Link V2.1 был подключен F103C8).

Если на нее закинуть файл прошивки — программатор прошьет чип без программ.

Проверяем VCP:

dxbkdanxfbl4hrkch4fqqakagta.png

Спасибо за внимание!

С вопросами обращайтесь в комментарии, чем смогу — помогу.

© Habrahabr.ru