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-21 02:55 (UTC)
From: [identity profile] dmzlj.livejournal.com
Интересно, а для MSP430 будет работать? Говорят, что TI скрывает часть протокола, которая относится к отладке.

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

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 байта на устройство, другое сделать это в нужной последовательности. Последовательности рвут пересылку. Замедление будет, если конечно тот, кто делал оболочку, не предусмотрел двустороннюю потоковост пакетов. Сергей, когда получится хорошо, покажешь?

Date: 2010-04-23 15:29 (UTC)
From: [identity profile] skolk.livejournal.com
Во-первых, исчезают порты только на ноутбуках. Материнку с портами всегда можно найти, и там первым исчезает разъем COM-порта. Можно купить порт отдельно, хоть PCIe, хоть ноутбучный. Можно и машину с ISA собрать, если надо.

Во-вторых, можно использовать и 10-летний ноутбук. Отладчик не настолько ресурсоемкий. При отсутствии старого ноутбука можно купить внутреннюю карточку для нового.

В-третьих, SPI должен быть аппаратным. Как я разочаровался ;(
К сожалению, поддержка неоктетной длины редка и необходима :(
(т.е. - внизу таки будет BitBang, но без USB)
Так что наверно лучше зашить дома Atmel под интеллектуальный low-speed переходник, и дальше использовать его.

И вопрос: есть ли книжка по написанию BitBang-драйверов, особенно с использованием аппаратного SerDes в виде SPI/8251/8440/etc (USART в режиме BSC)? И о том, как строить табличные автоматы для разных этапов декодирования.

Date: 2010-04-23 15:32 (UTC)
From: [identity profile] skolk.livejournal.com
Был еще такой подходец - ИР-ки/АП-шки на PATA вешать, это ведь урезанная ISA...

FT2232

Date: 2010-04-24 13:46 (UTC)
From: [identity profile] skolk.livejournal.com
Есть же специальный чип для USB-JTAG, вполне доступный - FT2232. :-)

FT232R

Date: 2010-04-25 20:01 (UTC)
From: [identity profile] skolk.livejournal.com
Как я понимаю, FT232R - это половинка FT2232, из которой к тому же выброшен аппаратный SPI (в котором и все дело).

Книжку спрашиваю не в контексте порта для ПК, а в контексте микроконтроллера, причем когда тактов на обработку почти не хватает.

BitBang подразумевается ассистированным, т.е. целью является работа по произвольному однопроводному протоколу с использованием аппаратного SerDes от SPI либо BSC. По прерыванию мы получаем байт из 8 однобитных отсчетов состояния линии.
Для разбора надо построить следующие табличные автоматы:
1. DPLL для 3x или 5x oversampling.
(если тактовой частоты не хватает, используется SPI slave и аппаратный PLL)
2. Распознаватель синхропоследовательности.
3. Декодер линейного кода или обработка bit-stuffing, в зависимости от протокола.
4. Разделение границ байтов.
5. Подсчет контрольной суммы.
6. Определение конца кадра.

В качестве примера подошел бы AVR USB, но они SPI не используют,
и соответственно автоматы там, насколько я помню, не табличные. :-(
Из этой области были, например, 10Base на 85230 (но там почти все делается аппаратно режимом BSC), или программный HDLC на 8251 в BSC-режиме (старт по синхробайту BSC + внешний PLL или синхронизация от модема).