Turtelizer 2 был разработан для предоставления возможности программирования через JTAG памяти Flash микроконтроллеров ARM, и для отладки программ ARM через интерфейс USB. Типичные целевые платы, которые можно программировать и отлаживать - Ethernut 3, Elektor Internet Radio или Ethernut 5. Однако возможности адаптера Turtelizer 2 могут быть расширены, поскольку он базируется на многофункциональном чипе FT2232D компании FTDI, который применятся для организации интерфейсов JTAG, SPI, I2C и RS-232.
В этом документе (перевод [1]) представлен открытый дизайн аппаратуры Turtelizer 2 и некотороая базовая информация как начать работать с ним. Адаптер Turtelizer 2 будет полезен для разработчиков аппаратуры, кто хочет разработать свой собственный JTAG на основе чипа FTDI.
Если Вы купили готовый Turtelizer или один из его клонов, и Вам нужно просто знать, как с ним работать для прошивки своих устройств и отладки программ, то обратитесь к руководству пользователя Turtelizer 2 [2].
Возможности Turtelizer 2:
• Полностью буферированный интерфейс JTAG, работающий с уровнями логики целевых устройств от 1.65V до 5.5V. • Дополнительный интерфейс RS-232, работающий через виртуальный COM-порт USB. • Экономный по количеству контактов и занимаемому месту 10-pin коннектор JTAG. Если Вы используете стандартные 14-выводные или 20-выводные цоколевки коннекторов, то потребуется специальный переходник. • Исходный код и документация по аппаратуре полностью открыты (Open Source hardware and software). Программирование и отладка поддерживаются через OpenOCD и YAGARTO, и тестировалось под Linux, Mac OS X и Windows.
Большинство инструментария, описанного здесь, доступно только под Windows, в частности утилита MProg, инструмент для настройки параметров чипа FT2232.
[Аппаратура Turtelizer 2]
Текущая ревизия печатной платы PCB Version 2.0 Revision C. По сравнению с предыдущим релизом Rev-B сделаны следующие изменения.
В то время как было заявлена поддержка платами Rev-B уровней JTAG до 1.65V, в реальности уровни сигналов целевых плат ниже 2.5V работали ненадежно. Это было исправлено в Rev-C путем замены двухтактных драйверов NC7SZ125P5X (IC6 и IC8) на один драйвер NC7WZ07P6X, у которого выход с открытым коллектором.
Был добавлен дополнительный сигнал nTRST на контакт 8 коннектора JTAG предыдущая ревизия. Оставляла этот вывод не подключенным.
После того, как было объявлено, что микросхема IC2 FT2232L выходит из производства, она была заменена на полностью совместимую по выводам микросхему FT2232D. Выводы SI/WUA и SI/WUB в предыдущей версии были оставлены не подключенными, но теперь они подтянуты к VCC, как рекомендуется в последних даташитах.
Входа FORCEOFF драйвера RS-232 теперь подключен к выходу SLEEP микросхемы IC2. Это переводит драйвер RS-232 в состояние выключения после того, как шина USB входит в состояние приостановки (suspend). Кроме этого сигнал FORCEON драйвера RS-232 теперь подтянут к VCC (постоянно разрешен), чтобы можно было подключаться к устройствам с маломощным питанием.
Все последовательные резисторы 22Ω заменены на 27Ω.
Добавлена RC-цепочка между цифровой землей и экраном.
Интерфейс USB. Подробное описание USB-контроллера FT2232D ищите на сайте FTDI. Для сохранения данных конфигурации FT2232D используется Atmel AT93C56 EEPROM.
На печатной плате смонтирован коннектор USB type B (Tyco 292304 или аналогичный). Питание для контроллера USB FT2232D и драйвера RS-232 поставляется от порта USB хоста (компьютер, к котором подключен Turtelizer 2). Для подавления выбросов напряжения и защиты сигналов USB от статического электричества применен массив фильтров, ферритовые фильтры подавляют помехи по питанию.
Интерфейс JTAG. Коннектор 10-pin female подключается к печатной плате плоским кабелем, который сделан максимально коротким, чтобы избежать проблем на высоких скоростях передачи данных. В таблице ниже показана цоколевка этого коннектора.
Turtelizer 2 JTAG Connector
TCK - 1
2 - GND
TDO - 3
4 - VTref
TMS - 5
6 - nSRST
Vsupply - 7
8 - NC
TDI - 9
10 - GND
Все сигналы JTAG буферизированы логическими элементами типа LCX, которые получают питание от линии JTAG VTref. Благодаря этому уровни сигналов интерфейса JTAG автоматически подстраиваются под разные уровни напряжения питания, используемые на целевых платах (1.65V .. 5.5V). Дополнительные последовательно включенные резисторы на сигналах JTAG помогают сохранять целостность сигналов и предоставляют некоторую ограниченную защиту от перегрузок по напряжению.
Переходник JTAG. Если Turtelizer 2 подключается к стандартным 14-pin или 20-pin коннекторам JTAG, то для этого нужен специальный переходник.
Интерфейс RS-232. Второй плоский кабель используется для подключения коннектора 9-pin male DSub для организации интерфейса RS-232.
Turtelizer 2 RS-232 Connector
DCD - 1
6 - DSR
RD - 2
7 - RTS
TD - 3
8 - CTS
DTR - 4
9 - RI
GND - 5
LED-индикаторы. Используются 2 двухцветных светодиода (LED) с тремя выводами, смонтированные на обратной стороне печатной платы. LED1 показывает активность JTAG. LED2 горит зеленым, когда принимаются данные через RS-232, и горит красным, когда передаются данные через RS-232.
[Turtelizer 2 Firmware]
Контроллер USB FT2232 изначально содержит все необходимое firmware. Однако в его EEPROM должны быть загружены конфигурационные данные. Это делается программой MProg, которая доступна для компьютеров Windows PC на сайте www.ftdichip.com. С того же сайта Вам понадобится также загрузка драйверов CDM. Будучи скофигурирован один раз с помощью Windows, адаптер Turtelizer будет успешно работать также и под Linux и под Mac OS X.
Установка драйвера CDM. Обратите внимание, что эти драйверы нужны только для начального конфигурирования Turtelizer firmware с помощью программы MProg. Загрузите последнюю версию драйверов CDM Drivers с сайта www.ftdichip.com. Обычно это ZIP-архив, который должен быть распакован в любую папку по Вашему выбору.
Когда Turtelizer подключен к порту USB, операционная система Windows отобразит сообщение "Dual RS232 Installation...". Сразу после этого запустится Мастер Установки нового оборудования (New Hardware Wizard). Процедура инсталляции прямолинейна и не имеет никаких особенностей. Если Вы не новичок в операционной системе Windows, то с установкой загруженного драйвера не будет никаких проблем. Если у Вас возникли трудности, то посетите сайт FTDI для получения подробных инструкций по установке драйвера.
После того, как завершится первая часть установки комбинированного драйвера, та же самая процедура повторится для драйвера последовательного порта (Serial Port Driver).
Когда установка успешно завершится, то Менеджер Устройств (Device Manager) Windows покажет в дереве устройств новые записи.
Программирование EEPROM. Для утилиты MProg предоставлен стандартный инсталлятор. По умолчанию программа установится в директорию "Program Files".
Когда MProg запустится после инсталляции, она будет находится в состоянии ожидания (idle mode). Выберите в меню File -> New для перевода её в режим редактирования, где Вы можете изменять настройки по умолчанию.
Следующий скриншот показывает конфигурацию EEPROM, которая используется для Turtelizer.
Идентификатор Product ID BDC8 для Turtelizer был предоставлен компанией FTDI в качестве бесплатной поддержки. Использование определенного Product ID позволяет устанавливать и удалять несколько разных изделий адаптеров, основанных на том же самом чипе. Недостаток применения отдельного Product ID в том, что это портит сертификацию драйверов Windows (Windows Driver Certification), которая работает только если чип FTDI работает с оригинальным идентификатором ID 6010.
Когда все настройки сделаны, выберите в меню Device -> Scan для перевода утилиты MProg в режим программирования, и затем выберите Device -> Program для выгрузки конфигурации в EEPROM платы Turtelizer.
[Установка драйвера USB для Turtelizer 2]
Windows. Компания egnite предоставляет модифицированный драйвер Windows для Turtelizer 2 и OpenOCD [3].
Если Вы хотите подготовить свой собственный модифицированный драйвер CDM, то следуюйте документации, предоставленной компанией FTDI. Причиной для этого может быть случай, когда Вы используете свой собственный product ID. Однако не следует придерживаться описаний FTDI слишком буквально, потому что они частично неправильные. Michael Fischer, кто это обнаружил и исправил, отправил баг-репорт в компанию FTDI, но пока что ничего не произошло, поэтому во врезке проблема описана более подробно.
Основная проблема появлятся при удалении драйвер. Если следовать инструкции FTDI, то все изделия для удаления программного обеспечения используют один и тот же файл FTDIUN2K.INI. Далее в этом файле используется один и тот же ключ для всех изделий. Предположим, что Вы установили конвертер USB - Serial, и после этого установили второй от другой компании. Если оба этих изделия используют чипы FTDI, что скорее всего, и если оба следуют документации FTDI, то вторая инсталляция отменит первую, и первая пропадет из списка "Установка/удаление программ" (Add/Remove Programs). Таким образом, Вы не сможете простым способом удалить первую инсталляцию. Компания FTDI представляет инструмент FTClean, использования которого можно избежать, если делать все правильно.
Чтобы решить проблему, переменуйте файл uninstall ini и замените все ссылки в FTDIBUS.INF и FTDIPORT.INF. Далее переименуйте соответствующим образом FTDIUNIN.exe. Для Turtelizer мы использовали TURTEL2UN.INI и TURTEL2 в качестве ключа в этом файле. Файл FTDIUNIN.exe мы переименовали в TURTEL2UNIN.EXE.
Другая проблема появляется с FTDIUNIN.exe из CDM Driver Version 4.0.4.1, который может падать при определенных условиях. Драйвер Turtelizer, поставляемый вместе с OpenOCD, использует FTDIUNIN.exe из CDM Driver Version 4.0.2.1.
Если следовать этим советам, то не должно быть конфликтов, когда Turtelizer конкурентно используется вместе с другими изделиями на основе чипов FTDI, и у Вас должна быть возможность удалить и повторно установить Ваш модифицированный драйвер без проблем.
Linux. Замечание: следующее описание может быть устаревшим, но вероятно все еще будет Вам полезно.
Исходный код OpenOCD можно получить из репозитория SVN, например вот так:
$ svn co -r 717 svn://svn.berlios.de/openocd/trunk openocd-r717
Прилагаемый файл README содержит детальное описание. Для создания бинарного кода OpenOCD понадобится несколько инструментов. Гарантию наличия этих инструментов под Debian дадут следующие команды:
$ sudo apt-get install build-essential
$ sudo apt-get install automake
$ sudo apt-get install autoconf
Понадобится также библиотека поддержки FTDI (FTDI support library), если она еще не установлена. Здесь есть 2 варианта, мы выбрали один из них, предоставленный компанией FTDI: