"Micron IDE" и сторонние JTAG-адаптеры

ejsanyo

Active member
Предлагаю поднять такую тему по обмену практическим опытом, кто чем и как шьётся.
Адаптеры "сторонние" в том плане, что не интегрированы в какую-нибудь готовую отладочную плату, с теми-то всё и так (вроде бы?) понятно и должно работать.
Начну, конечно же, с себя.
Как оказалось, для этого можно вполне приспособить отладчик от "как бы кетайских конкурентов" под названием "Sipeed RV-Debugger Lite".

На Aliexpress-е этих штук продаётся навалом и за дёшево, гораздо дешевле чем платы на FT2232HL. За эти деньги вы получаете базовую функцию JTAG-интерфейса плюс базовый USB-UART, что удобно. Шьёт чипы небыстро, но вроде достаточно стабильно.
Подсказку увидел на Хабре в теме про, в общем-то, PlatformIO. Но мы-то знаем, что там, что в Эклипсе, под капотом прячется один и тот же OpenOCD, так что принципиальной разницы нет.
А значит, открываем в проекте файл scripts/m-link.cfg и правим его как-то так:
C-like:
adapter driver ftdi

# для FT2232HL
# ftdi vid_pid 0x0403 0x6014

# для Sipeed RV Debugger Lite
ftdi_vid_pid 0x0403 0x6010

transport select jtag

# раскладка для FT2232HL
# ftdi layout_init 0x00f8 0x00fb
# ftdi layout_signal nSRST -noe 0x0040
# ftdi layout_signal nTRST -data 0x0010

# раскладка для Sipeed RV Debugger Lite
ftdi_layout_init 0x0008 0x001b
ftdi_layout_signal nSRST -oe 0x0020 -data 0x0020
Выхода TRST у этого адаптера нет, но всё работает и без него (или не работает, но уже по каким-то другим причинам).
 
Последнее редактирование:

ejsanyo

Active member
Как ещё один вариант, проверил в работе плату на основе чипа FT4232HL. Вот такую:

По сравнению с FT2232HL это практически то же самое...но в два раза больше. Т.е. на FT2232HL два канала USB-UART, один из которых может превратиться в JTAG, а на FT4232HL мы имеем уже целых четыре канала USB-UART, два из которых (A и B) могут превратиться в JTAG. В каких-то случаях это может быть удобно, например, когда хочется подключить больше UART-ов. Но нужно иметь ввиду, что и цена у такой платы минимум раза в два выше.:sneaky:
Отличия в настройках также минимальны. У FT4232HL другой PID, а также в его случае нужно указать, с каким из каналов JTAG мы будем работать (0 или 1). Так что дописываем наш scripts/m-link.cfg
C-like:
adapter driver ftdi

# для FT2232HL
# ftdi vid_pid 0x0403 0x6014

# для FT4232HL
ftdi vid_pid 0x0403 0x6011
ftdi channel 0

# для Sipeed RV Debugger Lite
# ftdi_vid_pid 0x0403 0x6010

transport select jtag

# раскладка для FT2232HL и FT4232HL
ftdi layout_init 0x00f8 0x00fb
ftdi layout_signal nSRST -noe 0x0040
ftdi layout_signal nTRST -data 0x0010

# раскладка для Sipeed RV Debugger Lite
# ftdi_layout_init 0x0008 0x001b
# ftdi_layout_signal nSRST -oe 0x0020 -data 0x0020
И подключаем контроллер к соответствующим пинам канала A или B на плате (их назначение см. в даташите от FTDI)
 

ejsanyo

Active member
Вот, подошло ещё одно изделие от "как бы кетайских конкурентов", под названием "Sipeed RV-Debugger Plus".

В целом, для пользователя очень похоже на изделие в первом посте с приставкой "Lite": им так же завален Aliexpress, продаётся немного дороже Lite-версии. На борту JTAG-интерфейс плюс USB-UART, в котором зачем-то теперь есть сигналы DTR и RTS.
Настройки файла scripts/m-link.cfg, драйвера и манипуляции ими через zadig подходят абсолютно все те же, что в первом посте про Lite, .т.е. его прошивка всё так же имитирует интерфейс многострадального FT2232. Да, похоже китайским проггерам как-то по барабану на авторские права FTDI. :sneaky:
USB здесь по прежнему первой версии, за счёт чего вероятно шьёт память оно медленнее, чем настоящий FT2232, но всё же быстрее, чем Lite-версия. Надо полагать, за счёт более быстрого контроллера на борту, который тут почему-то лютая кетайская экзотика от Bouffalo Lab. И вообще, у него на борту на самом деле есть Bluetooth, но он не используется, а антеннка не запаяна.
Вот, послушайте-ка мою тру-стори, связанную с этим дебаггером. Где-то в 2022 году купил я его, по случаю желания поработать с чипами GD32VF103 от ГигаДевайса. Поначалу не разобрался, как подружить его с PlatformIO, и решил, что виной всему кривая или устаревшая прошивка. Тем более, вроде код для неё лежит в открытом доступе...правда вот что-то готового файла нет. который можно было бы просто так взять и зашить. Ну я, снова не разобравшись, взял, ещё немного погуглил и нашёл файл под названием "usb2dualuart_bl702.bin". И зашил его...только вот оказалось, что вообще не то что нужно, а демо-пример для какой-то макетки от Sipeed (подозреваю, что на её основе и сделана эта плата). В общем, оно превращает её в банальный сдвоенный переходник USB-UART, и никакого JTAG-а! Когда до меня это дошло, облом был сказочный, поскольку стоковую прошивку из чипа я не вычитал. :eek: Дальше было много-много гугления и попыток скомпилять из исходников то, что должно называться "usb2uartjtag_bl702.bin", но всё без толку. С кетайскими IoT-чипами не пошутишь, то ли, может, просто руки были кривые.
Но вот, на Микроне пришло время снова подключаться через JTAG, что напомнило мне и про эту окирпиченную плату. Снова качаю исходники, снова пытаюсь скомпилять их, снова фиаско. Похоже, автор с тех пор забросил данный проект. Снова гуглим готовый бинарник, снова бесполезные ссылки и блуждание по китайским форумам. Но тут вдруг вспомнилось, как cryptozoy напомнил мне про такое явление на гитхабах, под названием "форки". И их для данного проекта оказалось немало, в том числе от некто yuk1i. Где меня поджидал он! Готовый бинарник. Выложенный 13 марта. Ну почему нельзя было сразу сделать так?! Я ДЖВА ГОДА ЖДАЛ ЭТОТ БИНАРНИК!!! Серьёзно, хотел уже выкинуть эту поделку несуразную за ненадобностью, но что-то меня всё останавливало.

И вот, когда вы всё это дочитали, пришло время возвращать правильную прошивку в ваш "Sipeed RV-Debugger Plus":
  • Скачайте мою коллекцию всякого разного для кетайского чипа.
  • Зажав кнопу boot, воткните плату в USB. Да вы и сами это знаете, раз уж убили прошивку.
  • Поставятся драва на виртуальный COM-порт. Если они не встанут сами, попробуйте при помощи zadig поставить на плату универсальные под названием "USB Serial (CDC)".
  • Запомните номер получившегося COM-порта и отредактируйте его в файле Flash.bat
  • Запустите Flash.bat, дождитесь пока прошивка запишется.
  • Перетыкните плату в USB. Теперь всё должно заработать.
 
Использую ELJTAG - программатор от Elron*.

Работает на чипе FT2232HL, шьёт и позволяет отлаживать RISC-V и ARM камни, неплохо показал себя при работе с ESP32.

Код:
#
# FT2232HL for openOCD Device
#

interface ftdi
# ftdi_device_desc "Dual RS232-HS (Interface 1)"
ftdi vid_pid 0x0403 0x6010

ftdi channel 1

transport select jtag

ftdi layout_init 0x00f8 0x00fb
ftdi layout_signal nSRST -noe 0x0040
ftdi layout_signal nTRST -data 0x0010
Обратите внимание, что в отличии от аналогов интерфейс JTAG доступен на 1, а не на 0 канале. На 0 канале UART (порт-конструктор-сделай-сам). Важно при установке драйвера с помощью zadig.

* данный пост не является рекламой!
 

mjd

New member
А такой адаптер WCH-LinkE-R0 1V3 можно использовать для прошивки амура ?



Китайские Risc-V микроконтроллеры он прошивает. Если можно то какие настройки для m-link.cfg ?
 
Последнее редактирование:

ejsanyo

Active member
А такой адаптер WCH-LinkE-R0 1V3 можно использовать для прошивки амура ?
Эта штука прошивает либо ARM-ы через SWD, либо если на RISC-V, то только изделия от WCH (под которыми мы подразумеваем их линейку чипов CH32V)! И никакие другие, тем более российские!
Эти кетайцы, когда стали делать свою линейку RISC-V, решили зачем-то изобрести свой велосипед и сделали некий SWD-подобный интерфейс для прошивки и отладки, совместимый только с самим собой. Вероятно, чтобы количество ног, на него отводимых, было немного меньше.
В Микроне так выёживаться не стали, и взяли стандартный JTAG. И спасибо им хотя бы на этом!
 

mjd

New member
Спасибо за быстрый ответ! Я спросил про этот программатор потому что он работает с openocd и предположил что им тоже можно будет прошиваться...
 

mscs

Member
А такой адаптер WCH-LinkE-R0 1V3 можно использовать для прошивки амура ?
Нужно пробовать. Этот адаптер имеет специальную версию встроенного ПО, которая обеспечивает работу в режиме JTAG (без сигнала TRST). Со стороны openocd этот режим поддерживается драйвером ch347. В руководстве пользователя (файл WCH-LinkUserManual.pdf) подробно описана процедура перевода WCH-LinkE в указанный режим (п. 7, стр. 21).
 

mjd

New member
Обязательно попробую эту специальную версию встроенного ПО, но сначала нужно понять какие настройки сделать в m-link.cfg ?
 

ejsanyo

Active member
Обязательно попробую эту специальную версию встроенного ПО, но сначала нужно понять какие настройки сделать в m-link.cfg ?
Я так понимаю, этот скрипт просто передаёт конфиг в OpenOCD. Так что и манул следует читать именно на него.
Но вот что-то я там про WCH-отладчик упоминаний не вижу. Может, нужна какая-то особо пропатченная версия OpenOCD? Какая именно, я пока как-то не разбирался, просто брал MounRiver Studio и в ней всё делал. Может быть, можно просто выдрать OpenOCD из неё и пересадить в Mikron IDE? 😗
PS: Да, как бы намекает, openocd-wch.
 
Последнее редактирование:

mscs

Member
Обязательно попробую эту специальную версию встроенного ПО, но сначала нужно понять какие настройки сделать в m-link.cfg ?
Насколько я понимаю, такие:
Код:
# Specify WCH-LinkE high-speed JTAG debugger
adapter driver ch347
ch347 vid_pid 0x1a86 0x55dd

# Set TCK clock frequency
adapter speed 2000
 
Сверху