vak: (Знайка)
[personal profile] vak
Для отладки современных микропроцессоров используется интерфейс JTAG. Реже SPI, разница небольшая. Раньше можно было через тривиальную схему подцепить JTAG на параллельный порт LPT, в крайнем случае на COM. Но нету больше LPT, и COM-порты тоже на глазах исчезают из обихода.

Оказывается, выход есть. Простейший самодельный адаптер USB-JTAG делается на базе микросхемы FTDI FT232R. Для простоты можно взять готовую инструментальную мини-плату, например FT232RL Breakout (ценой $15) или MMUSB232RL (1640 рублей). Особенность этой микросхемы в том, что она имеет специальный режим работы "синхронный bitbang", позволяющий с заданной частотой выдавать нужные сигналы и одновременно считывать входы. Подробности можно почитать в описании "Bit Bang Modes for the FT232R and FT245R".

Объём работы минимальный: к мини-плате припаиваем шлейф из семи проводов с разъёмом на конце. Пример схемы для процессора Элвис Мультикор:



Для прочих архитектур, например ARM или Atmel AVR, понадобится другая распайка разъёма JTAG.

Правки для отладчика OpenOCD можно скачать здесь. Например, отладка ARM7 посредством GDB идёт на ура. Используя OpenOCD как прокси.

А все ли так просто

Date: 2010-04-22 18:21 (UTC)
From: [identity profile] belpudel.livejournal.com
У меня есть опыт, вернее попытка, приспособить USB 1 к отладке процессора TI по JTAG. Для этого использовался принтерный модуль отладки и его софт, который работал достаточно быстро и у меня был весь протокол с байтовым обменом. Нельзя сказать, что не получилось, но работа шла так медлено, что от идеи пришлось отказаться. Тормозит обмен по USB. Если выполнять обмен по байтно, то ясно будет ерунда, потому что на каждое обращение потребуется от 1 до 2 мсек. Так устроен кадр USB и его драйвер (с FireWire было бы быстрее). Стал применять уплотнение пересылок, анализируя операции - JTAG ведь вещь известная. Раз в десять стало быстрее. Затем стал хитрить с типпами пересылок, сделал комбинации Bulk, Interrupt и Command пакетов - еще быстрее. Но все равно медленно. Если Sot отладчика не рассчитан на пакетную передачу, то хорошую скорость получить крайне трудно, а может быть и невозможно. Но идея хорошая, мне нравится. Собственные устройства с JTAG тапк цеплять можно. Или, например, для Bondary Scan.

Уточню

Date: 2010-04-22 18:58 (UTC)
From: [identity profile] belpudel.livejournal.com
Думаю, что с Flash, хоть и медленно, но устойчиво и можно подождать. А вот отладка содержит множественные обращения, особенно считывания по JTAG. Считывание всегда длинее записи - так и здесь. Одно дело выкатить 64 байта на устройство, другое сделать это в нужной последовательности. Последовательности рвут пересылку. Замедление будет, если конечно тот, кто делал оболочку, не предусмотрел двустороннюю потоковост пакетов. Сергей, когда получится хорошо, покажешь?