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

Простое PCI устройство корка pci32tlite_oc

Уже давно хотел сделать простое PCI устройстово ввода-вывода для своих нужд.

Сделал тестовую плату. Нормальную корку так и не нашел.

В конце-концов попробовал http://www.opencores.org/projects.cgi/web/pci32tlite_oc

Отзовитесь, проверял кто-нибудь ?

В конце-концов вроде все заработало, target устройство нашлось и windows попросила драйвера...

Программист из меня не очень, но кое-как написал простенький драйвер, который может читать и писать данные по нужному адресу. Это, конечно хорошо, но для моих нужд очень бы еще хотелось чтобы прерывание было по чтению и по записи. Как только начинаю использовать прерывание в драйверах, машина сразу виснет.

Я честно так и не понял когда там сигнал INT должен генериться.

И что ко всем коркам, даже платным драйвера самим писать приходится ?

Может кто эту корку пользовал и может подсказать как с ней правильно работать?

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


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

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

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


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

Если у Вас трудности с программированием, используйте Windriver от Jungo. Это комплектный софт позволяющий программисту полнофункционально работать с PCI устройством из верхнего кольца программирования.

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


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

Пробовал Windriver от Jungo, не понравился он мне совсем. Постоянно его библиотеки с собой таскать приходится плюс иногда выскакивает ошибка-какая-то (что-то там про память, которая не может быть read). Драйвера писал используя Driver Studio, хорошая как мне показалось вещь. Но с примерами там как-то не особо понятно, написано явно не для чайников. Как отлаживать драйвера не понятно совсем. нашел статью в интернете, там какой-то драйвер, кстати тоже для PCI писали, взял код за основу, плюс немного пофантазировал. Прерываний, к сожалению в примере не было :crying:

Спасибо всем ответившим.

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


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

Вообще-то если прерывание не обработать вовремя, то как правило ничего не виснет, просто перестают работать устройства, которые висят на этом же прерывании (их видно если в диспетчере устройств сказать "вид" -> "ресурсы по подключению"). Например, сетевая карта или USB (кстати, по этой причине клавиатура/мышь лучше PS держать а не USB :)). То же касается случая, если вдруг что-то не правильно сделано в FPGA или сгорела нога у микросхемы и сигнал INTA всегда держится в нуле. Правда возможно это зависит от чипсета, так получилось, что у меня почти всегда на отладочной машине стояли разные атлоны и nforce.

 

Виснет часто если записал в чужую память (из драйвера), либо если как-то попортил шину PCI так что другие устройства не могут общаться. (например, сигналы арбитража)

Изменено пользователем vol2003

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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