Ft232r usb uart производитель
Продолжая тему практического применения микросхемы FTDI FT232H, затронутую мной в предыдущей статье, хотелось бы рассказать об использовании отладочной платы на ней в качестве дешевого и почти универсального JTAG-адаптера с интерфейсом USB и поддержкой множества микроконтроллеров различных архитектур и производителей. Я намеренно не называю этот адаптер «JTAG-отладчиком», т.к. далеко не все устройства с JTAG TAP поддерживают отладку, но обычными пользователями JTAG-адаптер используется в большинстве случаев именно для прошивки и отладки своего кода на МК. В этой статье я опишу только собственный опыт использования FT232H в качестве JTAG-адаптера, чтобы не давать ссылок на непроверенные решения, поэтому предлагаю читателям поделиться своими (или чужими) способами использования этой микросхемы в комментариях. Уверен, что способов этих найдется намного больше, чем здесь описано.
Заинтересовавшихся прошу под кат.
Пара слов про FT232H
Если вы не знакомы микросхемой FTDI FT232H, прочтите посвященную ей статью и возвращайтесь. Если читать другие статьи не входит в ваши планы, то позволю себе немного повториться:
FT232H и его более старые, но отличающиеся большим количеством каналов братья: двухканальный FT2232D, его USB 2.0 версия FT2232H и четырехканальный FT4232H — это контролеры USBUSART 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 программно, используя чип как USBGPIO-адаптер, а 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 и его братьев для прошивки и отладки МК и ПЛИС, но я пока с ними не сталкивался, поэтому писать о «практическом применении» не имею права. Что не мешает мне, однако, попросить читателей, знакомых с этими самыми способами, поделиться ими в комментариях. Заранее большое спасибо.
Компания FTDI специализируется на производстве микросхем сопряжения микропроцессорных устройств с USB. Их отличительные особенности – простота подключения и наличие бесплатных драйверов для Windows 98/2000/ME/XP, MAC OS - X, Linux. Микросхемы позволяют реализовать мост между USB и такими интерфейсами, как UART, FIFO, JTAG, SPI, PS/2, I2C, IrDA.
В режиме "Bit Bang" они могут использоваться для конфигурирования микросхем программируемой логики через USB или для ввода/вывода по USB цифровых логических сигналов без использования дополнительного микроконтроллера. Использование микросхем FTDI является идеальным решением для быстрого превращения разработок времен RS232 в современные USB-устройства.
Модельный ряд
Микросхема FT232R представляет новое поколение семейства "USB - UART", призванное заменить популярные мосты FT232B. Принципиальные отличия новых микросхем заключаются в повышенной степени интеграции, благодаря чему можно отказаться от использования многих внешних компонентов обвязки.
Основные отличия микросхем нового поколения:
— наличие энергонезависимой памяти EEPROM;
— наличие встроенного тактового генератора;
Cналичие встроенных пассивных компонентов (RC - фильтра по питанию и др.).
Помимо наличия встроенных компонентов FT232R имеют и разширенный функционал.
Во-первых, посредством встроенного генератора можно задавать частоту внешних устройств (6, 12, 24 или 48 МГц).
Во-вторых, микросхемы имеют уникальный идентификационный номер, программируемый на заводе-производителе, он доступен для чтения по шине USB. Его можно использовать как USB ключ для защиты пользовательских приложений.
Мосты FT232R работают в широком температурном диапазоне от -40°С до +85°С, что позволяет их использовать как в промышленном оборудовании, так и в коммерческих разработках.
Новые микросхемы FT232R выпускаются в двух типах корпусов SSOP28 (FT 232RL) и QFN32 (FT 232RQ).
FT232H – это высокоскоростной мост USB - UART/MPSSE. В режиме UART скорость обмена составляет до 12 Мбод (по сравнению с 3 Мбод в стандартной версии FT232R). В режиме асинхронного FIFO скорость передачи данных составляет 8 МБ/с, в синхронном – до 40 МБ/с.
Микросхема FT232H характеризуется наличием особого режима работы, который позволяет устанавливать разрядность шины данных выходного интерфейса (1, 2, 4 или 8 бит).
Микросхемы FT232H выпускаются в двух типах корпусов LQFP-48 (FT232HL) и QFN-48 (FT232HQ) и имеют расширенный температурный диапазон от -40°С до +85°С.
Для мостов серии FT232H предлагается отладочный модуль UM232H, который имеет стандартный форм-фактор DIP-28.
FT245R – микросхема нового поколения "USB - FIFO", пришедшая на смену FT245B.
Принципиальные отличия новых микросхем заключаются в повышенной степени интеграции, благодаря чему можно отказаться от использования многих внешних компонентов обвязки.
Основные отличия микросхем нового поколения:
— наличие энергонезависимой памяти EEPROM;
— наличие встроенного тактового генератора;
— наличие встроенных пассивных компонентов (RC - фильтра по питанию и др.).
Помимо наличия встроенных компонентов FT245R имеют и разширенный функционал. Микросхемы имеют уникальный идентификационный номер, программируемый на заводе-производителе, он доступен для чтения по шине USB. Его можно использовать как USB ключ для защиты пользовательских приложений.
Мосты FT245R работают в широком температурном диапазоне от -40°С до +85°С, что позволяет их использовать как в промышленном оборудовании, так и в коммерческих разработках.
FT245R выпускаются в двух типах корпусов SSOP28 (FT 245RL) и QFN32 (FT 245RQ).
Микросхема FT2232H - представитель 5-го поколения семейства аппаратных мостов USB - UART/FIFO.
Это 2-портовый высокоскоростной мост USB - UART/FIFO. Объем буфера каждого порта составляет 4кБ.
Порты микросхемы могут быть сконфигурированы как:
— два независимых интерфейса UART (с поддержкой RS232/RS422/RS485) со скоростью обмена по каждому порту до 12 МБод, скорость каждого канала можно настроить независимо
— два независимых асинхронных параллельных интерфейса FIFO со скоростью обмена до 10 МБайт/c
— один синхронный параллельный интерфейс FIFO со скороcтью обмена более 25 МБайт/c
— IIC, JTAG, SPI
— режим bit-bang
Мосты FT2232H выпускаются в двух типах корпусов LQFP-64 (FT2232HL) и QFN-64 FT2232HQ), температурный диапазон от -40°С до +85°С.
Что такое Uart?
UART (universal asynchronous receiver/transmitter) или, по-русски, УАПП (универсальный асинхронный приемопередатчик) - это интегральная микросхема для организации связи посредством последовательного интерфейса для передачи данных.
При изготовлении почти любого устройства с процессорным управлением встаёт необходимость обеспечить его связь с компьютером. Причём зачастую эта связь нужна только при отладке и в дальнейшей работе прибора совершенно не требуется. А порой и сам прибор в дальнейшем не требуется — так, один раз поиграл и засунул в дальний ящик. Лепить в каждом таком девайсе преобразователь интерфейса с обвязкой лень, да и жаба душит. А ведь ещё и разъём нужен… Что бы не возникало таких проблем нужно под рукой иметь внешний преобразователь интерфейса, легко подключаемый к тому девайсу, с которым сейчас работаешь.
Какие интерфейсы использовать особо выбора не стоит — самое простое и универсальное что можно придумать в настоящее время — это uart на стороне девайса и USB на стороне компа. С выбором преобразователя тоже думать особо нечего — достойных альтернатив FT232RL для решения данных задач на горизонте не видно (среди основных бонусов этой микрухи функциональность, качественные дрова, лёгкость монтажа и минимум необходимой обвязки). Делать простой дата-кабель скучно и не интересно, да и не всегда его хватает, кроме того FT-шка имеет много дополнительных фишек, терять которые не охото. В общем, решил я сделать что-то типа демо-платы для микросхемы FT232R. После вдумчивого курения даташита, нарисовалась примерно такая схема:
- Раздельное питание — преобразователь питается от USB, девайс от своего источника. Тут три варианта в зависимости от питания целевого устройства:
а) девайс работает на 5В
б) девайс работает на 3.3В
в) девайс работает на другом (1.8В — 5.25В) уровне питания - Общее питание от USB — преобразователь питается от шины, девайс от преобразователя. Тут у меня получилось четыре варианта разной степени бредовости:
а) девайс работает на пяти вольтах
б) девайс работает на 3.3В (ВНИМАНИЕ. в этом случае девайс должен потреблять ток не более 50mA, а светодиоды лучше отключить, иначе можно спалить FT-ку)
в) девайс работает на 3.3В, но питается от 5В
г) девайс работает на вообще фиг знает чём (1.8В — 5.25В), но питается от 5В - Общее питание от девайса (может понадобиться при прототипировании, когда предполагается, что FT232R будет в составе конечного девайса). Тут можно выделить всего два варианта — питание равняется VCCIO и питание не равняется VCCIO (главное, что бы питание было не ниже 4В, так как внешний кварц для FT не заложен):
а) напряжение питания и напряжение обмена равняются
б) напряжение питания и напряжение обмена различаются
Ёжику на спину ещё предлагалось повесть мезонинную плату, делающую его по совместительству программатором для AVR, но до изготовления дело пока не дошло, так как сейчас не сильно нужно, да и разъёмы для мезонинных плат я так и не добыл.
Принцип работы программатора объяснять не буду — о подобных схемах уже писали много, отмечу только основные схемотехнические особенности. Во-первых, обращу внимание на то, что у меня питание таргета по умолчанию отвязано от питания самого модуля, ибо нехорошо это, коротить питальник девайса и питальник программатора (ну это, конечно, когда девайс не от программатора запитывается, для этого случая предусмотрена перемычка XP8).
Десятиконтактный разъём программирования XP7 состоит из стандартного шестиконтактного ISP и двух контактов порта uart, что позволяет сократить количество проводов, подключенных к подопытному девайсу в процессе его разработки и отладки. Предполагается на плате устройства ставить такой же разъём и соединять их шлейфом, в котором RX и TX поменяны местами. Выкусанные две ноги позволяют программировать такую плату стандартным программатором с шестиконтактной головой.
Пачка резисторов по 33Ом предназначена для того, что бы защититься от кратковременного КЗ на девайсе, а 10k резистор подтягивает к земле линию RX дабы избавиться от возможных помех. Если понадобится внешний тактовый сигнал, то можно настроить его вывод на любую из ног CBUS.
Ну вот, вроде бы всё. В приложенном архиве находится комплект файлов для этих двух плат в формате Altium Designer и печатные платы в формате P-CAD PCB.
Комментарии ( 24 )
хорошо, годно :) реквестирую фотки поменьше(с увеличением по клику хотя бы), а то на 1024p уплыло за край.
Думаю все хоть раз сталкивались с поддельными недорогими, сильно похожими на оригиналы вещами из Китая. Сначала эти были «абибасы» и «ноклы» — сейчас айфоны и микросхемы. Однако если раньше подделывание микросхем ограничивалось либо неправильной маркировкой (когда обычная дешевая микросхема маркировалась как дорогая) или отсутствием микросхемы в корпусе (в лучшем случае там ничего, в худшем — все выводы закорочены) — то сейчас все стало интереснее.
Недавно exp131 и X4ZiM обратили внимание, что некоторые партии популярной микросхемы интерфейса USB-RS232 очень уж подозрительно одинаково глючат: в системе они определяются как обычные FT232RL, «признаются» официальным софтом, но отправляемые данные не передаются. Конечно, все мы привыкли к тому, что ошибку в первую очередь нужно искать у себя… Но что если проблема именно в микросхеме?
Фотографии микросхем: слева работает отлично, справа — глючит. Можно заметить отличие в маркировке — в рабочей микросхеме она выгравирована лазером, в нерабочей — напечатана (впрочем, это не универсальное правило, бывает и наоборот). Сначала смотрим фотографии, выводы в конце.
После травления металлизации:
Можно посмотреть подробнее на отдельные элементы, ряды стандартных ячеек из который автосинтезирована логика:
Статическая память:
А микросхема-то совершенно другая! Сразу можно обратить внимание, что контактных площадок гораздо больше, чем нужно. На краю можно заметить надпись «SR1107 2011-12 SUPEREAL»
После травления металлизации:
Снова подробнее отдельные части, стандартные ячейки:
В другой части микросхемы стандартные ячейки были существенно другими. Не часто такое встретить можно — микросхему собирали из больших «кусков», которые были доступны только в виде топологии:
Первый тип статической памяти:
Второй тип статической памяти:
И наконец, ROM — он программировался на уровне поликремния при производстве микросхемы, так что мы непосредственно можем видеть записанные данные:
Китайцы в данном случае не просто сделали «фейк», а взяли готовый программируемый маской при производстве микроконтроллер (так нужно менять только одну маску — это намного дешевле и объясняет лишние контакты на кристалле), заказали изготовление партии этих микросхем на заводе. но видимо где-то была допущена ошибка, и микросхема хоть и определялась как настоящая — так и не заработала как следует. Это никого не смутило, и эти микросхемы начали продавать как настоящие FT232RL. Впрочем, возможен и вариант, что объема ROM памяти просто не хватило на полноценную эмуляцию.
Update: Полученный клон отлично работал, пока FTDI не выпустила обновление драйверов, которые смогли отличить оригинал от клона через USB (на более новых драйверах — клон передает только нули). Если сейчас ставить драйвера версии 2.08.14 или ранее — клон также работает. Предусмотреть все возможные в будущем проверки без полного восстановления электрической схемы оригинала практически невозможно — и эта предусмотрительность спасла FTDI.
Какой экономический смысл делать программную «копию» известной микросхемы, а не выпускать под своим именем? Не требуется покупка USB VID, не нужны затраты на рекламу. Копию будут использовать во многочисленных крупносерийных продуктах. С новой микросхемой — потребовалась бы разработка конечных продуктов с нуля — рост продаж начался бы только через 2-3 года. Себестоимость же производства микросхем — 10-15 центов как в случае оригинала, так и китайского варианта. Производитель также мог бы снижать стоимость — но не делает этого, они зарабатывают свою заслуженную прибыль.
Отсюда мораль — чем дальше, тем более внимательно нужно относится к поставщикам микросхем, и дешевые микросхемы от неизвестных китайских поставщиков могут выйти боком и гарантировать долгие часы увлекательной отладки
Странно, что про этот крайне популярный и полезный чип до сих пор не было статьи на Хабре. Считаю необходимым восполнить этот пробел. В статье будет описано несколько интересных способов применения чипа FTDI FT232H и его аналогов для различных прикладных целей.
Пару слов о нем: относительно дешевый, простой в разводке и программировании, распространенный конвертер USB 2.0 последовательные протоколы (USART , SPI , I2C , JTAG TAP и просто GPIO bit-bang), хорошо подходящий как для изготовления собственных устройств с подключением к ПК по USB, так и для тестирования и отладки других устройств.
Из простой breakout-платы на этом чипе легко и непринужденно можно сделать UART-конвертер, SPI-программатор, JTAG-отладчик, I2C-master, конвертер GPIO bit-bang (а с ним и остальных протоколов, не требующих запредельных частот и стойких к возможным задержкам, вносимым USB-стеком, к примеру, Dallas 1-wire).
Если вышеуказанные возможности сумели вас заинтересовать — прошу под кат.
Немного истории
Компания FTDI была основана в 1992 году в г. Глазго, что в Шотландии. Специализируется она на решениях, связанных с USB, и известна своими конвертерами USB-Serial серии FT232, которые уже не раз упоминались на Хабре в различных статьях о DIY-железе и прошивке микроконтроллеров. Серия эта к настоящему времени все еще успешно производится и продается, но прогресс не стоит на месте, и в конце 2009 года с выпуском микросхемы FT2232D началась «перезагрузка» серии, добавившая к уже имевшимся возможностям киллер-фичу — Multi-Protocol Synchronous Serial Engine (MPSSE), о которой в этой статье и пойдет речь.
Технология MPSSE и поддерживающие её чипы
Технология эта обеспечивает аппаратную поддержку последовательных протоколов SPI, I2C и JTAG, а также возможность «дрыгать ногами» GPIO после перевода чипа в специальный режим, называемый, как это ни странно, MPSSE Mode.
Это режим поддерживается в настоящий момент 4 различными контролерами, производимыми FTDI:
FT232H, FT2232D, FT2232H, FT4232H.
Имеются также разные проекты по эмуляции этого режима на микроконтролерах различных архитектур и производителей, но в этой статье я буду рассматривать только FTDI, иначе она рискует вырасти еще вдвое.
Хорошее введение в технологию, со схемами подключения для каждого протокола, списком поддерживаемых возможностей для каждого чипа и пояснениями можно найти в Application Note 135 с говорящим названием MPSSE Basics.
Подробности о подключении и работе с соответствующими протоколами — в отдельных AN: SPI, I2C, JTAG.
- Поддержка MPSSE
- USB USART на скорости до 12 МБод (скорость RS232 может быть лимитирована внешней микросхемой сдвига логических уровней)
- Конфигурируемые выводы GPIO с регулировкой максимального тока (4, 8, 12 или 16 мА)
- Хранение конфигурации выводов, режима работы после Reset, USB VID, DID и Description string во внешней EEPROM с возможностью её перезаписи по USB
- Напряжение питания ядра 1.8 В (входящее — от 3.3 В до 5 В ), выводов — 3.3 В (все выводы толерантны к 5 В)
- Температурный диапазон от -40°C до 85°C
- Выпускается в корпусах LQFP48 и QFN
- Имеются драйверы для Windows, MacOS X и Linux
Я не хочу ничего паять!
Для тех, кто не хочет паять, на рынке имеется множество breakout-плат, оснащенных чипом FT2232H (двухканальный вариант FT232H, который для простоты можно считать двумя FT232H в одном корпусе), всей необходимой обвязкой и внешней EEPROM.
Купленная мной плата стоила 15 евро, в СНГ можно купить похожую приблизительно за 600 рублей без доставки (у DiHalt'а, к примеру, только требуйте вариант на FT2232D, а лучше сразу на FT2232H, если есть).
Моя плата выглядит так:
Слева — питание, земля и 16 выводов канала А, справа — питание, земля, 16 выводов канала B, Reset и Wake-up. Диоды TX и RX работают правильно только в режиме USART (если специально их не зажигать программно при работе с MPSSE), поэтому на свою плату я их даже не стал запаивать. LDO-регулятор и чип EEPROM находятся на обратной стороне платы.
Практическое применение
Хватит теории и рассказов, пора перейти к практике. Представьте, что такая плата у вас уже есть, и теперь вы задумываетесь, а что с ней можно сделать. А вот что:
0. Конвертер USBUSART без всяких там новомодных MPSSE, как учили отцы. Применений ему масса, можно восстанавливать убитые неудачной прошивкой модемы и роутеры, восстанавливать (слегка) испортившиеся жесткие диски, подключаться к отладочным интерфейсам различного оборудования и так далее, применений масса, рассматривать я их тут не буду.
1. SPI-программатор для прошивки и восстановления БИОСов для более или менее новых ПК (производства 2008 года и новее, массовый переход на SPI-чипы для хранения БИОСа произошел вместе с внедрением X58, насколько я помню). С внедрением технологии SecureBoot (и сопутствующих ей) прошивка модифицированного БИОСа превратилась из обыкновенной операции в прогулку по граблям, в результате которой «окирпичить» машину — как два байта переслать. Внешний SPI-программатор решает эти проблемы полностью.
2. JTAG-отладчик для различных МК. В данный момент я прошиваю и отлаживаю этой платой следующие МК: STM32F1xx\L1xx\F4xx, Infineon XMC4500 (ARM Cortex-M) и Infineon XE167FM (C166), но список поддерживаемых МК значительно шире, ибо на FT232H основаны такие популярные отладчики как отрытый CooCox CoLink и закрытый но более мощный Amontec JTAGKey2, под которые можно успешно мимикрировать.
3. I2C bus master, который можно использовать, к примеру, для контроля за VID процессора или видеокарты, и при нормальных условиях I2C совместим с SMBus и PCBus, на которых висит половина низкоскоростной периферии ПК. Пока я этот режим досконально не изучал, поэтому описывать работу с ним не буду.
4. Конвертер USBGPIO, на базе которого можно реализовать как простые задачи из серии «выключить устройство нажатием кнопки в программе», так и задачи посложнее, вроде реализации собственных протоколов на программном уровне. Программа при этом пишется на ПК, что имеет как преимущества (намного больше свободы в выборе ЯП и обилие ресурсов), так и недостатки (задержки в работе USB-стека и его непредсказуемые тайминги не позволят реализовать очень скоростные протоколы), но сама возможность не использовать МК для взаимодействия с железом для тех, кто с ними малознаком — это хорошо.
Остановлюсь подробнее на пунке 1, оставив пункт 2 для следующей статьи.
Делаем SPI-программатор
Далее все просто, соединяем FT232H и EEPROM по схеме (взятой из схемы моего программатора RushSPI):
Открываем командную строку и выполняем там команду:
flashrom -p ft2232_spi:type=232H
Для многоканальных чипов FTDI нужно будет дополнительно указать, на каком именно канале находится подключенная микросхема EEPROM, к примеру, для FT2232H и канала А команда будет такой:
flashrom -p ft2232_spi:type=2232H,port=A
Результат выполнения этой команды должен быть примерно таким:
Found chip "Winbond W25Q64.V" (8192 KB, SPI)
Если чип не нашелся, то либо вы что-то напутали с подключением, либо ваш flashrom собран без libftdi, либо у вас Windows и вам нужно ставить вместо найденного системой драйвера от производителя другой драйвер на основе libusb, как описано здесь.
Если же чип нашелся, то теперь читать содержимое той же командой с дополнительным ключом -r dumpname.rom, либо записать свой файл командой с ключем -w newbios.rom
Список доступных ключей, поддерживаемых программаторов и все остальное можно найти в официальной Wiki проекта. Там же находится статья, посвященная программаторам на базе FT232H, вот она.
Заключение
Получившийся программатор прошивает восьмимегабайтную микросхему SPI за ~150 секунд, что не быстро, но и не слишком долго, а за 15 евро — просто отлично.
С его помощью я уже не раз восстанавливал себе БИОС, не вынесший экспериментов.
С его же помощью (правда, в режиме USART-конвертера) удалось починить сломавшийся было жесткий диск.
Про прошивку и отладку различных МК по JTAG с его помощью я расскажу в следующей статье.
О возможных ошибках, очепятках и недоработках прошу сообщать в Л\С.
Спасибо за внимание и за то, что прочитали эту портянку.
Читайте также: