Содержание
Сборка UrJTAG с libFTDI под Windows 7
Cygwin
Для начала установим Cygwin (x86). В качестве источника я выбрал быстрый mirrors.kernel.org
. Кроме стандартного набора приложений в дереве выбираем все библиотеки boost и usb из ветки Libs, а также ветку Devel полностью. Все библиотеки не нужны, но я решил не заниматься отбором необходимых.
libFTDI
Теперь соберем libFTDI. Загружаем последнюю версию со следующей страницы (на момент написания libftdi1-1.2), распаковываем.
Переходим в каталог и запускаем cmake.
$ cd libftdi1-1.2 $ mkdir build $ cd build $ cmake -DCMAKE_INSTALL_PREFIX="/usr" ../
Если возникнет ошибка – стоит проверить наличие всех зависимостей.
Далее собираем.
$ make
Теперь устанавливаем.
$ make install
Установка производится в папку с Cygwin, поэтому ее подкаталоги должны быть доступны для записи.
Установка драйвера
Для libFTDI драйвер от FTDI не подходит, поэтому загружаем последнюю версию zadig zadig (на момент написания zadig_v2.0.1.160), распаковываем, запускаем.
В «Options» выбираем «List all Devices», далее выбираем интересующее нас устройство, драйвер libusbK и нажимаем «Replace Driver».
В Диспетчере устройств появится новый драйвер вместо старого (в этом примере USB Serial Converter A от FT2232H Mini Module заменен на FT2232H MiniModule (Interface 0), но в то же время USB Serial Converter B остался нетронутым).
UrJTAG
Переходим в корень диска и загружаем снапшот UrJTAG (на момент написания ревизия 2051).
$ cd d: $ svn checkout svn://svn.code.sf.net/p/urjtag/svn/trunk urjtag-svn $ cd urjtag-svn/urjtag
Также я решил добавить поддержку параллельного порта
–with-inpout32
. Для этого загружаем последнюю версию библиотеки InpOut32 (на момент написания 1.5.0.0), из архива извлекаем файл inpout32.h
в папку Сygwin \usr\include\
При помощи следующих команд создаем скрипт configure
и выполняем его.
$ ./autogen.sh $ ./configure --with-libftdi --with-inpout32 --disable-nls --disable-python
Параметры –disable-nls
и –disable-python
необходимы для устранения ошибок вида undefined reference
... ../../src/.libs/liburjtag.a(direct.o):direct.c:(.text+0x46a): undefined reference to `libintl_gettext' ../../src/.libs/liburjtag.a(idcode.o):idcode.c:(.text+0x13e): more undefined references to `libintl_gettext' follow ../../src/.libs/liburjtag.a(libftdi.o):libftdi.c:(.text+0x129): undefined reference to `ftdi_read_data_submit' ...
Проверяем результаты. Должна быть отмечена поддержка libFTDI. На отсутствие поддержки ftd2xx не обращаем внимания.
... checking for LIBUSB... yes checking for LIBFTDI... yes checking for ftdi_usb_open... yes checking for ftdi_read_data_submit... yes checking for FT_OpenEx in -lftd2xx... no configure: WARNING: *** libftd2xx not found. No support for FTDI-based USB JTAG cables via libftd2xx. checking for inpout32.h... yes ... urjtag is now configured for Libraries: libusb : 1.0 libftdi : yes (have async mode) libftd2xx : no inpout32 : yes ... Lowlevel : direct ftdi ...
В файле sysdep.h
из корня urjtag исправляем ошибку с дублирующимся INPUT.
In file included from vhdl_flex.l:141:0: vhdl_bison.h:84:5: ошибка: «INPUT» повторно декларирован как символ другого вида INPUT = 294, ^ In file included from /usr/include/w32api/windows.h:72:0, from ../../sysdep.h:47, from vhdl_flex.l:126: /usr/include/w32api/winuser.h:2673:5: замечание: здесь была предыдущая декларация «INPUT» } INPUT,*PINPUT,*LPINPUT; ^
Для этого перед и после #include <windows.h>
добавляем следующие строки.
...#endif #define WINAPI_FAMILY 2 #define NOUSER #ifdef HAVE_WINDOWS_H #include <windows.h> #endif #ifdef IN #undef IN #endif #ifdef OUT #undef OUT #endif #ifdef __MINGW32__...
Теперь собираем.
$ make -j 8 CFLAGS='-Wno-char-subscripts -Wno-unused-value'
Собранный файл находится в папке \urjtag-svn\urjtag\src\apps\jtag\.libs\
. Для его запуска нужны библиотеки из Сygwin, поэтому создадим следующий командный файл и разместим его рядом с jtag.exe
.
- urjtag.cmd
SET PATH=%PATH%;d:\cygwin\bin jtag.exe
Путь d:\cygwin\bin
изменяем на свой. Запускаем urjtag.cmd
– появится командная строка UrJTAG.
Готово
Список параметров командной строки приведен ниже.
>jtag --help UrJTAG 0.10 #2051 Usage: jtag [OPTIONS] [FILE [FILE ... ]] -h, --help display this help and exit -v, --version display version information and exit -n, --norc disable reading ~/.jtag/rc on startup -i, --interactive enter interactive mode after reading files -q, --quiet Do not print help on startup [FILE] file containing commands to execute Please report bugs at http://www.urjtag.org
А также список команд и перечень поддерживаемых кабелей.
UrJTAG поддерживает исполнение команд из файла. Для этого создаем файл с перечнем команд…
- cmd.txt
cable ft2232 vid=0x0403 pid=0x6010 endian big detect discovery
…и запускаем UrJTAG с параметром.
- urjtag.cmd
SET PATH=%PATH%;d:\cygwin\bin jtag.exe cmd.txt
Также полезен вывод результата в файл, например, при поиске инструкций/регистров.
- urjtag.cmd
SET PATH=%PATH%;d:\cygwin\bin jtag.exe cmd.txt > cmd.log
Резервные копии исходников, библиотек, а также готовые бинарники можно загрузить из файлового архива.