Официальный форум СВД Встраиваемые Системы
26 Апрель, 2024, 10:13:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Драйвер PCI-карты Hilscher  (Прочитано 1270 раз)
HappyMike
Интересующийся

Сообщений: 4


« : 14 Август, 2017, 10:53:20 »

Привет!
Ткните, пожалуйста, в толковое описание по работе с PCI, или, еще лучше, в исходники.
DDK на QNX.org платный, а за "родной" драйвер для QNX Hilscher хочет 72000р. Но это "кот в мешке".
Придется писать свой драйвер.

Я так понимаю, карту нужно проинициализировать, а потом читать/писать и дергать Watchdog по прерыванию или по таймеру.

Проблема возникла в получении таблицы Dual-Port Memory Layout.
Нужно найти структуру DPM_MEMORY, в ней найти структуру RCSINFO tRcsInfo;
А в RCSINFO уже WatchDog, и т.д.

Сделал:
pci_attach_device

pci_read_config

mmap_device_memory

Получил от mmap_device_memory какой-то указатель, но что в нем лежит - непонятно, возможно, случайный мусор.
Во всяком случае, строки-идентификатора типа "cifX" там не вижу.

Однако, процесс застопорился Sad

Может, кто-то уже решил подобную проблему?
Записан
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #1 : 18 Август, 2017, 12:44:35 »

Здравствуйте!

Вы также обращались к нам по электронной почте, и мы Вам ответили. Кратко отвечу здесь по некоторым вопросам. Для QNX 6.5.0 не требуется специального DDK для разработки драйверов и для шины PCI. Описание и примеры кода присутствует в справочной подсистеме (функции с префиксом pci_). Также отмечу, что для разработки драйвера обычно недостаточно уметь использовать PCI-интерфейс ОС, требуется также спецификация на аппаратные регистры оборудования, описание и размещение таблиц в памяти.
Записан
HappyMike
Интересующийся

Сообщений: 4


« Ответ #2 : 25 Август, 2017, 15:18:09 »

Описания структур есть, но вот как найти правильные смещения я так и не понял.
Записан
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #3 : 28 Август, 2017, 15:54:28 »

Описания структур есть, но вот как найти правильные смещения я так и не понял.

Обычно эта информация есть в спецификации на контроллер.
Записан
HappyMike
Интересующийся

Сообщений: 4


« Ответ #4 : 29 Август, 2017, 08:12:24 »

Однако, искал, но не нашел.
Вся информация от производителя касается только взаимодействия с картой через API драйвера.
Под Windows драйвер бесплатный, есть dll с подробным описанием описанием функций, и все отлично работает, а под QNX, видимо, нужно найти структуры самостоятельно.
Неплохо было бы посмотреть примеры кода по работе с PCI устройствами.

На пример, с видеокартой все просто: задал смещение 0xb8000 и получил прямой доступ в видеопамять; пишешь туда байты и они сразу видны на экране.

   void *ptr;
   int len = 4000; // 80*25*2
   ptr = mmap_device_memory( 0, len, PROT_READ|PROT_WRITE|PROT_NOCACHE, 0, 0xb8000 );
   if ( ptr == MAP_FAILED ) {
       perror( "mmap_device_memory for physical address 0xb8000 failed" );
       exit( EXIT_FAILURE );
   }

   char *aa = "A\15B\11C\31D\3E\7F\15";
   memmove(ptr, aa, 12);  // Вывод прямо в видеопамять разноцветного текста ABCDEF
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 29 Март, 2024, 00:32:27