[СИНОПСИС]
xc3sprog -c cable [options] file1spec [file2spec ...]
xc3sprog -c cable [options] -j
[ОПИСАНИЕ]
xc3sprog это утилита командной строки для программирования микросхем FPGAs, микроконтроллеров и микросхем энергонезависимой памяти (PROM, SPI FLASH и т. п.) через JTAG.
Обычно утилита xc3sprog читает файл .BIT, который генерирует инструментарий разработки прошивки FPGA, и затем программирует его в чип PROM, находящийся на плате FPGA, откуда будет производиться загрузка прошивки в FPGA при включении питания. Как вариант, прошивка может быть записана напрямую в конфигурационное RAM FPGA, но при выключении питания эта конфигурация будет потеряна. Другие разные варианты использования см. в секции ПРИМЕРЫ.
Как показывает имя утилиты, xc3sprog изначально была разработана для Xilinx Spartan-3 FPGA. Однако список поддерживаемых микросхем был впоследствии расширен для Xilinx FPGA, CPLD, микросхем XCF flash PROM, микроконтроллеров Atmel AVR и чипов SPI flash. xc3sprog поддерживает несколько вариантов кабелей JTAG, включая кабели параллельного порта и программаторы USB.
[ОПЦИИ]
-c cable
Задает тип кабеля JTAG. Тип указывается меткой (см. врезку "Оборудование, поддерживаемое xc3sprog"). Наиболее часто используется pp (кабель параллельного порта LPT), xpc (Xilinx USB programmer) и ftdi (программатор на основе чипов USB компании FTDI).
-j
Опрашивает цепочку JTAG и выводит список подключенных устройств. Это действие выполняется по умолчанию, если ничего другое не задано.
-p val[,val,...]
Задает использовать устройство на указанной позиции в цепочки JTAG. По умолчанию (если val не указано) подразумевается позиция 0, соответствующая устройству, напрямую подключенному к выводу TDO кабеля JTAG. Используйте эту опцию для выбора конкретного устройства в цепочке JTAG, когда к этой цепочке подключено несколько устройств.
Если указано несколько позиций, файл данных будет поделен на части. Эти части будут запрограммированы по порядку, сначала в первое устройство, затем в следующее, и так далее. Это полезно для плат, на которых находятся несколько чипов XCF, конфигурирующий одну микросхему FPGA.
-Tn
Тестирует цепочку JTAG n раз. Когда идет работа в режиме ISF, тестируется соединение SPI. Если n не указано, то по умолчанию тест будет проведен 10000 раз. Если n = 0, то тестирование будет происходить бесконечно.
-J freq
Задает частоту тактов JTAG (freq указывается в Гц). Если частота не указана, или если freq = 0, то по умолчанию кабель будет работать на своей максимальной поддерживаемой частоте. В настоящий момент эта опция поддерживается только для кабелей на основе чипов FTDI.
-e
Стирает всю память устройства.
-I[file]
Работа в режиме ISF для программирования внутренней последовательной памяти flash (аббревиатура ISF расшифровывается как internal serial flash). Память flash подключена к главной целевой микросхеме JTAG, но эта память не доступна напрямую через цепочку JTAG. Главная целевая микросхема JTAG используется как прокси (промежуточный узел доступа) для перенаправления транзакций SPI к памяти flash. Если указан файл, то запускается программирование указанного битового файла (bitfile) в главную цель JTAG (обычно это микросхема FPGA).
-R
Посылает команду реконфигурирования в целевое устройство (XCV, XCF, XCFP для переконфигурирования подключенного устройства FPGA или напрямую XC3S, XC6S, XC2V).
-m mapdir
Задает искать map-файлы XC2C в указанной директории. Map-файлы требуются для обработки файлов JEDEC при программировании CPLD. Если опция не указана, то по умолчанию используется каталог из переменной окружения $XC_MAPDIR.
-d /dev/parportN
Задает параллельный порт, через который подключен кабель. Если не указано, то по умолчанию используется переменная окружения $XCPORT или /dev/parport0. Опция используется только типа кабеля pp.
-s serialnum
Задает использовать устройство USB с указанной строкой серийного номера. Эта опция нужна, когда к хосту одновременно подключено несколько адаптеров одинакового типа.
-L
Задает использовать libFTD2XX вместо libftdi для получения доступа к кабелям на основе чипа FTDI.
-D
Выполняет дамп базы данных устройств (device database) и базы данных кабелей (cable database) в файлы devlist.txt и cablelist.txt, и записывает эти файлы в текущую директорию. Если файл уже существует, то xc3sprog пытается генерировать уникальное имя файла на основе добавления к имени увеличивающегося числа.
-X opt[,opt...]
Устанавливает режим конфигурации для устройств XCFnnP PROM. Конфигурирование из XCFnnP PROM может быть реализовано в нескольких режимах, в зависимости от разводки между XCFnnP и FPGA. По умолчанию xc3sprog подготавливает устройства XCFnnP для подчиненного последовательного обмена, slave serial mode (FPGA работает как главное устройство, master serial mode).
Чтобы поменять эти установки по умолчанию, укажите список опций с разделителем в виде запятой. Допустимы следующие опции:
master XCFnnP выступает как master (FPGA как slave)
slave XCFnnP выступает как slave (FPGA как master, это установка по умолчанию)
parallel параллельная шина данных конфигурации
serial последовательная линия данных конфигурации (по умолчанию)
extclk использовать внешние такты в режиме master
intclk использовать внутренние такты в режиме master
fastclk использовать быстрые внутренние такты
slowclk использовать медленные внутренние такты
-v
Разрешить подробный вывод.
-h
Вывести текст подсказки.
[СПЕЦИФИКАЦИЯ ВЫПОЛНЯЕМЫХ ДЕЙСТВИЙ]
Может быть задано одно или большее количество действий. Каждое действие состоит из имени файла, за которым опционально идут атрибуты в форме filename:action:offset:style:length
filename
Файл, который записывается в устройство, или файл для данных, которые были прочитаны из устройства.
action
Одна буква, которая показывает, что нужно выполнить - запись (write), чтение (read), или проверку (verify) устройства. Если не указано, то по умолчанию подразумевается действие 'w'.
w стереть устройство, затем записать данные из файла, и затем проверить.
W записать с автоматическим стиранием по одному сектору, и проверить.
v проверить содержимое устройства с содержимым файла.
r чтение из устройства и запись в файл (без перезаписи существующего файла).
R чтение из устройства и запись в файл (если файл существует, то он будет перезаписан).
offset
Байтовое смещение внутри устройства, откуда должно начаться программирование/чтение. Поддерживается только для устройств SPI, XCFnnS и XMEGA.
style
Задает формат файла.
BIT формат Xilinx .BIT. Используется по умолчанию для устройств FPGA, XCF и SPI.
BIN сырой двоичный файл.
BPI сырой двоичный файл без реверса потока бит (Raw binary file not bit reversed).
MCS файл Xilinx .MCS.
IHEX формат Intel HEX. Также используется Xilinx PROMGEN, когда записываются файлы MCS. По умолчанию применяется для микроконтроллеров Atmel XMEGA.
HEXRAW сырые данные в виде последовательности шестнадцатеричных цифр.
JEDEC файл по умолчанию для устройств CPLD.
length
Количество байт для программирования/чтения. Поддерживается для устройств SPI, XCFnnS и XMEGA.
[БАЗА ДАННЫХ ПОДДЕРЖИВАЕМЫХ УСТРОЙСТВ (DEVICE DATABASE)]
Содержит список поддерживаемых устройств, программируемых/считываемых через JTAG. Когда утилита xc3sprog запускается, она сканирует цепочку JTAG, чтобы распознать все подключенные к ней устройства. База данных устройств используется для привязки 32-битных кодов ID устройств в понятным для человека именам, чтобы иметь базовое представление о том, как работать с программируемым устройством, или как минимум как пропустить его.
База данных устройств по умолчанию компилируется из тела исполняемого файла утилиты xc3sprog. При выполнении делается попытка загрузить эту базу данных из файла. Если определена переменная окружения $XCDB, то она задает имя файла базы данных устройств, иначе будет прочитан файл devlist.txt, находящийся в текущей директории. Если файл базы данных вообще не найден, то будет использоваться внутренняя база, которая задается в момент компиляции утилиты (находится в теле исполняемого файла).
Если устройство пока не известно, то встроенный список может быть сброшен в файл (с помощью опции -D). После этого редактированием этого файла может быть добавлена информация о неизвестном устройстве, и при следующем запуске xc3sprog будет считываться и использоваться этот новый список базы данных устройств.
[БАЗА ДАННЫХ ПОДДЕРЖИВАЕМЫХ КАБЕЛЕЙ JTAG (CABLE DATABASE)]
Содержит список адаптеров JTAG (кабелей), с которыми может работать xc3sprog. Каждый тип кабеля идентифицируется коротким мнемоническим именем (label, метка), таким как pp, ftdijtag, xpc и т. д. База данных привязывает label к параметрам, используемым для доступа к аппаратуре кабеля.
База данных кабелей по умолчанию компилируется в тело исполняемого файла xc3sprog. Также при запуске xc3sprog делается попытка прочитать эту базу из внешнего файла. Если определена переменная окружения $CABLEDB, то она задает имя файла базы данных кабелей, иначе будет прочитан файл cablelist.txt, находящийся в текущей директории. Если файл базы данных вообще не найден, то будет использоваться внутренняя база, которая задается в момент компиляции утилиты (находится в теле исполняемого файла).
Если подтип кабеля (например, с другим сочетанием идентификаторов VID/PID) пока не известен, то может быть сброшен файл встроенный список кабелей (опцией -D), информация о новом кабеле может быть добавлена редактированием файла, после чего этот новый файл будет считываться и использоваться при запусках утилиты xc3sprog.
База данных кабелей это простой текстовый файл, где каждая строка содержит описание одного кабеля. Строка состоит из псевдонима для кабеля, который используется вместе с опцией -c, базового типа кабеля, максимально допустимой частоты тактов JTAG и необязательной строки опций.
Для устройств FTDI строка опций содержит идентификатор вендора USB (USB vendor ID, VID), идентификатор продукта USB (USB product ID, PID), строку описания устройства USB, канал FTDI для интерфейса JTAG, и возможно дополнительные команды для установки других выводов помимо выводов JTAG. Например, могут использоваться сигналы для подключения некоторых буферов. Если устройство JTAG использует значения VID/PID по умолчанию для чипов FTDI, то стока описания устройства USB (USB device description string) важна для того, чтобы отделить Ваше устройство JTAG от других случайно подключенных устройств FTDI, которые имеют такие же идентификаторы VID/PID.
[ПРИМЕРЫ]
Покажет список устройств JTAG, подключенных к кабелю JTAG параллельного порта.
xc3sprog -c ftdijtag -v -p 0 design.bit
Программирует указанный bitfile в первое устройство (position 0) цепочки JTAG. Используется кабель USB JTAG на основе чипа FTDI. Будет отображена подробная информация о выполнении процесса программирования.
Проверка целостности (работоспособности) цепочки JTAG.
xc3sprog -c xpc -p 1 dump.bit:r
Читает содержимое устройства JTAG в позиции 1 цепочки JTAG, и записывает прочитанные данные в файл формата Xilinx .BIT. Используется кабель Xilinx USB programmer.
xc3sprog -c cable -Ibscan_spi/xc3s50an.bit design.bit
Загрузит файл xc3s50an.bit в микросхему FPGA, находящуюся в позиции 0 цепочки JTAG. Затем программируется файл design.bit в память ISF микросхемы FPGA.
xc3sprog -c cable -I image.bit:w:0x10000
Программируется файл образа в память SPI, подключенную к FPGA, начиная с байтового смещения 0x10000. Соответствующий файл bscan_spi должен быть уже загружен в FPGA, чтобы FPGA работала мостом между кабелем JTAG и шиной SPI.
[РАБОЧЕЕ ОКРУЖЕНИЕ (ENVIRONMENT)]
Здесь приведено описание переменных окружения, используемых утилитой xc3sprog.
XCDB имя файла, который используется как база данных программируемых устройств. По умолчанию это файл devlist.txt, если он находится в текущей директории, и переменная окружения XCDB не указана (либо не найден файл, указанный этой переменной).
CABLEDB имя файла, который используется как база данных адаптеров (кабелей) JTAG. По умолчанию это файл cablelist.txt, если он находится в текущей директории, и переменная окружения CABLEDB не указана (либо не найден файл, указанный этой переменной).
XCPORT задает устройство параллельного порта, которое используется для кабеля JTAG типа pp. По умолчанию будет использовано устройство /dev/parport0. Эта установка может быть изменена опцией командной строки -d.
XC_MAPDIR директория по умолчанию для поиска map-файлов XC2C. Эта установка может быть изменена опцией командной строки -m.
JTAG_DEBUG если переменная указана, то лог операций JTAG будет записан в файл с этим именем.
FTDI_DEBUG если задано, то лог обмена с устройством FTDI записывается в файл с этим именем. Используется только для кабелей на основе чипов FTDI.
XPC_DEBUG если переменная задана, то лог обмена с программатором XPC записывается в файл с этим именем. Применяется только для кабелей, основанных на XPC.
SPI_DEBUG если переменная указана, то лог операций SPI записывается в файл с этим именем. Используется в режиме ISF.
PDI_DEBUG если переменная указана, то лог операций PDI записывается в файл с этим именем. Используется только при программировании микроконтроллеров Atmel XMega.
[ФАЙЛЫ]
devlist.txt база данных устройств, содержащая список известных целевых устройств JTAG. По умолчанию этот файл ищется в текущей директории, или из места на диске, на которое указывает переменная окружения XCDB. Если указанный файл не найден, то используется внутренняя версия базы данных, которая задается в момент компилирования утилиты xc3sprog.
cablelist.txt база данных адаптеров (кабелей) JTAG, содержащая список известных типов кабелей JTAG. По умолчанию этот файл ищется в текущей директории, или из места на диске, на которое указывает переменная окружения CABLEDB. Если указанный файл не найден, то используется внутренняя версия базы данных, которая задается в момент компилирования утилиты xc3sprog.