July 08, 2011

Установка Xilinx ISE

    Скачать свежую версию ISE всегда можно на сайте производителя. 4-го числа я скачал версию 13.1, а вот сегодня (7-го) уже вышла версия 13.2. Качал я на всякий случай выпуск "All Platforms", т.е. с расчетом на то, что оно будет ставиться на винду и на линукс. Да и разница в размере не особо большая. Для того, чтобы скачать, понадобится пройти бесплатную регистрацию. Зарегистрировались, поставили необходимый архив на закачку и пошли по этой ссылке лицензию получать. Из бесплатных продуктов имеется WebPack, поэтому и лицензию получать будем для него. Попав на страницу "Product Licensing", необходимо указать, что нам нужна бесплатная лицензия для WebPack. Сказать точно, где и что вводить не могу, т.к. я уже скачал и для меня эти пункты попросту не высвечиваются. Главное то, что на наш электронный адрес будет выслан файл Xilinx.lic, который понадобится при установке.
    Далее запускаем установку ISE (xsetup для линукс или xsetup.exe для винды). При выборе "Edition to Install" выбираем WebPack. Если ставим под винду, то в следующем окне выбираем "Install Cable Drivers", если же под линукс - то нет. Далее выбираем путь установки. Устанавливаем и по окончанию установки выбираем "Get Free ISE WebPack Licence". Во вкладке "Manage Xilinx Licences" жмём "Copy Licence..." и указываем путь к файлу, присланному нам по почте. Если в linux менеджер не запустится, то необходимо создать в домашней дикертории поддиректорию '.Xilinx' и скопировать файл лицензии в неё:
ls ~/.Xilinx/
Xilinx.lic
    Выполняем инициализацию (32 - для 32-х битной машины):
source /opt/Xilinx/13.1/ISE_DS/settings32.sh
    На этом сама установка заканчивается. Если вы ставили под винду, то при подключении платы Xilinx она должна определиться и винда может предложить поставить драйвера (и к удивлению сама это успешно сделает). 
    Если же Вы ставили для линукс, то осталось немного повозиться с драйверами. Для примера возьмем Ubuntu 10.4. Выполним следующее:
sudo apt-get install fxload
sudo apt-get install libusb libusb-dev
Далее идем по ссылке за драйверами. Перематываем вниз до раздела "Download" и скачиваем "usb-driver-HEAD.tar.gz". В принципе, там сразу лежит readme, но допустим, что мы его не заметили. Распаковываем архим в какую-нибудь директорию (можно и в домашнюю). Далее переходим в неё, компилируем драйвера и копируем получившуюся библиотеку:
cd /home/alex/usb-driver-head/
make
sudo cp  libusb-driver.so  /usr/lib/
    Переходим в папку с исполняемыми файлами нашей ISE:
cd /opt/Xilinx/13.1/ISE_DS/ISE/bin/lin/
    и выполняем установку драйверов программатора:
sudo source setup_pcusb
    Копируем hex-файлы драйверов кабеля в /usr/share:
sudo cp /opt/Xilinx/13.1/ISE_DS/ISE/bin/lin/*.hex  /usr/share
    А так же правила для udev:
sudo cp /opt/Xilinx/13.1/ISE_DS/ISE/bin/lin/xusbdfwu.rules /etc/udev/rules.d/
    Теперь проверим пути к нашим скопированным hex-файлам. Для этого открываем скрипт:
sudo nano /etc/udev/rules.d/xusbdfwu.rules
    и увидим нечто похожее на это:
# version 0003
ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0008", MODE="666"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $tempnode"
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $tempnode"
    Обязательно проверьте, чтобы указанные строках выше пути были достоверными. В противном случае пропишите свои. Узнать точные пути можно проведя банальный поиск:
find /opt/Xilinx/13.1/ISE_DS/ISE/ -name "*.hex"
    Далее даем всем право а выполнение скрипта с правилами:
# Это очень важный момент
sudo chmod +x /etc/udev/rules.d/xusbdfwu.rules
    После данных несложных манипуляций подлючаемые к ПК платы Xilinx должны определяться. Осталась самая малость: пошаманить и iMPACT'ом. Напомню, что выполнив "pwd", мы должны увидеть нечто подобное:
/opt/Xilinx/13.1/ISE_DS/ISE/bin/lin
    Остается скормить iMPACT'у те драйвера, которые мы уже скомпилировали. Это нужно для того, чтобы он не пытался искать виндовые драйвера под линуксом:
sudo mv _impact _impact.bin
sudo nano _impact
    В качестве содержимого оставляем это:
#!/bin/sh
# Preload driver binary 
LD_PRELOAD=libusb-driver.so $0.bin $*
    Далее опять-таки даем всем право а выполнение:
# Это тоже важный момент
sudo chmod +x _impact
    После всего этого и iMPACT должет работать исправно.

    Большое спасибо хотелось бы сказать volodymyr, kruger, DeeZZel за оказанную помощь и содействие.

    Ссылки:
1. XILINX JTAG tools on Linux without proprietary kernel modules
2. Xilinx ISE Webpack 11: Cable Driver Problems

[Если чего-то забыл/пропустил/не учел, пишите, добавим, проверим]

No comments:

Post a Comment