суббота, 13 сентября 2008 г.

Установка драйверов Xilinx Platform Cable USB в GNU/Linux

В данной заметке я изложу по шагам последовательность действий установки и настройки ПО для поддержки программаторов фирмы Xilinx для ОС GNU/Linux и ПО САПР Xilinx ISE. Все ниже написанное проверялось под ОС Fedora 8. Использовался программатор Xilinx Platform Cable USB ( Model DLC9G ) и ISE версии 10.1 ( SP2 ). Я не рекомендую использовать драйверы windrv, а использовать libusb как промежуточную библиотеку доступа ПО Xilinx к программатору.

Для начала устанавливаем fxload:

$ su
# yum install fxload

fxload - это утилита загрузки прошивки в USB-контроллеры.

Итак, скачиваем, распаковываем и устанавливаем только ту часть пакета, которая необходима для загрузки прошивки:

$ wget ftp://ftp.xilinx.com/pub/utilities/fpga/install_drivers.tar.gz
$ tar xvf install_drivers.tar.gz
$ cd install_drivers/linux_drivers/pcusb
$ su
# ./setup_pcusb

Теперь можно проверить работоспособность программатора - подключаем его к USB и к плате. Проверяем если загорелся зеленый светодиод. Чтобы iMPACT не использовал драйвер windrvr, а использовал библиотеку libusb необходимо установить переменную окружения XIL_IMPACT_USE_LIBUSB в 1.

Я рекомендую ее поместить в .bashrc:

$ echo "export XIL_IMPACT_USE_LIBUSB=1" >> ~/.bashrc

Замечу, что данный прием работает только с ISE версии 10 и выше. Для старых версий (9 и 8) воспользуйтесь следующей ссылкой: http://rmdir.de/~michael/xilinx/.

Теперь проверяем работоспособность iMPACT:

$ . /opt/ise101/ISE/settings64.sh
$ impact&

При создании новго проекта ( create new project ) отключаем автоматическое сканирование ( опцию Configure devices using Boundary-Scan (JTAG) устанавливаем в Enter a Boundary-Scan chain manualy ). В главном меню выбираем - Output -> Cable setup… и в появившемся диалоговом окне устанавливаем Communication Mode в Xilinx USB Cable и жмем Ок. Далее жмем Ctrl+I для запуска сканирования цепочки JTAG. В результате iMPACT должен найти поддерживаемые устройства.

УсЁ! :)

понедельник, 8 сентября 2008 г.

Запуск Xilinx EDK 10.1 на неподдерживаемых дистрибутивах

Если после запуска в EDK 10.1 процесса синтеза у вас возникал следующая ошибка: ERROR:MDT - C_MEM_CAS_LATENCY0 (mpmc) - /opt/ise101/ISE/bin/lin64/unwrapped/xilperl: error while loading shared libraries: libdb-4.1.so: cannot open shared object file: No such file or directory while executing "exec xilperl $perlPath -mpmc3 -enable_ecc [xget_hw_parameter_value $mh..." (procedure "init_control" line 40) Это значит, что скорее всего у вас в системе установлена более новая версия библиотеки Berkeley DB. Устанавливаем старую версию так, чтобы не удалить новую: $ su # cd # wget ftp://ftp.pbone.net/mirror/ftp.centos.org/3.9/os/x86_64/RedHat\ /RPMS/db4-4.1.25-8.1.x86_64.rpm # mkdir db4 && cd db4 # rpm2cpio ../db4-4.1.25-8.1.x86_64.rpm | cpio -id # cp lib64/libdb-4.1.so /usr/lib64/ # ldconfig # cd .. # rm -rf db4 Перезапускам EDK, запускаем синтез и радуемся жизни! :)

среда, 13 августа 2008 г.

Быстрый переход в предыдущий рабочий каталог в bash

Очень часто при работе в shell (bash) необходимо перейти в предыдущую рабочую директорию. Раньше я тупо набивал полный или относительный путь. Недавно задумался: “Может это можно сделать как-то быстрее?” И оказалось - можно, и в придачу давно реализовано в самом bash: [voyt@coruscant ~]$ [voyt@coruscant ~]$ cd /usr/local/ [voyt@coruscant local]$ cd - /home/voyt [voyt@coruscant ~]$ cd - /usr/local [voyt@coruscant local]$ Нашёл в интернете интересное решение - скрипт (точнее набор функций для bash), позволяющий переключаться между всеми каталогами, посещёнными в течении сессии. Ссылка: http://linuxgazette.net/109/marinov.html

вторник, 12 августа 2008 г.

Как запустить VMWare Player или Workstation на GNU/Linux с ядром версии 2.6.25

С выходом новой версии ядра ( 2.6.25.X ) встал вопрос запуска vmware продуктов. После обновления ядра при запуске VMWare появляется примерно следующие ошибки: include/asm/page.h: In function ‘pte_t native_make_pte(pteval_t)’: include/asm/page.h:128: error: expected primary-expression before ‘)’ token include/asm/page.h:128: error: expected ‘;’ before ‘{’ token include/asm/page.h:128: error: expected primary-expression before ‘.’ token include/asm/page.h:128: error: expected `;' before ‘}’ token include/asm/paravirt.h: In function ‘pte_t __pte(pteval_t)’: include/asm/paravirt.h:955: error: expected primary-expression before ‘)’ token include/asm/paravirt.h:955: error: expected ‘;’ before ‘{’ token include/asm/paravirt.h:955: error: expected primary-expression before ‘.’ token include/asm/paravirt.h:955: error: expected `;' before ‘}’ token include/asm/paravirt.h: In function ‘void pmd_clear(pmd_t*)’: include/asm/paravirt.h:1171: warning: missing braces around initializer for ‘pud_t’ include/asm/paravirt.h:1171: warning: missing braces around initializer for ‘pgd_t’ include/asm/paravirt.h:1171: error: cannot convert ‘pud_t’ to ‘pgdval_t’ in initialization make[2]: *** [/tmp/vmware-config2/vmmon-only/common/task.o] Error 1 make[1]: *** [_module_/tmp/vmware-config2/vmmon-only] Error 2 make[1]: Leaving directory `/usr/src/linux-headers-2.6.25-1-686′ make: *** [vmmon.ko] Error 2 make: Leaving directory `/tmp/vmware-config2/vmmon-only’ Unable to build the vmmon module. Итак, вот рецепт:
  1. Качаем обновление http://blog.creonfx.com/temp/vmware-any-any-update-116.tgz
  2. Устанавливаем его ( в конце попросит запустить vmware-config.pl - нажать NO) :
  3. $ su # cd /usr/lib/vmware/modules/source/ # wget http://blog.creonfx.com/temp/vmware-any-any-update-116.tgz # tar xvf vmware-any-any-update-116.tgz # cd vmware-any-any-update-116 # ./runme.pl Естественно нажимаем везде Y для перезаписи файлов.
  4. Качаем обновление http://blog.creonfx.com/temp/vmware-any-any-update-117-very-ALPHA.tgz
  5. Устанавливаем его: $ su # cd /usr/lib/vmware/modules/source/ # wget http://blog.creonfx.com/temp/vmware-any-any-update-117-very-ALPHA.tgz # tar xvf vmware-any-any-update-117-very-ALPHA.tgz # ./vmware-2.6.25.sh
  6. Все. Теперь можно запускать как обычно vmware-config.pl

понедельник, 11 августа 2008 г.

Первая запись

Это первая запись в моем личном блоге. Надеюсь, этот блог не умрет и станет центром моих “творений” ( точнее, наверное, будет сказать - центром скопления результатов моих попыток что-то сотворить в данный период моей жизни ) … P.S. 4 года я откладывал старт своего блога… месяц назад решил, что хватит уже откладывать на потом - пора уже бороться со своей природной ленью. По-моему, блог - это хороший способ борьбы с ленью… по крайне мере мне так кажется на данный момент. Посмотрим, что из этого выйдет.