Универсальный usb программатор

Универсальный USB программатор

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

Основой программатора является микросхема FT2232D. Представляет она собой преобразователь USB в два порта UART. Особенность заключается в том, что «верхний» канал А может работать в режимах JTAG, SPI и I 2 C, что и требуется для программирования микроконтроллеров, различных микросхем памяти и т.п.

Разработка данного USB-программатора ведется на компьютере с использованием библиотек от фирмы FTDI Chip.

Питается устройство от интерфейса USB. При правильной сборке схема не нуждается в настройке. Функционирование устройства зависит от мастерства разработчика ПО. Резисторы R8, R9, R12, R13, R14, R15, R16 являются токоограничивающими при неправильном соединении с устройством, соответственно, выводы программируемого устройства не должны соединяться с другими элементами в схеме, или иметь такие подтяжки, которые при образовании делителей напряжения не искажали бы логические уровни. Микросхема U1 используется для сохранения пользовательских настроек.

Выводы U2 (канал А):
24 — ADBUS0 – выход- в режиме JTAG TCK, в режиме SPI SK;
23 — ADBUS1 – выход- в режиме JTAG TDI, в режиме SPI DO;
22 — ADBUS2 – вход- в режиме JTAG TDO, в режиме SPI DI;
21 — ADBUS3 – выход- в режиме JTAG TMS, в режиме SPI как вспомогательный сигнал(CS);
20 — ADBUS4 – в режиме JTAG входвыход, в режиме SPI вспомогательный выход. Этот вывод используется для подачи сигнала RESET в микроконтроллер;
15 — AСBUS0 – свободно программируемый входвыход во всех режимах (опционно используется для подачи питания в программируемое устройство);
13 — AСBUS1 – свободно программируемый входвыход во всех режимах.

В принципе, эти выводы многофункциональные. Их поведение определяется выбранным режимом при открытии порта.

Канал В используется для отладки программируемого устройства. Для этого нужно только иметь незадействованный порт UART в микроконтроллере. Далее дело техники. В программе микроконтроллера в нужных местах используем функцию форматированного вывода printf().

40 —BDBUS0 – выход- в режиме UART TXD;
39 —BDBUS1 – вход- в режиме UART RXD;
28 — BСBUS2 – выход- в режиме UART LED-индикатор (зажигается при передаче данных через USB);
27 — BСBUS3 – выход- в режиме UART LED-индикатор (зажигается при приеме данных через USB).

Ниже приведена печатная плата программатора

На сегодняшний день данный универсальный программатор поддерживает микроконтроллеры AVR по интерфейсам JTAG и SPI. Причем скорость прошивки Atmega64 по JTAG не более 5-и секунд, по SPI не более 8-ми секунд. Принципиально, прошивать можно любые микроконтроллеры, к которым распространяется спецификация для программатора. В настоящий момент, например, ведется разработка для поддержки микроконтроллеров NEC.

Рабочая форма поделена на две части: слева таблицы для работы с FLASH (сверху) и EEPROM (снизу), сюда можно открывать файлы или загружать прошивки из микроконтроллера, делать верификацию, править содержимое ячеек памяти; справа текстовое поле для отладки, сюда выводятся данные с канала В, также можно там вводить текст, который отправится в порт (функционально это аналог HyperTerminal). Разработка ведется на платформе Visual C# под Windows. Также есть возможность разрабатывать на других языках. Программатор может работать и под Linux.

Используемая литература:
1. А.В. Евстигнеев «Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL», М. Издательский дом «Додэка-ХХI», 2005.
2. Future Technology Devices International Ltd. “FT2232D Dual USB UART/FIFO I.C.” , Datasheet, 2006.
3. Future Technology Devices International Ltd. “Software Application Development D2XX Programmer’s Guide” , Document, 2009.
4. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCJTAG DLL” , Application note AN_110, 2009.
5. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCSPI DLL” , Application note AN_111, 2009.
6. Эндрю Троелсен «С# и платформа .NET» М.,С-П. Питер, 2007.

Скачать исходники ПО и печатную плату в формате P-CAD вы можете ниже

Борисов Алексей (Albor) г.Сызрань, Самарская обл.

Универсальный USB программатор ChipProg-48

Цена программатора Купить
30 916.00 р. В корзину

Универсальный USB программатор ChipProg-48 обеспечивает программирование: микроконтроллеров, FLASH, EPROM, EEPROM, NVRAM.

На сегодня, среда 28 июля 2021 г. — Универсальный программатор ChipProg-48 поддерживает программирование 118 873 микросхем.

Универсальный USB программатор ChipProg-48

Характеристики универсального USB программатора ChipProg-48

  • Общее описание;
  • Особенности программатора;
  • Характеристики аппаратуры;
  • Программное обеспечение;
  • Поддерживаемые корпуса;

Общее описание

  • Универсальный USB программатор обеспечивает программирование микроконтроллеров, FLASH, EPROM, EEPROM, NVRAM, PLD, ПЛИС;
  • Количество программируемых микросхем не имеет аппаратных ограничений;
  • Программирование всех микросхем по спецификациям от производителей;
  • Универсальная 48 DIP колодка с нулевым усилием с возможностью установки микросхем с шириной корпуса 300 mil

600 mil; Подключение к компьютеру через USB 2.0 совместимый порт;

  • Поддержка программирования микросхем в устройстве пользователя (режим ISP). В программаторе реализованы следующие протоколы (режимы) программирования: — JTAG, JTAG chain, SWD, SPI, SCI, I2C, ISP, ISP BSL, ISP HV, SCI, I2C, UART-1 wire, UART-2 wire, и др.;
  • Очень высокая скорость программирования. Программирование 64 Мбитной NOR FLASH — около 50 сек.;
  • Возможность работы нескольких USB программаторов под управлением одного компьютера (мильтипрограмматорный режим);
  • Работа под управлением Windows XP/Vista/7/8/10 (Windows 32/64 бита).
  • Особенности программатора

    ♦ Универсальный программатор ChipProg-48 имеет опцию — «Автоматическое распознавание микросхемы в колодке».
    Если опция активирована, при положительном исходе теста на распознавание микросхемы в колодке, программатор может по выбору пользователя автоматически выполнять:

    1. Заданное действие или последовательность действий (чтение, верификация, программирование, и т.п.);
    2. Скрипт, написанный пользователем.

    ♦ Универсальный программатор ChipProg-48 обеспечивает возможность мультипрограммирования.
    Любое количество программаторов может быть подключено к одному управляющему компьютеру через разные USB порты, либо через USB HUB. USB программаторы, объединенные в мульти программаторный режим, работают асинхронно и абсолютно независимо друг от друга.

    Программатор ChipProg-48 может быть объединен как с подобными ему USB программаторами, так и с любыми другими программаторами из серии ChipProg с USB интерфейсом.

    ♦ Универсальный программатор ChipProg-48 использован как базовый элемент в программаторе — копировщике ChipProg-G4.

    ♦ Универсальный программатор ChipProg-48 содержит встроенный С подобный язык, который обеспечивает доступ ко всем ресурсам программатора, и позволяет создавать пользователю исполняемые скрипты. Скрипт может содержать любую последовательность стандартных действий (чтение, запись, верификация и т.п) и действий с параметрами программирования, данными, файлами, параметрами операционной системы.

    ♦ Пользовательский интерфейс программатора позволяет легко и просто:

    1. Задать необходимую последовательность стандартных действий (программирование, стирание, сравнение и т.д.);
    2. Задать режим сериализации, записи контрольной суммы, сигнатуры;
    3. Задать режим, при котором будет вестись журнал программирования. (Журнал ведется автоматически во внешнем файле);
    4. Создавать, редактировать и работать с проектами.

    Характеристики аппаратуры программатора

    • Аппаратная часть USB программатора построена на связке программируемой матрицы (FPGA) большого объема и 32-разрядного процессора;
    • Аппаратная реализация критических по времени частей алгоритмов программирования на FPGA, что обеспечивает высокую скорость программирования;
    • Реализация логических драйверов на базе FPGA, способных подвести логические сигналы низкого, высокого уровня, внешнего генератора, а также Pullup, Pulldown на любой вывод колодки;
    • 10-ти разрядные цифро-аналоговые преобразователи программирующие аналоговые источники напряжения;
    • Программирование фронта подъема и спада аналогового напряжения;
    • Авто подстройка аналогового напряжения;
    • Возможность подключения аналоговых напряжений питания и программирования на любой вывод микросхемы;
    • Возможность коммутации любого вывода микросхемы с «землей»;
    • Аппаратный контроль каждого вывода программируемой микросхемы на наличие контакта перед программированием;
    • Быстродействующие схемы защиты от перегрузки по току, увеличивающие надежность программатора. Защита неправильно подключенных микросхем;
    • Защита всех выводов колодки от электростатического разряда;
    • Кнопка, запускающая выполнение любой выбранной операции или последовательности операций;
    • Программируемый синтезатор частоты;
    • Самотестирование.
    Читайте также  Еще раз о динамической индикации на led-индикаторах

    Характеристики ПО универсального USB программатора

    • Дружественный, интуитивно понятный, двуязычный интерфейс;
    • Поддержка всех процедур работы с микросхемой: чтение, сравнение, контроль чистоты, запись, стирание, установка защиты, программирование конфигурационных битов, работа с памятью данных и т.п.;
    • Тестирование всех выводов микросхемы на наличие контактов перед программированием;
    • Режим записи серийного номера в память микросхем с автоматическим изменением данного номера;
    • Режим подсчета контрольных сумм с возможностью ее записи в любую область памяти микросхем;
    • Режим записи сигнатуры пользователя в любую область памяти микросхем;
    • Поддержка проекта;
    • Многобуферный интерфейс с возможностью создания неограниченного числа буферов. Буфера разбиты на подслои, имеющие структуру адресного пространства микросхем;
    • Режим автоматического распознавания присутствия микросхемы в колодке с автоматическим запуском выбранных процедур: программирование, чтение, сравнение и т.д.;
    • Возможность работы нескольких USB программаторов под управлением одного компьютера (мульти программаторный режим работы). Количество USB программаторов в этом режиме не ограничено. Работа каждого программатора независима, скорость и функциональные характеристики неизменны;
    • Полноценный двоичный редактор с возможностью ручного редактирования данных, а также функции заполнения, сравнения, копирования, поиска и замены, инвертирования, вычисления контрольной суммы, логических операции OR, AND, XOR;
    • Загрузка и сохранение файлов в двоичном, Standard Extended Intel HEX, Motorla S-record, POF, JEDEC, PRG, Holtek OTP, ASCII HEX, ASCII OCTAL, Angstrem SAV форматах;
    • Встроенный язык сценариев, обеспечивающий доступ ко всем ресурсам программатора. Применение языка значительно облегчает работу с программатором, автоматизируя рутинные операции.

    Поддерживаемые корпуса

    • Поддержка всех микросхем в корпусах DIP в колодке программатора без дополнительных адаптеров;
    • Поддержка микросхем в корпусах до 48 выводов в универсальных адаптерах;
    • Поддержка микросхем в корпусах: SDIP, PLCC, SOIC, SOP, PSOP, TSOP, TSOPII, TSSOP, QFP, TQFP, VQFP, QFN, SON, BGA, CSP с помощью дополнительных адаптеров;
    • Совместимость с адаптерами сторонних производителей

    115088, Москва, БЦ Бизнес-квартал IQ-Park, Угрешская ул, дом 2, стр. 146, офис 403 В
    тел.: 8 (495) 780-9251 (многоканальный)

    USB ПРОГРАММАТОР

    Данный программатор не нуждается в первичном программировании — протравил печатную плату, спаял и пользуйся. Автор данного устройства указан в конце статьи, а здесь приведу небольшую выдержку из руководства, чтоб было понятнее, о чём речь: правильный USB-программатор – вещь, фактически, универсальная. Его можно воткнуть в любой современный компьютер и без проблем перешить нужный микроконтроллер с любым объемом FLASH-памяти на довольно высокой скорости. Но ключевое слово здесь – «правильный», который нормально работает без настройки и танцев с бубном над ним сразу же после установки и монтажа деталей. Который не глючит при переходе от одного ПК к другому или смене ОС. Правильный – это такой, драйвера на который есть для любой современной широко используемой версии ОС, и эти дрова неглючные. Каждый определит еще с десяток критериев правильности для себя лично, но вышеперечисленные – основные, без соблюдения которых нормально работать с микроконтроллером невозможно будет в принципе.

    В настоящее время в Интернете полно различных схем USB-программаторов для AVR. Условно их можно разделить на две большие группы.

    Первая группа включает в себя программаторы, построенные на основе микроконтроллеров (в частности, AVR). Собирал несколько штук программаторов от Prottoss’а (AVR910), себе и своим знакомым, а также несколько штук USBasp. Двое из знакомых, одаренных сиими дывайсами, в восторге. Удачно шьют камни в течение уже нескольких лет. У остальных (в частности – у меня лично) собранные программаторы особой радости не вызвали. Не говорю, что они плохие, просто вот так складывались обстоятельства: на одном компьютере работает, на другом нет. Или, проработав пару часов, оказывались невидимыми для софта, через который шьется камень. И много еще чего. Сразу оговорю – я не разбирался с прошивкой контроллеров, на которых данные программаторы собраны. Правда, перепробовал кучу программ-прошивальщиков, через которые данные программаторы, вроде как без проблем должны шить камни. Однако, результат в виде частых глюков меня не особо удовлетворил. Исключение составила только программа AVRDUDE в комплексе с графической оболочкой SinaProg, но о ней я узнал слишком поздно. Кстати, заметил такую тенденцию: чем древнее железо ПК, тем лучше работают данные программаторы. Ну и самый неприятный момент для тех, кто выбрал второй вариант знакомства с микроконтроллерами AVR – чтобы программатор заработал, нужно чем-то прошить входящий в его состав камень. То есть получается так: чтобы пользоваться программатором нужно сделать/найти программатор, чтобы прошить мозги этого программатора. Вот такой вот замкнутый круг.

    И вторая группа USB-программаторов включает в себя решение на базе специализированной микросхемы FT232Rx. В свое время данная микросхема стала своего рода революцией. Мало того, что она без особых заморочек для разработчика преобразует USB в UART (и, наверное, 95% разработчиков используют ее именно в этих целях). Она еще умеет эмулировать полноценный COM-порт, причем состояние «второстепенных» линий (таких, как RTS, CTS, DTR и т.д.) можно задать/считать не из виртуального COM-порта, а напрямую через драйвер FTDI (разработчика FT232Rx). Таким образом, появилось новое, без необходимости первичной прошивки мозгов программатора, решение, для прошивки микроконтроллеров, причем, довольно быстрое.

    Принципиальная схема программатора USB

    Данная схема просто направляет сигналы MOSI, MISO, SCK и RESET, которые формируются на выводах DCD, DTR, RTS и DSR микросхемы DD1 (FT232RL) соответственно, на нужные выводы прошиваемого микроконтроллера (т.е., фактически является аналогом «древних» программаторов). Причем, делает это только в момент программирования камня, в остальные моменты времени программатор отключен от прошиваемой платы за счет 4-х буферных элементов микросхемы DD2 (74HC125D). Состояние линий MOSI, MISO, SCK и RESET устанавливается/считывается прошивающим софтом на компьютере. Передача данных между ПК и микросхемой FT232RL идет по шине USB (от которой еще и получает питание программатор).

    Светодиод HL2 («PWR») сигнализирует о подаче на программатор напряжения питания с шины USB. Светодиод HL1 («PROG») индицирует процесс прошивки микроконтроллера (горит только во время прошивки). Вот, в принципе, и все описание собственно схемы электрической принципиальной. Единственное что хотелось бы отметить: во-первых, для подключения программатора к прошиваемой плате используется разъем IDC-10MR (XP2 «ISP»), распиновка которого совпадает с широко распространенной распиновкой разъема программатора
    STK200/STK300:

    XP2 «ISP» разъем для подключения устройства к программируемому микроконтроллеру

    XP3 «MISC» разъем для использования дополнительных функций программатора

    В общем микросхема FT232RL имеет довольно серьёзный потенциал для разработчика (например, линии шины CBUS можно использовать как обычные линии ввода-вывода микроконтроллера), поэтому неплохо бы иметь доступ ко всем ее выводам. Ну и доступ к напряжениям +5,0 В и +3,3 В тоже лишним никогда не будет. В приклеплении печатная плата и полное подробное описание. Разработка и мануал — podkassetnik@yandex.ru, испытание — SssaHeKkk.

    Форум по обсуждению материала USB ПРОГРАММАТОР

    Информация по самостоятельному ремонту и прошивке транзистор-тестера LCR-T4(T3) NoStripGrid.

    Радиоэлектроника и схемотехника для начинающих — первые шаги в радиоделе или с чего начать будущему радиолюбителю.

    Классический фонарик со встроенным зарядным устройством можно неплохо улучшить, добавив пару микросхем и 18650 АКБ.

    Krab956 › Блог › Как я программатор выбирал. И почему UUSP-S.

    Сразу хочу предупредить владельцев CH340 и ELM327, чтоб успокоились и не рассказывали, что все можно делать устройствами за 10$, а не за 280 евро. Дочитайте до конца, данная информация собиралась по крупица и не за один день, и может Вы захотите изменить свое мнение…

    В список не попадали однозначно дешевые программаторы, потом что они обычно заточены под определенные задачи. Даже имеющийся у меня Miniprog TL866 имеющий довольно большой список не покрывал мои потребности — ST95P08, TC97101, MCU Motorola и т.д. Так появился Xprog которы, вроде выполнял все задачи, но всеравно чего-то не хватало — начали попадаться Renesas, увеличивались объемы дампов, желание автоматизировать. Как говориться лень двигатель прогресса — все вроде просто считал программатором дамп, сохранил, прогнал через программу-калькулятор залил. А тут засада — один и тот же блок разные калькуляторы по разному обрабатывают, причем того который безотказно делает все нет. Так как изучать языки программирования — не сильно хотелось, и были примеры. Начал писать под отломаную оболочку известной фирмы ETL (www.etlweb.com/) софт ETSmart (www.drive2.ru/b/488499548277178457/). Получалось красиво, но долго из-за оформления и отсутствия описание языка. Бросил писать потому, что наткнулся на ограничения:
    — калькулятор выполнял всего 2 алгоритма — в момент запуска, и при нажатии кнопки применить, что сильно сужает возможности функционала самого скрипта;
    — количество переменных ограничено 32 значениями — накладывает ограничение, там где нужно сделать замену всего алфавита или перекодировку с заменой значений;
    — неудобная реализация создания интерфейса — для каждого интерфейса нужно указывать координату верхнего левого угла и габаритные размеры, картинки только формата BMP.

    Читайте также  Передача midi данных от arduino в компьютер

    Так начались мои поиски. В Xprog есть встроеные калькуляторы, но только от производителя и свои добавить не можешь. По той же причине отпали Smok (smok.com.pl/index.php?), CPT100 (diagcar.eu/en/) и им подобные. Да и цена там ну его.
    Остались Тритон, Iprog+ (IprogPro) и UPA2 (UUSPA). Тритон отпал сразу — язык скриптов передрали с ETL без возможности вставлять графику, да и процов нет кроме PIC и ATMEL. У меня TL866 это все перекрывае.
    Самое интересно и расскрученое это Iprog+. Тут нужно знать историю его появления, чтоб понять почему его исключил:

    — Кампания ETL выпускает универсальный программатор ETSmart USB. Дорого, но мечта каждого мотальщика, ключника и того кто с подушками работает. Из-за покрытия микросхем которое он программирует. Как водится ни что не вечно, его клонируют. Проект клона бродит по интернету, вроде даже рабочий.

    — Вторая волна популярности приходит благодаря жителям СНГ. За все скрипты которые бродят по интернету на шару, нужно благодарить жителя Луганска (Украина). В хорошем смысле — он их написал, но небыло защиты или он не знал как ее поставить. Скажу одно, я по ним учился писать, в основном это старые машины, в большей части, есть недописанные или непроверенные скрипты. Все мы в это жизни учимся, точнее те кто хочет учатся, кто не хочет качает. Машины там где-то до 2008-2009 годов потолок. Если вы купили в интернете на сайте продованов с базой 2015-2019 года — поздравляю Вас развели на бабки. Сейчас его можно купить в Украине с базой скриптов за 79 евро (
    www.carhelp.info/forums/s…hread.php?t=141847&page=5) — кто хочет потренироваться в написании скриптов вам сюда.

    — Третий этап — это Iprog. Новое железо, новый софт (заново написан или подредактирован старый — не буду утверждать, да и не важно), язык скриптов остался тот же, расширен список микросхем, добавлено шифрование калькуляторов под серийник. Проект был немного сыроват как по мне, быстро перешел на следующий виток эволюции.

    — Четвертый этап — это Iprog+. Вообще новое железо. Главное отличие от преведущих модификаций — это возможность через адаптеры подключаться к авто через диагностику и работать с чипами ключей по безпроводному каналу (некое бодобие многофункционального комбайна). Калькуляторы можно запускать без программатора, при наличии USB ключа — это удобно когда работаешь дома или с другим програматором. Так как его отломали продают довольно большим функционалом за 600 долларов, появился IprogPro.

    — Пятый этап — IprogPro. Тут засада — многие скрипты писаные для плюса либо не работают, либо работают, но криво. Купить могут только избраные, да и авторы скриптов не хотят переводить свои скрипты на новое железо так как бояться что владельцы Pro-версии продавая плюсовой прогер, продадут их с скриптами.

    Выбирал когда еще небыло версии PRO и отлома. На тот момент был достойный вариант, убивало лишь одно — цена. Базовая железка (без адаптеров) — 400 долларов, список микросхем как у ЕTSmart. Чтоб читать 912 моторолу нужно докупать скрипты, а если хочешь автоматизировать процесс сам — покупаешь скрипт 912, сам пишишь скрипт. Алгоритм его работы — заходиш в купленый 912 скрипт, считал-сохранил, зашел в свой скрипт — обработал-сохранил, вернулся в приведущий – открыл-записал. Я так могу и смартовской прогой на шару обработать и Xprog записать. При этом, если микросхема в базе – не вопрос включить ее в собственый скрипт — другими словами тебе еще нужно научиться по даташиту добавлять М/С в программатор. Но при этих сложностях, докупив адаптер можно было подключаться к машине через диагностику.

    На тот момент выбор почему-то пал на UUSP-S (www.elrasoft.com/uusps.htm). Как и на ETSmart, в инете есть помойка с скриптами, причем именно помойка — от старья до попыток кем-то начать писать, что-то интересное и т.д. Купил исходя из покрытия микросхем, с перспективой написания скриптов самим т.к. на тот момент уже было предостаточно опыта править руками и имелось представления о цене ошибки в правке дампа вручную. И как показало время я не ошибся. Щас продается 3 варианта — UPA1 (UUSP оригинал), UPA1 (UUSP Китай), UPA2 (UUSP-S оригинал). Самое интересное — стоимость клона приблизительно в 2 раза меньше оригинала. При таком раскладе смысл брать клона который не обновляется? Адаптеры, кроме NEC, можно брать у китайцев — проверено работает. На NEC-адаптере попадались с неправильной печатной платой.

    Начав читать скудную документацию на родном для технарей языке, я где-то раза с четвертого обратил на приписку автора. Суть текста — в данной документации указаны особенности работы с аппаратной частью и взаимодействие с ней, а основы написания скрипта полностью совпадает с компилятором языка DELPHI. Другими словами — учим язык, а с хелпа берем фрагменты кода которые в стандартном языке отсутствуют, но необходимы для обращения к программатору и работе с дампом. Так же помимо 9 контактного разъема, есть двухрядный сверху. В него автор продублировал 9 контактный, и на перспективу добавил еще порты ввода/вывода. Если внимательно почитать — пользователь может ими так же управлять. Это дает возможность самим дописывать микросхемы, а так же я думаю можно и считыватель ключей присоединить. В инете есть много возмущений, типа автор кинул всех по поводу несовместимости первой и второй версии (по выполняемым скриптам). Ну за столько лет обновил человек железо, добавил много чего, что не возможно реализовать на старом — например выбор напряжения питания. На Iprog+ что-то так не возмущаються.

    FT232H и почти универсальный USB JTAG-адаптер за 15 евро

    Продолжая тему практического применения микросхемы FTDI FT232H, затронутую мной в предыдущей статье, хотелось бы рассказать об использовании отладочной платы на ней в качестве дешевого и почти универсального JTAG-адаптера с интерфейсом USB и поддержкой множества микроконтроллеров различных архитектур и производителей. Я намеренно не называю этот адаптер «JTAG-отладчиком», т.к. далеко не все устройства с JTAG TAP поддерживают отладку, но обычными пользователями JTAG-адаптер используется в большинстве случаев именно для прошивки и отладки своего кода на МК. В этой статье я опишу только собственный опыт использования FT232H в качестве JTAG-адаптера, чтобы не давать ссылок на непроверенные решения, поэтому предлагаю читателям поделиться своими (или чужими) способами использования этой микросхемы в комментариях. Уверен, что способов этих найдется намного больше, чем здесь описано.
    Заинтересовавшихся прошу под кат.

    Пара слов про FT232H

    Если вы не знакомы микросхемой FTDI FT232H, прочтите посвященную ей статью и возвращайтесь. Если читать другие статьи не входит в ваши планы, то позволю себе немного повториться:
    FT232H и его более старые, но отличающиеся большим количеством каналов братья: двухканальный FT2232D, его USB 2.0 версия FT2232H и четырехканальный FT4232H — это контролеры USB USART c дополнительным режимом работы, обеспечивающим аппаратную поддержку протоколов SPI (сборка SPI-программатора была описана в предыдущей статье), JTAG (работа с которым будет описана в этой) и I2C (который я пока не буду рассматривать).
    Сам чип достаточно дешевый, и в мелких партиях стоит приблизительно 200 рублей, но выпускается он в не очень удобных для DIY корпусах LQFP и QFN, поэтому проще всего купить не сам чип, а уже готовую breakout-плату вроде такой (те самые 15 евро за двухканальный FT2232H из заголовка статьи), или такой (600 рублей без доставки), или такой (тоже 600 рублей, но в другом месте), или любой другой — чип популярный, поэтому различных плат на нем очень много. Старайтесь выбирать такую, на которой уже распаяна микросхема EEPROM для хранения настроек — намного проще будет притворяться другими устройствами, что может не раз понадобиться в дальнейшем.

    Читайте также  Контроллер кнопок для игры что? где? когда?
    Пара слов про JTAG

    Если вы не знакомы с интерфейсом JTAG, прочтите вот эту статью и снова возвращайтесь. Вообще говоря, JTAG Test Access Port — это, в первую очередь, интерфейс для отладки аппаратной части устройства, а не его программы, но, «чтобы два раза не бегать», прошивку и отладку кода через него поддерживают подавляющее большинство программируемых микросхем с этим интерфейсом. С другой стороны, зачастую даже 4 свободных выводов (а для JTAG требуется не менее 4) на МК нет, да и большинство производителей страдает (а зачастую даже наслаждается) синдромом NIH, поэтому вместо JTAG встречаются разного рода проприентарные интерфейсы, такие как SWD от ARM (протокол тот же, только по 2 вывода вместо 4), BDM от Freescale и Motorola (протокол другой, достаточно одного двунаправленного вывода), Spy-Bi-Wire от Texas Instruments (еще один вариант JTAG с 2 выводами), DebugWIRE от AVR (упрощенный отладочный протокол, которому достаточно 1 вывода) и другие. Некоторые из них, при желании, можно реализовать на базе FT232H программно, используя чип как USB GPIO-адаптер, а SWD и SWV — при помощи грамотной коммутации, как это сделано в отладчике KT-Link и его эмуляторе на базе открытого отладчика BusBlaster. На «голом» FT232H из вышеупомянутых вариантов отладочных интерфейсов поддерживается только JTAG, имейте это в виду.

    Прошиваем и отлаживаем ARM’ы

    В силу того, что на FT232H основано много распространенных отладчиков, самым простым способом добавления поддержки нашей платы в IDE и другие утилиты является эмуляция этих самых отладчиков. Некоторые фичи, возможно, не будут работать, но и от написания своих драйверов этот трюк избавляет. Проще всего притвориться открытым отладчиком CoLink (без суффикса Ex), схема которого отличается от большинства схем breakout-плат только наличием буфера. Более того, CooCox IDE напрямую поддерживает использование любых устройств на базе FT232H в качестве отладчика после предварительной конфигурации, а для Keil uVision и IAR Workbench имеются плагины, причем ни Vendor ID, ни Product ID менять не понадобится, т.к. CoLink использует как стандартные для FT232H VID и PID, так и стандартные драйверы FTDI D2XX.
    Если ваша ОС отличается от Windows и вас не интересуют ни Keil, ни IAR, ни CooCox IDE — обратите внимание на проекты UrJTAG и OpenOCD, которые имеют полную поддержку отладчиков на базе FT232H. Я работаю в Keil uVision4, и этот выбор был сделан не мной, поэтому подробнее об использовании FT232H в Linux и OS X рассказать пока не могу.
    В Keil же достаточно установить плагин, выбрать правильный Target и CoLink в качестве отладчика в свойствах проекта, после чего как прошивка, так и отладка будет проходить из IDE без привлечения какого-либо стороннего софта.
    К сожалению, я не могу найти полного списка совместимых с CoLink чипов (официальный есть по ссылке выше, но он далеко не полон), поэтому придется либо пробовать, либо пользоваться списком совместимости с OpenOCD. В общем, лучше всего просто попробовать, есть большая вероятность, что заработает сразу.

    Прошиваем и отлаживаем XE166

    Уверен, что даже многие «матерые волки» впервые слышат о данной 16-битной RISC-архитектуре, не очень популярной за пределами ее родины — Германии. Архитектура эта уже достаточно старая, ее начальная модификация была разработана в 1993 году концерном Siemens в сотрудничестве с ST для использования в промышленной автоматике, и называлась она тогда C166. Позднее, в 2007 году, уже вышедшая из состава Siemens компания Infineon немного доработала эту архитектуру, увеличив количество стадий конвеера с 4 до 5 и добавив 32-битный блок сложения-умножения. Чипы на получившейся в итоге архитектуре XE166 выпускаются до сих пор, широко применяются в немецкой автоматике и устаревать пока не собираются. Работу с ними преподают студентам технических ВУЗов соответствующих ИТ-специальностей, поэтому и мне пришлось столкнуться с этой архитектурой и чипами на ней.
    Мое мнение — нормальные чипы для своих задач, очень много периферии (по 6 каналов CAN с поддержкой MultiCAN, к примеру), до 100 Мгц с производительностью 1 MIPS на Мгц, но не без недостатков — легко могут жрать по 120 мА на 100 Мгц без особой вычислительной нагрузки и практически полностью отключенной от тактования периферии, да и в программировании посложнее AVR, но на уровне с типичными ARM’ами того же сегмента. Ну и vendor lock-in, куда без него.
    Вследствие редкости и малой распространенности на некорпоративном рынке отладчики для этой архитектуры либо невозможно купить совсем, либо на их стоимость можно приобрести сотню нормальных отладчиков для других более популярных архитектур. Но пристальное изучение схемы девкита, на которой обнаруживается все тот же FT2232D, наводит на мысль, что отладчик можно добыть малой кровью. Так и есть, но в Infineon, в отличие от CooCox, решили все-таки поменять VID, PID и серийный номер установленного на девките FT2232D, поэтому это придется сделать и нам. Подключаем девкит, ждем установки драйверов, запускаем FT_Prog, записываем VID, PID и серийный номер (я добавлю их в статью, когда доберусь до девкита, сейчас, каюсь, уже не помню), а затем прошиваем эти же значения (номер серийный можно слегка поменять) в EEPROM нашей платы (вот тут то он и понадобился). Отключаем плату от ПК, подключаем заново — новые VID и PID подхватываются драйверами и далее работа с нашей платой мало чем отличается от работы с девкитом — все те же Keil и Infineon DAS в качестве отладчика.

    Другие применения

    Поиском по тематическим сайтам несложно найти массу других способов применения FT232H и его братьев для прошивки и отладки МК и ПЛИС, но я пока с ними не сталкивался, поэтому писать о «практическом применении» не имею права. Что не мешает мне, однако, попросить читателей, знакомых с этими самыми способами, поделиться ими в комментариях. Заранее большое спасибо.