Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: байтбластер в линуксовом квартусе
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
zaratustra
Никак не могу добиться работы байтбластера в suse93. Кто-нибуть юзает байтбластер в линуксе? Хотелось бы уточнить некоторые подробности.

Заодно цепляю немного изменённый драйвер под ядро 2.6. Нажмите для просмотра прикрепленного файла
zaratustra
Пока имеются такие результаты: (если у кого-то есть идеи, просьба прокомментировать логи)

# modprobe byteblaster

Feb 28 12:02:27 sunny kernel: ======== byteblaster init ===========
Feb 28 12:02:27 sunny kernel: byteblaster: attach started
Feb 28 12:02:27 sunny kernel: byteblaster0: using parport0.


# ./jtagconfig --add ByteBlasterMV /dev/byteblaster0

Feb 28 12:04:12 sunny kernel: byteblaster: open started
Feb 28 12:04:12 sunny kernel: byteblaster: check_hardware started
Feb 28 12:04:12 sunny kernel: byteblaster: switch = 6000
Feb 28 12:04:12 sunny kernel: byteblaster: check_hardware OK
Feb 28 12:04:12 sunny kernel: byteblaster: open return OK
Feb 28 12:04:12 sunny kernel: byteblaster: release started
Feb 28 12:04:12 sunny kernel: byteblaster: open started
Feb 28 12:04:12 sunny kernel: byteblaster: check_hardware started
Feb 28 12:04:12 sunny kernel: byteblaster: switch = 6000
Feb 28 12:04:12 sunny kernel: byteblaster: check_hardware OK
Feb 28 12:04:12 sunny kernel: byteblaster: open return OK
Feb 28 12:04:12 sunny kernel: byteblaster: write error (fifo_out)
Feb 28 12:04:12 sunny kernel: 2 WR 10240
Feb 28 12:04:12 sunny kernel: byteblaster: release started
Feb 28 12:04:12 sunny kernel: byteblaster: open started
Feb 28 12:04:12 sunny kernel: byteblaster: check_hardware started
Feb 28 12:04:12 sunny kernel: byteblaster: switch = 6000
Feb 28 12:04:12 sunny kernel: byteblaster: check_hardware OK
Feb 28 12:04:12 sunny kernel: byteblaster: open return OK
Feb 28 12:04:12 sunny kernel: byteblaster: write error (fifo_out)
Feb 28 12:04:12 sunny kernel: 3 WR 10240
Feb 28 12:04:12 sunny kernel: byteblaster: release started


# ./jtagconfig --enum
1) ByteBlasterMV [/dev/byteblaster0]
Unable to read device chain (Communications error)

Feb 28 12:04:54 sunny kernel: byteblaster: open started
Feb 28 12:04:54 sunny kernel: byteblaster: check_hardware started
Feb 28 12:04:54 sunny kernel: byteblaster: switch = 6000
Feb 28 12:04:54 sunny kernel: byteblaster: check_hardware OK
Feb 28 12:04:54 sunny kernel: byteblaster: open return OK
Feb 28 12:04:54 sunny kernel: byteblaster: write error (fifo_out)
Feb 28 12:04:54 sunny kernel: 4 WR 10240
Feb 28 12:04:54 sunny kernel: byteblaster: release started
Feb 28 12:04:54 sunny kernel: byteblaster: open started
Feb 28 12:04:54 sunny kernel: byteblaster: check_hardware started
Feb 28 12:04:54 sunny kernel: byteblaster: switch = 6000
Feb 28 12:04:54 sunny kernel: byteblaster: check_hardware OK
Feb 28 12:04:54 sunny kernel: byteblaster: open return OK
Feb 28 12:04:54 sunny kernel: byteblaster: write error (fifo_out)
Feb 28 12:04:54 sunny kernel: 5 WR 10240
Feb 28 12:04:54 sunny kernel: byteblaster: release started


# ./jtagconfig --enum
1) ByteBlasterMV [/dev/byteblaster0]
Unable to read device chain (JTAG chain broken)

Feb 28 12:05:49 sunny kernel: byteblaster: open started
Feb 28 12:05:49 sunny kernel: byteblaster: check_hardware started
Feb 28 12:05:49 sunny kernel: byteblaster: switch = 6000
Feb 28 12:05:49 sunny kernel: byteblaster: check_hardware OK
Feb 28 12:05:49 sunny kernel: byteblaster: open return OK
Feb 28 12:05:49 sunny kernel: byteblaster: release started
Feb 28 12:05:49 sunny kernel: byteblaster: open started
Feb 28 12:05:49 sunny kernel: byteblaster: check_hardware started
Feb 28 12:05:49 sunny kernel: byteblaster: switch = 6000
Feb 28 12:05:49 sunny kernel: byteblaster: check_hardware OK
Feb 28 12:05:49 sunny kernel: byteblaster: open return OK
Feb 28 12:05:49 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:49 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:49 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl out=7f
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl out=7f
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:50 sunny kernel: byteblaster: release started
Feb 28 12:05:50 sunny kernel: byteblaster: open started
Feb 28 12:05:50 sunny kernel: byteblaster: check_hardware started
Feb 28 12:05:50 sunny kernel: byteblaster: switch = 6000
Feb 28 12:05:50 sunny kernel: byteblaster: check_hardware OK
Feb 28 12:05:50 sunny kernel: byteblaster: open return OK
Feb 28 12:05:50 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl out=7f
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl out=7f
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:51 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:51 sunny kernel: byteblaster: release started
Feb 28 12:05:51 sunny kernel: byteblaster: open started
Feb 28 12:05:51 sunny kernel: byteblaster: check_hardware started
Feb 28 12:05:51 sunny kernel: byteblaster: switch = 6000
Feb 28 12:05:51 sunny kernel: byteblaster: check_hardware OK
Feb 28 12:05:51 sunny kernel: byteblaster: open return OK
Feb 28 12:05:52 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:52 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:52 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:52 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:52 sunny kernel: byteblaster: ioctl out=7f
Feb 28 12:05:52 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:52 sunny kernel: byteblaster: ioctl GET DIRECT
Feb 28 12:05:52 sunny kernel: byteblaster: ioctl out=7e
Feb 28 12:05:52 sunny kernel: byteblaster: ioctl in=1f
Feb 28 12:05:52 sunny kernel: 6 WR 138
Feb 28 12:05:52 sunny kernel: 2 RD 128
Feb 28 12:05:52 sunny kernel: 7 WR 128
Feb 28 12:05:52 sunny kernel: 3 RD 128
Feb 28 12:05:52 sunny kernel: 8 WR 128
Feb 28 12:05:52 sunny kernel: 4 RD 128
Feb 28 12:05:52 sunny kernel: 9 WR 2048
Feb 28 12:05:52 sunny kernel: 5 RD 2042
Feb 28 12:05:52 sunny kernel: 10 WR 2048
Feb 28 12:05:52 sunny kernel: 6 RD 2048
Feb 28 12:05:53 sunny kernel: 11 WR 2048
Feb 28 12:05:53 sunny kernel: 7 RD 2048
Feb 28 12:05:53 sunny kernel: 12 WR 390
Feb 28 12:05:53 sunny kernel: 8 RD 390
Feb 28 12:05:53 sunny kernel: 13 WR 2048
Feb 28 12:05:53 sunny kernel: 9 RD 2048
Feb 28 12:05:53 sunny kernel: 14 WR 2048
Feb 28 12:05:53 sunny kernel: 10 RD 2048
Feb 28 12:05:53 sunny kernel: 15 WR 2048
Feb 28 12:05:53 sunny kernel: 11 RD 2048
Feb 28 12:05:53 sunny kernel: 16 WR 2048
Feb 28 12:05:53 sunny kernel: 12 RD 2048
Feb 28 12:05:53 sunny kernel: 17 WR 2048
Feb 28 12:05:53 sunny kernel: 13 RD 2048
...
Feb 28 12:06:12 sunny kernel: 208 WR 2048
Feb 28 12:06:12 sunny kernel: 203 RD 2048
Feb 28 12:06:12 sunny kernel: 209 WR 2048
Feb 28 12:06:12 sunny kernel: 204 RD 2048
Feb 28 12:06:12 sunny kernel: 210 WR 2048
Feb 28 12:06:12 sunny kernel: 205 RD 2048
Feb 28 12:06:12 sunny kernel: 211 WR 2048
Feb 28 12:06:12 sunny kernel: 206 RD 2048
Feb 28 12:06:12 sunny kernel: 212 WR 2
Feb 28 12:06:12 sunny kernel: byteblaster: release started
zaratustra
Да, забыл ещё один момент. Смотрю скопом, вижу что TCK взводится только один раз.
Harbour
На кой эта мутотень - у меня 2.6.16-rc4 , quartus 5.1 байт бластер работает просто так, без никакого драйвера. ставьте свежий квартус он через ppdev (/dev/parport) работает.
zaratustra
на каком дистрибутиве работает?
что вводите в Hardware setup - ByteBlasterMV и /dev/parport0 ?
покажите что пишет jtagconfig плиз
zaratustra
Мне ответил один товарищ из-за бугра

The ByteblasterMV is not very well supported under Linux. Altera ship a
special ByteblasterMV driver that needs to be compiled against the
currently-running kernel, which _should_ work (I tested it 2 years ago
with Quartus II 4.0, but I don't have a ByteblasterMV anymore).

Вообще-то удивительно что у вас байтбластер работает без этого драйвера. Ведь и в даташите прямо сказано - драйвер нужен.
Harbour
Если внимательно почитать доку на квартус то можно увидеть что где-то в районе 4 версии квартуса действительно был нужен этот каличный драйвер, опосля, кажись с 4.1, квартус напрямую работает с /dev/parportX. Дистр у меня самопальный (похож на слаку) и отношения к работоспособности quartus'а и BB обычно не имеет. Чтобы байтбластер работал обычно нужно :

- загруженные модули parport/parport_pc/ppdev
- r/w доступ к /dev/parportX
- отстутвие запущенных cups/lpd/и прочая мутотень, которая юзает LPT
- отстутсвие запущенной машины vmware

Квартусу тупо говорим BB-II или BB-MV на /dev/parportX и вуаля. У десятка людей все именно так и пашет, причем уже годами.


P.S. Если как-бы совсем плохо - я в свое время переписывался напрямую с альтеровским разработчиком драйвера BBII под linux, это оказалось намного эффективнее чем их дебильный support, могу подкинуть его email, хотя мое imho - у вас какая-то мелкая и вполне решаемая юзеровская трабла.
zaratustra
Я не фанат квартуса, поэтому не следил за его эволюциейwink.gif)) все мои действия по использованию байтбластера полностью соответствуют перечисленным вами, причём всё это я сделал до обращения к альтеровскому саппорту и на форумы. Немного сбивает с толку факт присутствия указанного выше драйвера в составе дистрибутива и ссылки забугорных консультантов, непосредственно связанных с Альтерой, на то, что он должен быть установлен. Чуть позже я проверю его работу на ядре 2.6 и покажу логи правильной работы.

А сейчас внимание, правильный ответ! wink.gif)) на самом деле действительно проблема была смешная - приказал долго жить параллельный порт. После перехода на другой компьютер поставил эксперимент - SUSE 9.3 из коробки, байтбластер в квартусах 4.2sp1 и 5.1 работает через /dev/parport0 без видимых проблем.
zaratustra
Дождался я наконец ответов от альтеровцев. (от того самого Andrew Draper)

...
The recommendation for those using 2.6 kernels is to use /dev/parport0 and not to install /dev/byteblaster.
...

Вопрос закрыт.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.