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

ejsanyo

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

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

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. Теперь всё должно заработать.
 
Сверху