Turtelizer 2: руководство пользователя Печать
Добавил(а) microsin   

Предположительно Вы хотите заняться кросс-платформенной разработкой и внутрисхемным программированием встраиваемых систем на основе микроконтроллеров ARM. Тогда Вам понадобится JTAG, и Ваш выбор может упасть на Turtelizer 2. Это открытый проект, схема и разводка печатной платы опубликована [2].

Коннектор JTAG Turtelizer 2 имеет разводку AVR 10-pin. Чтобы подключать его к стандартным 20-pin или 14-pin коннекторам JTAG, которые часто устанавливают на большинстве плат ARM, нужен специальный переходник.

Чтобы отлаживать и прошивать Вашу целевую плату, также понадобится компьютер PC с интерфейсом USB. Turtelizer 2 может использоваться на операционных системах Linux, Mac OS X и Windows.

Изначально Turtelizer был разработан для взаимодействия с OpenOCD, это открытое и бесплатное программное обеспечение для отладки процессоров ARM. Дополнительно OpenOCD может программировать множество устройств памяти FLASH.

[Как работает OpenOCD]

OpenOCD работает как сервер TCP (3), предоставляя соединение между утилитой отладчика (2) наподобие gdb и драйвером, который управляет аппаратурой отладки. Утилита отладчика подключается к серверу OpenOCD через порт TCP (по умолчанию 3333), сервер может быть локальный, т. е. работающий на том же компьютере, что и отладчик gdb, либо удаленный, к которому отладчик может подключаться через сетевое соединение.

OpenOCD Turtelizer2 Ethernut3 connect example

OpenOCD дополнительно предоставляет управляющий интерфейс командной строки (консоль telnet) через другой порт TCP (по умолчанию 4444). Этот интерфейс управления OpenOCD может использовать либо специальное приложение, либо непосредственно пользователь. В последнем случае может использоваться любой TELNET-клиент (1) наподобие putty, и через него можно посылать команды серверу OpenOCD и получать ответы от него.

OpenOCD поддерживает широкий ассортимент адаптеров JTAG, наиболее популярны адаптеры на чипе FT2232, к которым относится и Turtelizer 2. В этом случае OpenOCD использует внешнюю библиотеку для общения с драйвером USB (4) чипа FT2232. В результате команды передаются в адаптер (5), которые транслируются в активность сигналов порта JTAG отлаживаемой системы (6).

В следующих разделах описана базовая установка и конфигурирование OpenOCD. Дополнительную информацию можно получить в руководстве пользователя OpenOCD [3].

[Установка OpenOCD на Windows PC]

Шаг 1. Загрузите последнюю версию драйвера FTDI для Turtelizer 2, он доступен на сайте Egnite [4]. Распакуйте ZIP-архив (файл будет называться наподобие ftdi-turtelizer2.zip) в любую папку на диске.

Шаг 2. Подключите Turtelizer 2 кабелем USB к компьютеру. Windows автоматически определит новое оборудование Turtelizer, и откроется окно мастера установки нового оборудования (New Hardware Wizard). Следуйте пошаговым инструкциям, которые предлагает мастер. Убедитесь, что выбрана опция "Указать место размещения драйвера", и остальные не выбраны. Место размещения драйвера должно быть указано в той папке, куда Вы распаковали ZIP-архив на шаге 1.

Обратите внимание, что у адаптера Turtelizer имеется 2 интерфейса, коннектор JTAG и стандартный RS-232. Первым устанавливается драйвер для интерфейса JTAG, за ним устанавливается драйвер моста USB/RS-232 (виртуальный COM-порт).

Шаг. 3. Загрузите последнюю версию пакета инсталлятора OpenOCD для Turtelizer 2 с сайта Egnite [5]. Установка простая, нужно всего лишь запустить инсталлятор и нажат на несколько кнопок.

Если у Вас уже была до этого установлена система Nut/OS, то инсталлятор OpenOCD автоматически определит каталог, куда установлена Nut/OS и поместит бинарный код OpenOCD в папку nut\tools\win32 и конфигурационные файлы OpenOCD в папку nut\tools\turtelizer2.

На этом все. По окончании установки в меню запуска программ (кнопка Пуск) появится новый раздел Turtelizer 2.

[Установка на Linux PC]

Примечание: следующее описание возможно уже устарело, но скорее всего оно окажется полезным.

Исходный код 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:

$ wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.13.tar.gz
$ tar -zxf libftd2xx0.4.13.tar.gz
$ sudo cp *.h /usr/local/include/
$ sudo cp libftd2xx.so.0.4.13 /usr/local/lib/
$ cd /usr/local/lib/
$ sudo ln -s libftd2xx.so.0.4.13 libftd2xx.so
$ sudo ln -s libftd2xx.so.0.4.13 libftd2xx.so.0
$ cd /usr/lib/
$ ln -s /usr/local/lib/libftd2xx.so.0.4.13 libftd2xx.so.0
/etc/fstab (sudo):
none /proc/bus/usb usbdevfs defaults,mode=0666 0 0
(use usbfs in 2.6 kernels, 'uname -a')
$ sudo mount -a

На следующем шаге соберите OpenOCD командами:

$ cd openocd-r717/
$ ./bootstrap
$ ./configure --enable-ft2232_ftd2xx
$ make
$ sudo make install

После подключения Turtelizer 2 должны появиться следующие записи в /proc/bus/usb/devices:

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0403 ProdID=bdc8 Rev= 5.00
S:  Manufacturer=egnite
S:  Product=Turtelizer JTAG/RS232 Adapter
S:  SerialNumber=TLQ08BET
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

[Установка на Mac]

Примечание: следующее описание возможно уже устарело, но скорее всего оно окажется полезным.

Если это еще не сделано, загрузите Xcode с developer.apple.com/tools/xcode/ и установите его. Xcode содержит весь набор инструментов GNU, которые нужны для создания (сборки) двоичного запускаемого кода OpenOCD из исходного кода.

Загрузите образ диска FTDI (FTDI Disk Image) драйвера Mac OS X по ссылке www.ftdichip.com/Drivers/D2XX.htm. Драйвер упакован в файл образа диска, файл будет называться наподобие D2XXa.b.c.dmg (a.b.c обозначают версию драйвера). Смонтируйте его двойным кликом на файле образа.

Для установки драйвера откройте Terminal и выполните следующие команды:

$ cd /Volumes/PPC\ D2XX/D2XX/
$ sudo mkdir -p /usr/local/lib /usr/local/include
$ sudo cp bin/libftd2xx.0.1.0.dylib /usr/local/lib/
$ sudo ln -sf /usr/local/lib/libftd2xx.0.1.0.dylib /usr/local/lib/libftd2xx.dylib
$ sudo cp bin/ftd2xx.h /usr/local/include/
$ sudo cp Samples/WinTypes.h /usr/local/include/

Скачайте исходный код OpenOCD из репозитория SVN:

$ svn co -r 717 svn://svn.berlios.de/openocd/trunk openocd-r717

Сборка и установка OpenOCD на Mac OS X такая же, как в Linux. В окне терминала введите:

$ cd openocd-r717/
$ ./bootstrap
$ ./configure --enable-ft2232_ftd2xx
$ make
$ sudo make install

[Подключение Turtelizer 2 к отлаживаемой системе]

Перед подключением коннектора JTAG к целевой системе (или его отключением) обязательно убедитесь, что питание целевой платы выключено. Идеальный вариант - отключена как целевая плата, так и Turtelizer 2. После того, как соединили друг с другом коннектором JTAG целевую плату и Turtelizer 2, можно подключить Turtelizer 2 через USB к хосту отладки PC, и затем подать питание на целевую плату. Такая последовательность подключения гарантирует, что драйверы сигналов JTAG и процессор на целевой плате не выйдут из строя из-за импульсов статического электричества или высокого напряжения, вызванного наличием сетевых фильтров в источниках питания.

Большинство целевых плат с процессором ARM имеют на борту 20-pin коннектор JTAG, некоторые имеют коннектор 14-pin JTAG [8]. Turtelizer снабжен 10-pin коннектором JTAG, по цоколевке совпадающим с разводкой сигналов JTAG микроконтроллеров AVR компании Atmel. Для преобразования цоколевок применяется специальный адаптер (см. врезку). Можно самому изготовить кабель, выполняющий те же самые функции.

Если Turtelizer 2 подключается к стандартным 14-pin или 20-pin коннекторам JTAG, то для этого нужен специальный переходник.

Turtelizer2 jtagcon10b SCH

Turtelizer2 jtagcon10b PCB

Но фотографии ниже в качестве примера показано подключение Turtelizer к 20-pin интерфейсу JTAG платы Ethernut 5.

Turtelizer2 JTAG conn example Ethernut50f

Некоторые платы, наподобие Ethernut 3, имеют полностью совместимый коннектор JTAG, тогда переходной адаптер не нужен:

Turtelizer2 JTAG conn example Ethernut3

[Конфигурирование интерфейса OpenOCD (Interface Configuration)]

Turtelizer 2 официально поддерживается OpenOCD, его конфигурационный файл turtelizer2.cfg включен в пакет OpenOCD и находится в папке tcl/interface. Вот команды, которые он содержит (подробное описание команд и конфигурирование интерфейса см. в статье [3]).

interface ft2232
ft2232_device_desc "Turtelizer JTAG/RS232 Adapter"
ft2232_layout turtelizer2
ft2232_vid_pid 0x0403 0xbdc8

Когда используется драйвер FTDI для Windows [4] от компании Egnite, то первая строка должна быть исправлена следующим образом:

interface turtle

[Конфигурирование платы OpenOCD (Board Configuration)]

OpenOCD содержит готовые конфигурационные файлы для нескольких целевых плат. Однако конфигурация OpenOCD довольно часто меняется, так что некоторые конфигурационные файлы могут стать устаревшими между двумя релизами OpenOCD. В прошлом это часто было причиной разочарований в при использовании OpenOCD. С другой стороны нужно понимать, что разработчики OpenOCD не в состоянии проверить работоспособность каждой аппаратной конфигурации, поэтому детали настройки все равно иногда приходится делать пользователю.

Как было показано выше, конфигурация интерфейса очень проста. К сожалению с конфигурацией платы это не так. Руководство пользователя OpenOCD [3] объясняет все тонкости и команды конфигурации. Однако в некоторых случаях потребуются некоторые знания по отладке ARM JTAG и устройству целевого CPU, чтобы правильно сделать конфигурацию для конкретной целевой платы.

Архив The archive openocd-0.5.0-configs.zip [6] содержит готовые конфигурационные файлы для плат Ethernut 3, Ethernut 5 и Elektor Internet Radio, которые были проверены совместно с OpenOCD 0.5.0.

[Выгрузка приложений Nut/OS]

Если Вы используете библиотеки Nut/OS, то скорее всего запускаете перекомпиляцию, линковку, прошивку и запуск отлаживаемых приложений одной командой:

make clean all burn

Чтобы это реально работало, правильно сконфигурированный файл Makeburn должен быть помещен в каталог app дерева каталогов исходного кода библиотек Nut/OS. Для OpenOCD должен использоваться Makeburn.arm-oocd. Он может быть выбран в диалоге настроек на последней странице Configurator.

Всегда было и остается реальной проблемой синхронизироваться с быстрыми изменениями OpenOCD. Если эта команда не работает с Вашей текущей версией Nut/OS, то Вы можете попробовать использовать файл Makeburn.arm-oocd, который включен в openocd-0.5.0-configs.zip [6].

До версии Nut/OS 4.10 также был доступен файл nut/app/Makeburn.arm-turtle, но теперь он удален и его функции были включены в Makeburn.arm-oocd. Перед тем, как попробовать использовать этот файл в первый раз, Вы должны разрешить (раскомментировать) строку:

BURNDONGLE = turtelizer2

[Ссылки]

1. Turtelizer 2 User's Guide site:ethernut.de.
2. Turtelizer 2.
3. OpenOCD: руководство пользователя, начало.
4. Turtelizer 2 FTDI driver for Windows site:egnite.de.
5. OpenOCD installer for Windows site:egnite.de.
6. openocd-0.5.0-configs.zip.
7. In-System Programming.
8. Цоколевка интерфейсов JTAG.
9. 171005Turtelizer2.zip - драйверы, CAD-файлы, документация.