На данный момент существует несколько типов JTAG адаптеров доступных для самостоятельной сборки: wiggler, jlink клоны и различные вариации на базе FTDI чипов.
Wiggler
Состоит из преобразователя уровней подключенного к LPT порту, предоставляет минимальную скорость работы JTAG, из достоинств – малая цена. Поддерживается CrossWorks напрямую, IAR через RDI драйвер (H-JTAG, но поддержка LPT в текущих версиях приостановлена), а также OpenOCD (через драйвер режима ядра, что может быть проблематично в последних версиях Windows).
J-Link
Коммерческий адаптер, но отличная программная поддержка сподвигла народ на клонирование сего девайса. В сети можно найти прошивки и схемы для самостоятельной сборки клона. Основное достоинство инструмента – высокая скорость работы интерфейса (до 12 МГц), а также возможность использовать больше точек останова, чем доступно в ARM ядре аппаратно.
FTDI JTAG
В сети существует несколько вариаций схемы JTAG адаптеров, построенных на базе FT2232C,поддерживаются такие адаптеры OpenOCD. Хорошая альтернатива J-Link и подобным коммерческим адаптерам, но уступают им в скорости работы (до 6МГц) и не так хорошо поддержаны софтом, умеют пользоваться только аппаратными точками останова (например, всего одна точка останова для ARM7).
Настройка профиля для отладки с J-Link в Eclipse
А теперь собственно по теме.. Для работы нам понадобится установленный пакет ПО для J-Link, Eclipse и Yagarto. Также необходим Zylin CDT plugin для Eclipse. Всё о чём говорится ниже, достаточно подробно описано в документации на GDB сервер от SEGGER (http://www.segger.com/cms/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf), но для ленивых опишу основные шаги.
В первую очередь проверим работу J-Link. Для этого достаточно запустить SEGGER J-Link GDB Server. Убедимся, что адаптер распознан, в строке статуса должно быть указано количество адаптеров, а также что он видит процессор, в строке Target будет указан идентификатор. Если вы ещё не ввели лицензионные ключи, то это стоит сделать сейчас, заметьте, понадобится ключ не только для GDB сервера но и для прошивальщика, а также ключ для Flash break point. Также нужно запомнить номер порта на котором GDB сервер ожидает подключения, по умолчанию это 2331.
Теперь настроим профиль для вашего проекта в Eclipse,через меню Run->Debug Configurations… вызовем следующий диалог:
Создаём новый профиль Zylin Embedded debug (Native) и указываем проект который будем отлаживать. В поле C/C++ Application укажем имя исполняемого файла (elf с информацией для отладки, а не просто bin файл для прошивки). На следующей вкладке (Debugger) укажем путь к исполняемому файлу gdb, а также удалим имя командного файла по умолчанию, так как мы его не используем.
Далее настроим команды для инициализации отладки и запуска приложения.
Рассмотрим подробнее:
Указываем каким способом мы подключимся к gdb серверу, localhost указывает что сервер находится на локальной машине, а номер – порт который мы запомнили раньше.
target remote localhost:2331
Все команды которые начинаются с monitor не интерпретируются gdb а напрямую отправляются серверу, т.е. зависят от типа сервера, даная команда производит сброс подключеного ARM процессора и переводит его в режим halt
monitor reset
Установим скорость JTAG интерфейса (в кГц)
monitor speed 12000
Укажем порядок байт (little endian для большинства ARM)
monitor endian little
Укажем тип CPU, для прошивальщика и разрешим загрузку Flash памяти контроллера и инициируем загрузку Flash
monitor flash device = AT91SAM7S256
monitor flash download = 1
load default.elf
также если у вас есть лицензия на Flash break point то можно добавить строку
monitor flash breakpoints = 1
которая активирует возможность использования софтовых точек останова.
В поле ‘Run’ будет одна строка, "continue", эта команда переведёт процессор из состояния halt в run, исполнение кода начнётся с вектора сброса (сброс был выполнене на этапе инициализации).
Профиль настроен, теперь можно запускать отладку.
Ссылки
- USBJTAG (http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html)
- FTDI (http://www.ftdichip.com/)
- OpenOCD (http://openocd.berlios.de/web/)
- H-JTAG (http://www.hjtag.com/)
- Zylin CDT plugin (http://opensource.zylin.com/embeddedcdt.html)


Комментарии
Все это работает под Windows