реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Вопрос по PCIe и winxp?, Как получить доступ к железу?
inco
сообщение Jun 19 2012, 09:34
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Есть демоплата от Альтеры с коркой PCIe. Переделал их проект под себя немного.

Поставил на xp драйвер giveo.sys доступа к портам. Конфигурировать плату с PCIe получается. Все регистры PCIe
настраиваются правильно.

Теперь прописал в регистре BAR[0] адрес памяти для платы по которому хочу в неё писать. Писать хочу просто побайтно
и смотреть появились ли данные в памяти ПЛИС. И вот тут наступила полная засада!!! Винда напрямую не пускает. Попробовал написать примитивный драйвер. При попытке записи по адресу записанному в BAR[0] получаю синий экран смерти!
Что я делаю не так? Может кто-то по шагам рассказать или у кого-то есть пример, как это сделать со стороны персоналки.

Никакие драйвера (кроме своей поделки) на плату с ПЛИС в винде не устанавливаю (хотя она просит), хочется просто пописать и почитать данные из ПЛИС по PCIe напрямую. Свой драйвер тоже не устанавливаю, а просто регистрирую и запускаю с помощью kmdManager.
Go to the top of the page
 
+Quote Post
dsmv
сообщение Jun 19 2012, 12:20
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Можно использовать драйвер UNINSYS: http://insys.ru/download/common/setup_uninsys.zip

Что нужно сделать:


1. Определить физический адрес BAR0

2. Преобразовать его в виртуальный адрес в адресном пространстве приложения

Есть примеры:

  • unpci - поиск PCI устройства
  • unmemmap - преобразование физического адреса в виртуальный
Go to the top of the page
 
+Quote Post
inco
сообщение Jun 19 2012, 12:36
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Спасибо большое! Похоже то что надо! Буду разбираться...
Go to the top of the page
 
+Quote Post
_pv
сообщение Jun 19 2012, 13:53
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(dsmv @ Jun 19 2012, 19:20) *
Можно использовать драйвер UNINSYS: http://insys.ru/download/common/setup_uninsys.zip

а нет вот такого же, но чтобы еще х64 и W7?

Go to the top of the page
 
+Quote Post
dsmv
сообщение Jun 21 2012, 09:57
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(_pv @ Jun 19 2012, 16:53) *
а нет вот такого же, но чтобы еще х64 и W7?

Есть новый драйвер - наследник UNINSYS. Называется ISDRV. Есть версии для Win32 и Windows 7 x64


Но он ещё в стадии тестирования. Так что просьба сообщить о результатах использования. Как положительных так и отрицательных.


Прикрепленные файлы
Прикрепленный файл  isdrv.zip ( 346.19 килобайт ) Кол-во скачиваний: 40
 
Go to the top of the page
 
+Quote Post
Flood
сообщение Jun 27 2012, 05:08
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 702
Регистрация: 8-06-06
Пользователь №: 17 871



Платная альтернатива своему драйверу: Windriver от Jungo.
http://www.jungo.com/st/windriver_usb_pci_...t_software.html

Кроме того, для Windows есть программы типа PCITree, PCIScope, позволяющие читать-писать память PCI-устройств.

В отладочных целях, когда нужно просто читать-писать байтики, проще всего делать это под Linux. Драйвер не нужен, от рута можно обращаться к /dev/mem - написать программу с mmap() или вообще использовать hexedit /dev/mem. Текущий BAR вашего устройства можно узнать через lspci.
http://tldp.org/LDP/khg/HyperNews/get/devices/fake.html
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 23:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016