USB JTAG адаптер opendous-jtag построен на чипе AT90USB162 (на самом деле есть еще opendous на чипе FT2232, так что возможна некоторая путаница). Адаптер opendous-jtag отличается очень простой схемой, исходный код прошивки доступен свободно. JTAG opendous можно использовать как аппаратный внутрисхемный отладчик совместно с системой OpenOCD. В этой статье сделана попытка описать самостоятельное изготовление opendous, как его подключить к компьютеру, как установить драйвер, как запустить OpenOCD и добиться пошаговой отладки ARM в системе программирования IAR Embedded Workbench for ARM (на операционной системе Windows).
[Изготовление opendous]
Как уже упоминалось, схема opendous очень проста. Если взять готовую макетную плату типа AVR-USB162 или AVR-USB162MU, то все изготовление заключается в напайке на макетное поле стандартного 20-pin коннектора "папа", куда будет подключаться кабель интерфейса JTAG.
Сигналы JTAG подключены к порту PB микроконтроллера AT90USB162 (этот микроконтроллер установлен на макетной плате AVR-USB162). Подключите ножки коннектора JTAG к макетной плате согласно следующей таблице:
1 |
не подключено |
|
|
|
|
|
|
|
|
|
|
2 |
не подключено |
3 |
TRST, PB2 |
|
|
|
|
|
|
|
|
|
|
4 |
GND |
5 |
TDI, PB0 |
|
|
|
|
|
|
|
|
|
|
6 |
GND |
7 |
TMS, PB1 |
|
|
|
|
|
|
|
|
|
|
8 |
GND |
9 |
TCK, PB4 |
|
|
|
|
|
|
|
|
|
|
10 |
GND |
11 |
TCK, PB4 |
|
|
|
|
|
|
|
|
|
|
12 |
GND |
13 |
TDO, PB5 |
|
|
|
|
|
|
|
|
|
|
14 |
GND |
15 |
SRST, PB3 |
|
|
|
|
|
|
|
|
|
|
16 |
GND |
17 |
не подключено |
|
|
|
|
|
|
|
|
|
|
18 |
GND |
19 |
не подключено |
|
|
|
|
|
|
|
|
|
|
20 |
GND |
[Прошивка firmware opendous]
Готовую прошивку можно скачать с сайта opendous (запрос для поиска opendous-jtag site:code.google.com, см. ссылки в разделе Downloads, там будет ссылка на файл наподобие opendous-jtag-at90usb162.hex, прошивка рассчитана на кварц 16 МГц). Можете также скачать исходный код [1] (см. в архиве папку Projects\opendous-jtag), и скомпилировать прошивку самостоятельно. В [1] также есть готовая прошивка Projects\opendous-jtag\opendous-jtag.hex.
Залить прошивку в плату память чипа AT90USB162 не составит никакого труда - это можно сделать с помощью USB бутлоадера FLIP. Процедура подробно описана в [2]. После того, как зальете firmware, Вы получите готовый JTAG opendous. Осталось установить для него драйвер и начать использовать.
[Установка драйвера для opendous]
1. Скачайте LUFA_091223.ZIP [1], распакуйте его, найдите в папке Projects\opendous-jtag\WindowsDriver драйвер для Windows.
2. Подключите Ваш opendous к компьютеру через порт USB. Windows обнаружит новое устройство. Укажите мастеру установки драйвера путь в каталог WindowsDriver. Драйвер установится, и в Диспетчере Устройств появится новое устройство LibUSB-Win32 Devices -> LUFA JTAG.
[OpenOCD, установка и запуск на Windows] Описывается пример запуска внутрисхемной отладки для ARM7 с использованием OpenOCD 0.7.0 и самодельного JTAG-адаптера opendous. 1. Распакуйте папку openocd-0.7.0 из архива [1] в папку Program Files.
2. Перейдите в папку %ProgramFiles%\openocd-0.7.0\bin, попробуйте запустить файл openocd-0.7.0.exe:
c:\Program Files\openocd-0.7.0\bin>openocd-0.7.0.exe --help
Open On-Chip Debugger 0.7.0 (2013-05-05-10:41)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Open On-Chip Debugger
Licensed under GNU GPL v2
--help | -h display this help
--version | -v display OpenOCD version
--file | -f use configuration file < name >
--search | -s dir to search for config files and scripts
--debug | -d set debug level < 0-3 >
--log_output | -l redirect log output to file < name >
--command | -c run < command >
c:\Program Files\openocd-0.7.0\bin>
3. Подключите через USB к компьютеру Ваш адаптер opendous. В Диспетчере Устройств он должен отобразиться как LUFA JTAG. Перейдите в папку c:\Program Files\openocd-0.7.0\bin, запустите интерпретатор cmd, и выполните в консоли команду openocd-0.7.0.exe -f interface\opendous.cfg. Должны отобразиться предупреждающие и информационные сообщения, и сервер OpenOCD останется загруженным в ожидании команд.
...
Warn : No opendous_type specified, using default 'opendous'
Info : opendous JTAG Interface ready
Info : This adapter doesn't support configurable speed
Warn : There are no enabled taps. AUTO PROBING MIGHT NOT WORK!!
...
4. Сервер OpenOCD открывает на прослушивание TCP порты 6666 и 4444 (по умолчанию). К этим портам можно подключиться через утилиту telnet, и получить текстовый командный интерфейс, через который может управляться OpenOCD. Порт 4444 предназначен для взаимодействия с человеком, а порт 6666 предназначен для машинного взаимодействия с отладчиком GDB.
[Устранение проблем]
Q001. Адаптер opendous система Windows видит, драйвер установлен, в Диспетчере Устройств имеется без знаков вопроса устройство LUFA JTAG, но OpenOCD при попытке подключиться к адаптеру выдает ошибку:
C:\Program Files\openocd-0.7.0\bin>openocd-0.7.0.exe -f interface\opendous.cfg
Open On-Chip Debugger 0.7.0 (2013-05-05-10:41)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
Error: Cannot find opendous Interface! Please check connection and permissions.
in procedure 'init'
Проблема может заключаться в том, что для OpenOCD требуется специальный драйвер, через который он мог бы работать с USB-устройством opendous. Решение проблемы было найдено в файле openocd-0.7.0\drivers\libusb-1.0 drivers.txt [3]. Необходимый для opendous драйвер можно установить с помощью утилиты zadig.exe, "libwdi, Windows Driver Installer library for USB devices" (программу zadig.exe можете скачать в архиве [3], см. папку drivers). Процедура следующая:
1. Подключите opendous через USB к компьютеру.
2. Запустите программу zadig.exe.
3. В меню программы Options установите галочку на List All Devices. После этого в выпадающем списке найденных устройств USB выберите LUFA JTAG.
4. Выберите Driver WinUSB (как на скриншоте), нажмите кнопочку Reinstall Driver. Через несколько секунд нужный драйвер установится. После установки драйвера проблема с подключением OpenOCD к opendous как правило исчезает:
C:\Program Files\openocd-0.7.0\bin>openocd-0.7.0.exe -f interface\opendous.cfg
Open On-Chip Debugger 0.7.0 (2013-05-05-10:41)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Warn : Adapter driver 'opendous' did not declare which transports it allows; ass
uming legacy JTAG-only
Info : only one transport option; autoselect 'jtag'
Warn : No opendous_type specified, using default 'opendous'
Info : opendous JTAG Interface ready
Info : This adapter doesn't support configurable speed
Warn : There are no enabled taps. AUTO PROBING MIGHT NOT WORK!!
Error: JTAG scan chain interrogation failed: all ones
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Warn : Bypassing JTAG setup events due to errors
Warn : gdb services need one or more targets defined
Если не получилось с драйвером WinUSB, попробуйте в программе zadig.exe другие варианты драйвера (libusb-win32, libusbK).
Пример настройки отладки в среде IAR можно посмотреть в статье [5].
[Ссылки]
1. LUFA_091223.ZIP - исходный код opendous и готовая прошивка для макетной платы AVR-USB162. 2. Макетная плата AVR-USB162. 3. openocd-0.7.0.zip - исполняемый код OpenOCD, скрипты, документация, драйверы, установщик драйвера zadig.exe. 4. Цоколевка интерфейсов JTAG. 5. OpenOCD: отладка кода в IAR Embedded Workbench. |