|
PCI Интерфейс на ПЛИС, Сложно ли реализовать... |
|
|
|
Feb 8 2005, 15:32
|
Местный
  
Группа: Свой
Сообщений: 376
Регистрация: 30-06-04
Из: Moskow
Пользователь №: 218

|
Цитата(PhilipS @ Feb 8 2005, 13:30) А насколько это сложно с "програмной" точки зрения ? Кто нибудь писал свой драйвер на PCI ? Нужно будет просто писать/читать несколько регистров как максимум делать это по прерыванию. Готовые решения вроде WinDriver и т.п использовать не хотелось бы. Поделитесь впечатлениями..... Я писАл. Под линукс. WinDriver... выкинул эту бяку. Драйвер char-устройства (для платы ЦАП/АЦП, bus master) пишется за пол-недели. С драйвером сетевого устройства сейчас сижу. Спустя 2 месяца начинает работать (долго постигал тонкости сетевой подсистемы линукса). Лично моё мнение - написание драйверов достаточно простая и тривиальная задача. По крайней мере - для линукса. Гораздо сложнее сделать само устройство и программу работы с ним  .
--------------------
serpents on the way to paradise - dying for love, fighting for ages.
|
|
|
|
|
Feb 9 2005, 09:29
|
Участник

Группа: Новичок
Сообщений: 48
Регистрация: 11-01-05
Из: Минск
Пользователь №: 1 879

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

Местный
  
Группа: Свой
Сообщений: 272
Регистрация: 17-01-05
Из: Ростов-на-Дону
Пользователь №: 2 018

|
Цитата Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT? На моей махарайке прерывания обслуживались так: драйвер, когда получал от винды управление по приходу прерывания - эти прерывания запрещал, и взводил событие. Приложение, проснувшись по этому событию - в конце своей работы прерывание разрешало. Поэтому вопрос о максимальной частоте прерываний закрвался автоматически - "лишние" прерывания просто не обслуживались, а количество работы, которое необходимо проделать по прерыванию, определяло приложение. Частота прерывний у нас не превышала нескольких десятков Гц в худшем случае. Максимальная частота прерываний, ИМХО, ограничена временем обработки прервания драйвером. Реакция на них, насколько я понял из бесед с программёрами, минимальна, ибо обслуживаются они на каком-то там высоком уровне привелегий, и если в этот момент не обслуживаются другие прервания - всё происходит практически мгновенно.
--------------------
/* Всё хорошо в меру. */
|
|
|
|
|
Feb 9 2005, 12:46
|

Участник

Группа: Свой
Сообщений: 33
Регистрация: 23-06-04
Из: г. Рязань
Пользователь №: 131

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

Местный
  
Группа: Свой
Сообщений: 272
Регистрация: 17-01-05
Из: Ростов-на-Дону
Пользователь №: 2 018

|
Ну уж не знаю, кому верить. Наверняка покажет только эксперимент. Похоже, что Вам плясать нужно от размеров буфера. Заполнился на половину (примерно), и тогда сливать. Драйвер сами пишите или используете нечто готовое типа ВыньДривер? В последнем случае заморочки по быстодействию могут иметь место, причём фиг что сделаешь.  Наши то программёры напряглись и написали свой, избавив меня от кучи проблем.
--------------------
/* Всё хорошо в меру. */
|
|
|
|
|
Jun 16 2005, 10:11
|
Местный
  
Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832

|
Цитата(Vitus @ Jan 27 2005, 11:46) Если делаете Target без Burst'а то задача не такая уж и сложная. А если с Burst ом, то намного сложнее получается? За счет чего?
|
|
|
|
|
Jun 18 2005, 20:24
|
Группа: Новичок
Сообщений: 1
Регистрация: 18-06-05
Пользователь №: 6 124

|
Сам не програмист, но стал свидетелем того как человек понимающий в этом деле не многим более меня, в частности что такое Visual Studio, написал драйвер обеспечивающий доступ к портам, примерно за 1 месяц. Из этого следует что стоит только захотеть.
|
|
|
|
|
Jun 20 2005, 05:38
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 7-07-04
Пользователь №: 284

|
Цитата(Vitёk @ Feb 9 2005, 14:47) Цитата Как часто (mS, uS, ... pS ;-) можно прерывать шину под WinNT? На моей махарайке прерывания обслуживались так: драйвер, когда получал от винды управление по приходу прерывания - эти прерывания запрещал, и взводил событие. Приложение, проснувшись по этому событию - в конце своей работы прерывание разрешало. Поэтому вопрос о максимальной частоте прерываний закрвался автоматически - "лишние" прерывания просто не обслуживались, а количество работы, которое необходимо проделать по прерыванию, определяло приложение. Частота прерывний у нас не превышала нескольких десятков Гц в худшем случае. Максимальная частота прерываний, ИМХО, ограничена временем обработки прервания драйвером. Реакция на них, насколько я понял из бесед с программёрами, минимальна, ибо обслуживаются они на каком-то там высоком уровне привелегий, и если в этот момент не обслуживаются другие прервания - всё происходит практически мгновенно.  Капец!!! С таким же успехом можно сделать в апликации бесконечный цикл со вставленным туда например Sleep(10) и не пользовать никаких прерываний Но зато гении дровописатели очень напрягались
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|