Перейти к содержанию
    

PCI Интерфейс на ПЛИС

Если не хочется использовать WinDriver, с его готовым драйвером Kernel-уровня, то возьмите KernelDriver (той же фирмы Jungo) и напишите полностью свой драйвер - с помощью Wizard не представляет никакой сложности, при условии что Вы все-таки владеете некими зачатками программирования.

Для этого Вам понадобится Jungo Kernel Driver + Windows 2003 DDK. Здесь на Ftp все это есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А насколько это сложно с "програмной" точки зрения ? Кто нибудь писал свой драйвер на PCI ? Нужно будет просто писать/читать несколько регистров как максимум делать это по прерыванию. Готовые решения вроде WinDriver и т.п использовать не хотелось бы. Поделитесь впечатлениями.....

Я писАл. Под линукс. WinDriver... выкинул эту бяку. Драйвер char-устройства (для платы ЦАП/АЦП, bus master) пишется за пол-недели. С драйвером сетевого устройства сейчас сижу. Спустя 2 месяца начинает работать (долго постигал тонкости сетевой подсистемы линукса).

Лично моё мнение - написание драйверов достаточно простая и тривиальная задача. По крайней мере - для линукса.

Гораздо сложнее сделать само устройство и программу работы с ним :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

WinDriver/KernelDriver не хочется использовать только по одной причине - у Заказчика возникнет вопрос: "Куплен ли он официально?" Дело все в том что все ПО которое входит в комплект поставки за должно быть лицензионным даже винда на копьютер с которым все это поставляется покупается официально. Но в любом случае спасибо большое за информацию о ориентировочных сроках - хоть какая то информация для планирования есть !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу задать Уважаемой публике пару вопросов.

Вопрос №1 к ЯдроПисателям:

Не встречал ли кто исходники хорошего TestBench'а для шины на VHDL? Типа как компилёные библиотеки в корке от PLDA.

Вопрос №2 к ДровоПисателям:

Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT? Хотелось бы услышать что-нибудь из практического опыта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT?
На моей махарайке прерывания обслуживались так: драйвер, когда получал от винды управление по приходу прерывания - эти прерывания запрещал, и взводил событие. Приложение, проснувшись по этому событию - в конце своей работы прерывание разрешало. Поэтому вопрос о максимальной частоте прерываний закрвался автоматически - "лишние" прерывания просто не обслуживались, а количество работы, которое необходимо проделать по прерыванию, определяло приложение. Частота прерывний у нас не превышала нескольких десятков Гц в худшем случае.

Максимальная частота прерываний, ИМХО, ограничена временем обработки прервания драйвером. Реакция на них, насколько я понял из бесед с программёрами, минимальна, ибо обслуживаются они на каком-то там высоком уровне привелегий, и если в этот момент не обслуживаются другие прервания - всё происходит практически мгновенно. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу немного пояснить свою траблу. Задача следущая: извне поступает информация, прореживается, накапливается и передаётся в шину, причём хотелось бы передавать её по внешнему событию (условно - шпиндель переместился на 3мм, а это происходит раз в ~ 80 uS ;-). Что касаемо соотношения входного потока и слива результатов в шину, то это примерно 100 к 1, накапливаем 120-150 uS передаём 1-1.2 uS (PCI/66/32). Так вот мои программеры говроят:"Ты накопляй её полдня или хотя бы 10-100 mS, а потом мы заберём, а чаще ВИНДА не успевает и усё виснет", но буфер тоже не резиновый, хотя прерывать можно и на 8, 16 ... событие. Так вот мне хотелось бы знать кто мне тут мозги парит, и где компромис.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну уж не знаю, кому верить. Наверняка покажет только эксперимент.

Похоже, что Вам плясать нужно от размеров буфера. Заполнился на половину (примерно), и тогда сливать.

Драйвер сами пишите или используете нечто готовое типа ВыньДривер? В последнем случае заморочки по быстодействию могут иметь место, причём фиг что сделаешь. :( Наши то программёры напряглись и написали свой, избавив меня от кучи проблем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PhilipS

Windows 2003 DDK не требует никакого лицензирования и поставлялся Microsoft бесплатно - только оплатить 25 $ за доставку. В нем много уже готовых заготовок для разного вида драйверов, на основе которых можно сделать свой и никаких заморочек с лицензированием. Да и Jungo Kernel Driver выдает исходную заготовку, которая в дальнешем компилируется Windows 2003 DDK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если делаете Target без Burst'а то задача не такая уж и сложная.

 

А если с Burst ом, то намного сложнее получается? За счет чего?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сам не програмист, но стал свидетелем того как человек понимающий в этом деле не многим более меня, в частности что такое Visual Studio, написал драйвер обеспечивающий доступ к портам, примерно за 1 месяц. Из этого следует что стоит только захотеть. :excl:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT?
На моей махарайке прерывания обслуживались так: драйвер, когда получал от винды управление по приходу прерывания - эти прерывания запрещал, и взводил событие. Приложение, проснувшись по этому событию - в конце своей работы прерывание разрешало. Поэтому вопрос о максимальной частоте прерываний закрвался автоматически - "лишние" прерывания просто не обслуживались, а количество работы, которое необходимо проделать по прерыванию, определяло приложение. Частота прерывний у нас не превышала нескольких десятков Гц в худшем случае.

Максимальная частота прерываний, ИМХО, ограничена временем обработки прервания драйвером. Реакция на них, насколько я понял из бесед с программёрами, минимальна, ибо обслуживаются они на каком-то там высоком уровне привелегий, и если в этот момент не обслуживаются другие прервания - всё происходит практически мгновенно. :)

 

Капец!!! С таким же успехом можно сделать в апликации бесконечный цикл со вставленным туда например Sleep(10) и не пользовать никаких прерываний

Но зато гении дровописатели очень напрягались

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При первой разработке PCI устройства Я вообще начал с PLX9052, потом создал другую плату уже л на Альтеровской корке 1999г. Использовал ACEX. Новый альтеровский софт 3.2.0 так и не впихнул в кристал, машина зависала. Корка от PLDA 7.0.1 пошла на этой же плате.

7.0.2 не смог дешифрировать.

 

А вообще удачи в начинаниях.

Особенно если для науки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...