STM32 прошиваем..

  • Автор темы Автор темы baloo
  • Дата начала Дата начала

baloo

Distor-Dreamer
19 Июн 2011
9.418
6.084
113
Ekaterinburg
Влез в DIY модули, часть завел на AVR ISP mk2.
Сейчас подзастрял с модулем Antumbra Knit (Mutable Plaits)

может кто то из вас занимался прошивкой с ST-Link v2 ранее?
программатор ST-Link V2 Mini
https://www.waveshare.com/st-link-v2-mini-stm32.htm

Под маком настроил Mutable Developer Environmet, скомпилил
make -f plaits/bootloader/makefile hex
make -f plaits/makefile
тут порядок, файлы генерируются.

Проблема в самой заливке.
Из терминала (командной строки), делаю тест в рамках макос - девайс ПИД и ВИД читаются нормально. Из среды мютэйблс (что есть линукс в виртуалке) задаю команду lsusb - тоже девайс находится под средой vagrant. То есть с программатором проблем нет.

На плате модуля 4 пиновый разъем RESET, SWDIO, SWCLK,GND.
Соответствующие порты цепляю от ST-Link V2 mini. У программатора есть порт VCC с джампером на 5 и 3.3В.... по паспорту выдает этот юсб-мини программатор 1.6-3.6в диапазон.
Но подключаю я плату модуля через эти 4 кабеля, подавая питание с шины питания евроящика шлейфом одновременно.

Насколько я понимаю, и читал когда то если память не врет, MI модули шьются на 3.3В...

И тут проблема:

пробую заливку
make -f plaits/makefile upload

vagrant@vagrant-ubuntu-trusty-64:/vagrant/eurorack-modules$ make -f plaits/makefile uploadstmlib/makefile.inc:503: warning: overriding commands for target `upload_combo_jtag_erase_first'
stmlib/makefile.inc:487: warning: ignoring old commands for target `upload_combo_jtag_erase_first'
openocd -s /opt/local/share/openocd/scripts -f interface/stlink-v2.cfg -f target/stm32f3x.cfg -c "init" -c "halt" -c "sleep 200" \
-c "flash erase_address 0x08000000 0x20000" \
-c "reset halt" \
-c "flash write_image erase build/plaits/plaits_bootloader_combo.bin 0x08000000" \
-c "verify_image build/plaits/plaits_bootloader_combo.bin 0x08000000" \
-c "sleep 200" -c "reset run" -c "shutdown"
Open On-Chip Debugger 0.9.0 (2019-05-26-18:16)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
none separate
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v33 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.248936
Error: init mode failed (unable to connect to the target)
in procedure 'init'
in procedure 'ocd_bouncer'

make: *** [upload_combo_jtag_erase_first] Error 1

очевидно нехватка питания по какой то причине... оттуда видимо и проблема с частотой при загрузке.
Внятных ответов я не нашел в редких темах на западных форумах с схожей ситуацией.
Западные товарищи в основном шьют ка FTDI, с помощью FTRI Friend. Но среда ориентирована на встроеную работу ST-Link V2.

В чем кроется недостаток питания я не понимаю. Без этого дальше никак.
Логика дает понять что 4 кабеля по инструкиции на модуль RESET, SWDIO, SWCLK,GND, обходят вопрос питания VCC (3.3V). Потому подсовываю питание с еврорек ящика на модуль, читал что так делают с МИ модулями на каких то форумах между строк.
Но есть порт VCC 3.3V у ST-Link v2, и вопрос если отбросить подключение шины питания, а прибавить все таки питание от самого ST-Link.. не нашел как реализовать это... с платой модуля...
Куда сувать провод на 3.3В?
Искать точку входа на плате? Или вообще ногу микропроцессора чисто питать?
Ступор.
Отписался в теме на маффвиглере и еще в нескольких местах, тишина.

Может кто то здесь занимался подобным и владеет минимально информацией по STM32 прошивке через ST-Link?

Сам программатор работает, обновил в ST Link Utility до актуальной версии его. Под линксом рапознается в ВМ среде МИ.
Все основные контакты процессора и прочих элементов я уже раза 3 пропаивал по новой и смотрел чтоб не было проблем с залипами ножек. Исключено практически.
 
Последнее редактирование:
Раскирпичивал себе кейфрэймс. Проблем вроде не было но... Юзал винду спецом для этого.
 
понятно)
пришел к тому, что проблему с волтажом пишет в тч если даже модуль не подключен ни по внешнему питанию ни даже к самому st-link
перебрал уже всю плату. проблем не вижу.
ощущение что нужен нормальный ст-линк.
смена портов никак не влияет. ноут на прямую, через хаю6 через док.. нифига) мало вольтажа, на плате модуля стабильные 3.3
видимо надо пробовать действительно через вин и другой стлинк
 
@baloo, я юзал какой-то алишный. Купил сразу два, ибо по 150р, на всякий случай , если вдруг брак. Оба пашут.
Я попробую найти описание процедуры прошивки.
 

Многократно прошивал разные STM 32 чипы через SWD с помошью ST link utility и из различных IDE: Keil, CooCox, Atollic... Например, вот этот проект весь на STM 32: https://rmmedia.ru/threads/117290/
Всегда прошивал без проблем. Обычно достаточно трех контактов: SWDIO, SWCLK, GND
 
Напрямую hex в ST utility? У меня ругается на неправильный путь цели и просит выставить настройки. Перепробовал все доступные варианты в настройках все равно отсылает сделать настройки. Какой вариант не выберу пишет выбрать противоположный.. слышал что у людей не получалось hex заливать в утилите напрямую.
Обновление ставится..
поставил даже приложение студия там какая то, то же самое, получается только стлинк обновлять вводить и выводить перетыкание порта в и из режима DFU
 
Я попробую найти описание процедуры прошивки
Сейчас конкретно проблема с прошивкой Mutable Instruments Plaits клона. Есть и свой HEX модуля от клона, но можно заливать и оригинальные ОС plaits.
Вот как залить тупо имеющийся HEX через стлинк по swd я не понял (порт там ток на плате swd).
А для заливки мьютейблс модулей - создана ими же muatble Environment - виртуальная машина линукса с настройками и билиотеками модулей мютейбл. По описанию там все просто, через командную строку ждем скачивания, установку, даем команду скомилить и залисть после. На вопросы Мютейбл всех диащиков вентилирует, игнорирует.. на форумах у людей с вольтажом редкие проблемы...
Ну вот сейчас я знаю что при прошивке и дает вольтаж 3.24 - это чисто вольтаж самого ст-линк. Под виндой в СТ-утилите и СТ студии, так и пишет- вольтаж стлинка 3.24... там в скрипте вирталки ошибка - неопнятно для чего дает эту инфу по вольтажу... как уже говорил - то же самое пишет если модуль даже отключить, то есть данные по самому стлинку... и вот думаю - проблема может в нем самом....
в модуле все ок, на маффвиглере обсуждал. по нолям..
Четкое ощущение что либо стлинк корявый (хоть и шьется) либо что то с модулем не то, но почекал уже все дорожки попрозванивал..
Автор модуля клона - молчит о том как прошивать егоный HEX вне Mutable Environment..
Ну ведь шью HEX без проблем AVR с иным программатром в других модулях.. а тут - все поголовно кричат - с этим Mutable Environmet вообще все легко работает. Вилы
 
@baloo, я бы порекомендовал найти в ВК Дамира Садыкова или Константина Слободюка и поинтересоваться у них. Оба собирают отличные клоны на продажу.
 
  • Like
Реакции: baloo
добавлю полезного в копилку прошивки модулей Mutable Instruments, и само собой их клонов.

Для работы понадобится среда
mutable-dev-environment
https://github.com/pichenettes/mutable-dev-environment#customization
устанавливается в любой ОС, через терминал или командную строку. согласно инструкциям..

Так получается, что модулей у Mutable - уже куча. И все они прошиваются разными способами подключения:
1. генерация WAV файла для посыла в аудио порт модуля прошивки. Работает только для модулей с уже установленной прошивкой ранее, то есть вариант не подойдет для установки прошивки в чистый DIY модуль.
2. С помощью программаторов... Все модули имеет как правило один из типов (или сразу пару из них) подключения
А. AVR ISP MKII от Olimex (ол. (я для этого использую копеечный 100р юсб стик - Avr UsbAsp). Для данного стика предусмотрен выход 10пин (2х5пин). Для модулей же Mutables, предусматривается 6пин (2x3 pin). Для этого можно поискать переходник недорогой, а можно тупо запаять проводами по месту, схему пинав с 10 на 6 легко нагуглить, вот что получается

IMG_5359.JPG IMG_5358.JPG

После чего берем HEX файлы, и заливаем используя (в моем случае на macOS) ПО - AVRFuses (AVRDude). Автодетектим чип, указываем фузы во вкладке и вперед прошиваем нужный файл в модуль.

B. JTAG.. на западных форумах часто можно встретить FTDI Friend модули из Adafruits. Модули для Arduino. JTAG представляет собой миниатюрный порт с шагом 1.27. Его можно часто встретить в модулях Mutables, его предпочитает автор модулей. Использует он для этого Olimex программатор с переходником на JTAG. Среда Mutable Environment, настроена как на работу Olimex модулей с переходниками, так и ST-Link V2. Через сам JTAG на сегодня мне не доводилось прошивать модули, потому что к примеру клон ELEMENTS, имеет варианты прошивки - на плате модуля есть JTAG порт, есть и Serial порт. Я предпочитаю последний. Поэтому порт JTAG я пока что описывать не стану (позже когда получу опыт).... А сейчас сразу к тому как я прошивал Serial порт с помощью FTDI минуя JTAG.

C. Serial - выглядит на плате модулей как линия на 6 пинов. Часть из них нам нужна, те что отмечены RESET, RX, TX.
Берем FTDI Friend (или любой аналог). Я заказал крайне доступный аналог USB->Serial адаптер на taydaelectronics, ценой 2 бакса. Тут я часто беру многие компоненты для DIY проектов. Очень дешевая и очень быстрая доставка недорогих компонентов.
https://www.taydaelectronics.com/bte13-007-cp2102-serial-converter-usb-2-0-to-ttl-uart-ftdi.html
Комплектным кабелем подключаем этот конвертер к нашему модулю... Все в целом легко. Но может оказаться с мелкими камнями.
Если у вас FTDI Friend то заработать все должно сходу. Если пойдете моей дорогой, нужно будет кое что учесть, а точнее установку подходящего не-дефолтного драйвера..

У вас должна быть установлена среда Mutable Environment. В ней при установке по инструкции появляется папка с модулями. Согласно инструкции, командой из строки/терминала устанавливается автоматом линукс среда преднастроенная Mutable. Все на автоматике. Согласно инструкции выполняем билды хексов нужного модуля. С этим у вас проблем не возникнет.
И вот у вас в папке Eurorack modules, появится папка builds. Хорошо. Начинается интересное - процесс прошивки.

Тут нам понадобиться инструкция Mutables
https://forum.mutable-instruments.n...oad-the-firmware-of-mis-eurorack-modules/4336
Делаем предустановки из терминала (комнадной строки) установив arm-eabi-toolchain. Прописываем
TOOLCHAIN_PATH to /Users/§имяпользователяос§/arm-cs-tools/ в eurorack/stmlib/makefile.inc

Теперь же - используя FTDI Friend (или аналог) делаем настройки
  1. Download and install FTDI driver / в моем случае выбран USB-UART конвертер с тайды Mac_OSX_VCP_Driver.dmg (отличие в том что у меня UART а не FTDI что не суть но нужен свой драйвер). https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
  2. Download Pyserial 68 and unpack the tar.gz
  3. Open Terminal and enter:
    3.1. cd /§pathToPyserialFolder§/
    3.2. sudo python setup.py 8 install
    3.3. Enter: ls /dev/cu.*
  4. Copy the returned value that looks similar to: /dev/cu.usbserial-XXXX. На этом этапе у меня вышло /dev/cu.SLAB_USBtoUART - запоминаем.
  5. Open /eurorack/stmlib/makefile.inc
  6. Paste the copied value to PGM_SERIAL_PORT. У меня вышло:
    PGM_SERIAL_PORT ?= /dev/cu.SLAB_USBtoUART

    Удерживаем RESET. Жмем далее SYSBOOT, удерживаем SYSBOOT отпуская ресет. С зажатым бутом второй рукой запускаем команду
    make -f /§имямодуля§/makefile upload_combo_serial находясь в папке Eurorack modules и заранее подготовив билды модуля. Пойдет процесс, займет время, сериал не самый быстрый способ заливки. Но по мне весьма удобный, менее затратный чем JTAG. Так я прошил ELEMENTS.
Х. Теперь о методе SWD прошивки через порт SWD/JTAG. SWD устройства что предпочитает автор Mutables = olimex-arm-jtag-swd, olimex-arm-usb-ocd-h c переходниками JTAG.... Но так или иначе авторы пришли к тому что стали чаще применять на модулях вместо JTAG именно SWD. Это4-пина. GRND, SWCLOCK, SWDIO, RESET.
У меня как видно по первому посту на данный момент проблемка есть некоторая (скоро надеюсь решить).... Рекомендуется использовать для коннекта модулей с 4-пиновым разъемом следующего оборудования:
- ST-Link V2 (говорят китайские клоны работают по разному лучше брать оригинал так как даже с Mouser клон не пашет тупо), либо проще брать клоны в формате USB (usb st-link v2). У китайцев сейчас полной более новых ST Link V2.1 и это важно, знать версию потому что дефолтном идет версия 2 в конфигах среды Mutables Environment. По дефолту настроено все на версию 2.
-ST-Link V2 / mini (в моем случае, это внутрисхемный программатор ардуины)
- девелоперплата ST-Lnik Board (их множество, нас интересует для 32 бит)

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

Первым делом ставим утилиту ST-Link Utility, обновляем прошивку самого модуля если она не актуальна.
Далее - нужно учитывать нюансы того что за железка по итогу у вас ну руках. С оригиналом СТ-Линк проблем нет, все заведется сходу. С ардуино платами и мини версией - нужно смотреть нюансы как они распознаются. Тут проблем нет. Нужно правильно прописать в конфиге makefile.inc просто сам программатор.
Далее дело за Mutable Environment, делаем то для чего она и создавалась.. Она уже у нас стоит.
На страницах Mutables по модулю модно найти информацию по заливке прошивки
https://mutable-instruments.net/modules/plaits/open_source/
Находясь в запущенном Vagrant, запускаем сами билды разово генерируя их:
make -f plaits/bootloader/makefile hex
make -f plaits/makefile


Момент истины
make -f plaits/makefile upload

Тут или все пойдет удачно, или получите ошибку.
Стоит в случае проблем проверить, отображает ли среда Vagrant ваш модуль ST-Link или Olimex.
Вводим команду lsusb который отобразит список юсб-устройств в вашей виртуальнйо машине. Если вы увидите свой программатор это хорошо. Если нет - нужно искать причину.
В моем случае на сегодня с ST-Link V2 Mini (ардуино) от Waveshare, распознание проходит, но заливка не идет.. И тут три варианта - либо проблема в собранном неверно модуле (я уже все прозвонил по элементами дорожкам для проверки), либо проблема в настройках или же самом программаторе, либо пока не известный мне вариант, который я изучаю. И при случае поделюсь о результатах здесь. Желание же сейчас поменять программатор на иной. Карман говорит бери китайский юсб, голова же думает взять оригинал ST-Link V2 или же девборду ST-Link на 32бита. В последних вариантах я получу возможность шить с удобством JTAG..
 
Последнее редактирование:
  • Like
Реакции: temaniak
Вобщем заимел давно уже оригинал ST-Link V2. Модули c STM32 шью через St-link Utility беру готовые hex и заливаю без проблем.
Моя проблема с клоном Plaits заключалась в поджаренном элементе, который мешал линии 3V3_A выдавать 3.3в из-за чего прошивка не могла начаться)
 

Сейчас просматривают