Black Magic Probe на stm32f103c8Подписка на Комментарии к "Black Magic Probe на stm32f103c8"

Аватар zenon

Года два назад узнал что есть вот такое чудо.
Сам проект начался на кикстартере.
В итоге получился "правильный" arm (open-source) программатор с интерфейсом JTAG или SWD.
К тому же у него есть полноценная отладка, и бонусом usb-ttl на борту.
О том как превратить stm32f103c8 в BMP (Black Magic Probe) нашлась тема на форуме stm32duino.

Пока собирался с мыслями (а собирался я долго ... очень) и инструкции появились тут и тут, так что заметка эта можно сказать для себя.

Прошивку можно собрать самим, но можно и скачать с гитхаба.
Для создания программатора нужны модули с stm32f103c8. На али называются stm32 development board, цена 1.8-2$, которые уже прозвали синей таблеткой в наличии у меня были Blue Pill и Black Pill.
Для заливки прошивки через USB на плату нужен FTDI 1232.

Подключение:

FTDI      STM32
RXD  ---  A09
TXD  ---  A10
VCC  ---  VCC
GND  ---  GND

Подключаем, смотрим выхлоп:

$ lsusb | grep FT232
Bus 007 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

FTDI на месте, качаем и собираем прошивку:

$ mkdir BMP && cd BMP && git clone https://github.com/blacksphere/blackmagic.git && cd blackmagic && make
$ cd blackmagic/src && make clean && make PROBE_HOST=stlink

Скачиваем загрузчик, и копируем прошивку:

$ cd $HOME/BMP
$ git clone https://github.com/jsnyder/stm32loader.git
$ cp blackmagic/src/blackmagic.bin stm32loader
$ cp blackmagic/src/blackmagic_dfu.bin stm32loader

Смотрим USB устройства:

$ ls /dev/ttyUSB*
/dev/ttyUSB0

На плате STM32 переводим джампер boot0 в положение 1 (boot1 остаётся в 0).
Записываем DFU прошивку:

$ cd stm32loader
python stm32loader.py -p /dev/ttyUSB0  -e -w -v blackmagic_dfu.bin
Bootloader version 22
Chip id: 0x410 (STM32 Medium-density)
Write 256 bytes at 0x8000000
Write 256 bytes at 0x8000100
...
...
...
Read 256 bytes at 0x8001B00
Read 256 bytes at 0x8001C00
Verification OK

Отключаем FTDI (больше он не нужен) от платы STM32, и подключаем наш будущий программатор usb шнуром к компьютеру.
Джампер boot0 в положение 0.
Смотрим подключение:

$ lsusb | grep Moko
Bus 007 Device 004: ID 1d50:6017 OpenMoko, Inc.

Прошиваем через DFU режим:

$ sudo dfu-util -d 1d50:6018,:6017 -s 0x08002000:leave -D blackmagic.bin
dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 1d50:6017
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 1024
DfuSe interface name: "Internal Flash   "
Downloading to address = 0x08002000, size = 62564
Download        [=========================] 100%        62564 bytes
Download done.
File downloaded successfully
Transitioning to dfuMANIFEST state

Всё, программатор готов.
Как пользоваться, подключение:

BMP      STM32
B14  --- SWDIO
A05  --- SWCLK
VCC  --- VCC
GND  --- GND

Последовательный порт :

BMP
PA3  ---  RXD
PA2  ---  TXD

ps. Еще один момент, если вы захотите прошить этим программатором плату stm32 с залитым на него загрузчиком Maple Mini, то ничего не получится, сначала надо очистить микроконтроллер любым доступным способом, после этого можно шить через BMP.

bmp_stm32_bluepill_ftdi_thmb4.jpg

bmp_stm32_bluepill_thmb4.jpg

Добавить комментарий