July 11, 2011

ДОУ Хакатон — Львов

    Есть такая штука как Украинское сообщество программистов. Несмотря на то, что сообществу уже 6 лет, узнал я о нем всего пару недель назад. Этим летом сообществом стали проводиться так называемые "Хакатоны". Они уже прошли в Киеве, Одессе и Львове. На очереди Харьков и Днепропетровск.
    На этих выходных я был одним из 6-7-ми десятков тех, кто побывал на хакатоне во Львове. Со мной было еще двое друзей. О цели проведения самого мероприятия возьму цитату прямо с сайта: "Цель — написать работающее приложение или хак и продемонстрировать его остальным". Хочется отметить, что целью является именно само написание, а не результат. Вся суть задумки в том, чтобы участники получили удовольствие от тех вещей, которыми они занимаются, показали их остальным, пообщались и при желании завели себе новых знакомых. Делать можно всё, что угодно, связанное с ИТ. Использовать можно любую платформу, язык, фреймворк. В общем, всё, что душе угодно. Главная сложность - это выбор (вернее, придумывание) такой задачи, которую можно было бы реализовать за 24 часа, после чего можно подать заявку на демонстрацию своего проекта. Принимаются как готовые проекты, так и протипы, или даже недописки. В общем, любая проделанная работа. Работать можно с нуля, а можно продолжать какой-то свой проект. Главное показать именно то, что было сделано за время проведения хакатона. Исходники можно раскрывать, а можно и не раскрывать. После завершения конкурса проходит демонстрация проектов, которая заканчивается голосованием за лучшие 3 проекта. Участие в голосовании могут принимать как сами участники так и люди, пришедшие просто посмотреть на это действо. Призы и сувениры получат в любом случае все.
    Для того, чтобы стать участником, необходимо зарегистрироваться. Это бесплатно и небольно: достаточно просто оставить комментарий под темой, указав своё имя и фамилию, или список своей команды. Денег никто ни за что не берет. Кстати, о командах. Можно приезжать/приходить самому или с кем-то и работать над каким-то проектом. Можно добавлять к себе в команду кого-то еще сразу на месте, или самому к кому-то присоединиться. Далее идет озвучка того, что будут делать команды. В этот раз получилось так, что озвучивали те, кто сильно хотел озвучить, взять к себе в команду или присоединиться к кому-то. Послу этого можно свалить в офисы, предоставляемые фирмой-спонсором, для того, чтобы начинать работу, а можно и остаться на просмотр и прослушку докладов (а-ля конференция). Доклад может подготовить любой желающий на любую ИТ-тему. Регламент - 5-10 минут. В последующие 24 часа можно заниматься чем угодно: работать над проектом, играть на x-box'e, PS'e, гитаре, рубиться в настольный теннис/футбол, спать, ждать рассвет или просто смотреть в потолок. Еду предоставляют и наесться можно, но, если аппетит не спит, то можно и с собой что-то взять. Не знаю, как там было раньше, но в этот раз было также полное изобилие кваса (аж неколоко бочек), воды, кофе, сахара, коробки сухарей (хороших, без химии) и всяких энергетиков. Короче, хватает всего на случай, если голова от мыслей перегреется или остынет. 
    Наша команда хотела сначала воплотить одну идею (не разглашается), но по некоторым обстоятельствам пришлось от неё отказаться. В итоге занялись работой над проектом, который я сейчас разрабатываю. На демострацию записались последними - последними и показыли. Было 3 ноута и демонстрация сетевой части приложения. Т.к. времени было мало и проектор был один, то высветить идею и работу качественно не удалось. По-моему многие просто не поняли, что мы делали вообще. Но это нисколько не печалит, т.к. проект реальный (хоть и основан на личном энтузиазме) и до этого было проделано слишком много работы, чтобы впадать в уныние. Главное то, что было хорошо, интересно, весело. Особенно интересно было посмотреть на людей-не_студентов и посмотреть, как проходит работа в жизненной и неформальной обстановке. Ну и ещё послушать их на афтерпати. 
    Не знаю, о чем хотелось написать, поэтому ниже выложу несколько фоток с самого хакатона. Так же перед началом мероприятия наша команда успела часов 5 полазить по Львову и осмотреться. Красивый, интересный и уютный город. Понравился как Львов, так и люди в нём. Во время прогулки "подцепили" какого-то "экскурсовода" по имени Мартин (в местном варианте - Мартын). Дядька интересный и расказывал тоже интересно, демонстрируя свои знания местной истории. За 40 грн с человека поводил нас часик по центру. Нам терять в любом случае было нечего и все остались довольны. 

Некоторые фотки с хакатона ниже. Официальный отчет [здесь].










    Огранизаторам и спонсорам спасибо!!!

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

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