Официальный форум СВД Встраиваемые Системы
28 Март, 2024, 22:12:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: qnx 6.5.0 pci-arinc  (Прочитано 4156 раз)
Aandi
Интересующийся

Сообщений: 3


« : 27 Ноябрь, 2012, 10:07:23 »

Доброго времени суток!
Прошу помощи!
Необходимо разработать программу для тестирования интерфейсных модулей расширения (ИМР), которые выполняют преобразование ряда специальных интерфейсов к системной шине СPCI для осуществления связи с несетевыми абонентами.

- ИМР ARINС 429 по ГОСТ 18977-79 РТМ 1495-75 изм.3 (8 каналов для - входных данных и 8 каналов для выходных данных)
 
- QNX 6.5.0

Есть драйвер. После установки которого в /dev появились две записи PCI429_0 и PCI429_1

Есть тестовый массив с данными.Необходимо его отправить с комп1 на комп2 и!
-получить этот же массив обратно от комп2 на комп1
-else получить нечто другое от комп2 на комп1 и разбираться где косяк.

Каким образом можно отправлять массив данных на компьютер?

#pci -vvv

Class          = Communication (Other)
Vendor ID      = 10b5h, PLX Technology, Inc.
Device ID      = 9030h,  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
PCI index      = 0h
Class Codes    = 078000h
Revision ID    = 0h
Bus number     = 5
Device number  = 0
Function num   = 0
Status Reg     = 290h
Command Reg    = 3h
   I/O space access enabled
   Memory space access enabled
   Bus Master disabled
   Special Cycle operations ignored
   Memory Write and Invalidate disabled
   Palette Snooping disabled
   Parity Error Response disabled
   Data/Address stepping disabled
   SERR# driver disabled
   Fast back-to-back transactions to different agents disabled
   PCI INTx enabled
Header type    = 0h Single-function
BIST           = 0h Build-in-self-test not supported
Latency Timer  = 0h
Cache Line Size= 8h un-cacheable
BAR - 1 [I/O]  = bc00h length 128 enabled
BAR - 2 [I/O]  = b880h length 16 enabled
Subsystem Vendor ID = e1c5h
Subsystem ID        = 201h
Max Lat        = 0ns
Min Gnt        = 0ns
PCI Int Pin    = INT A
Interrupt line = 10
CPU Interrupt  = ah
Capabilities Pointer = 40h
Capability ID        = 1h - Power Management
Capabilities         = 4801h - 0h
Capability ID        = 6h - CompactPCI Hot Swap
Capabilities         = 0h - 80d00003h
Capability ID        = 3h - VPD
Capabilities         = 80d0h - 52373534h
Device Dependent Registers:
0x040:  0148 0148 0000 0000   064c 0000 0300 d080
0x050:  3435 3752 0000 0000   0000 0000 0000 0000
0x060:  0000 0000 0000 0000   0000 0000 0000 0000
...
0x0f0:  0000 0000 0000 0000   0000 0000 0000 0000

Class          = Communication (Other)
Vendor ID      = 10b5h, PLX Technology, Inc.
Device ID      = 9030h,  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
PCI index      = 1h
Class Codes    = 078000h
Revision ID    = 0h
Bus number     = 5
Device number  = 5
Function num   = 0
Status Reg     = 290h
Command Reg    = 3h
   I/O space access enabled
   Memory space access enabled
   Bus Master disabled
   Special Cycle operations ignored
   Memory Write and Invalidate disabled
   Palette Snooping disabled
   Parity Error Response disabled
   Data/Address stepping disabled
   SERR# driver disabled
   Fast back-to-back transactions to different agents disabled
   PCI INTx enabled
Header type    = 0h Single-function
BIST           = 0h Build-in-self-test not supported
Latency Timer  = 0h
Cache Line Size= 8h un-cacheable
BAR - 1 [I/O]  = b800h length 128 enabled
BAR - 2 [I/O]  = b480h length 32 enabled
Subsystem Vendor ID = e1c5h
Subsystem ID        = 5h
Max Lat        = 0ns
Min Gnt        = 0ns
PCI Int Pin    = INT A
Interrupt line = 7
CPU Interrupt  = 7h
Capabilities Pointer = 40h
Capability ID        = 1h - Power Management
Capabilities         = 4801h - 0h
Capability ID        = 6h - CompactPCI Hot Swap
Capabilities         = 0h - 3h
Capability ID        = 3h - VPD
Capabilities         = 0h - 0h
Device Dependent Registers:
0x040:  0148 0148 0000 0000   064c 0000 0300 0000
0x050:  0000 0000 0000 0000   0000 0000 0000 0000
...
0x0f0:  0000 0000 0000 0000   0000 0000 0000 0000

Class          = Communication (Other)
Vendor ID      = 10b5h, PLX Technology, Inc.
Device ID      = 9030h,  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
PCI index      = 2h
Class Codes    = 078000h
Revision ID    = 0h
Bus number     = 5
Device number  = 7
Function num   = 0
Status Reg     = 290h
Command Reg    = 3h
   I/O space access enabled
   Memory space access enabled
   Bus Master disabled
   Special Cycle operations ignored
   Memory Write and Invalidate disabled
   Palette Snooping disabled
   Parity Error Response disabled
   Data/Address stepping disabled
   SERR# driver disabled
   Fast back-to-back transactions to different agents disabled
   PCI INTx enabled
Header type    = 0h Single-function
BIST           = 0h Build-in-self-test not supported
Latency Timer  = 0h
Cache Line Size= 8h un-cacheable
BAR - 1 [I/O]  = b400h length 128 enabled
BAR - 2 [I/O]  = b080h length 16 enabled
Subsystem Vendor ID = e1c5h
Subsystem ID        = 201h
Max Lat        = 0ns
Min Gnt        = 0ns
PCI Int Pin    = INT A
Interrupt line = 6
CPU Interrupt  = 6h
Capabilities Pointer = 40h
Capability ID        = 1h - Power Management
Capabilities         = 4801h - 0h
Capability ID        = 6h - CompactPCI Hot Swap
Capabilities         = 0h - 80d00003h
Capability ID        = 3h - VPD
Capabilities         = 80d0h - 52383534h
Device Dependent Registers:
0x040:  0148 0148 0000 0000   064c 0000 0300 d080
0x050:  3435 3852 0000 0000   0000 0000 0000 0000
0x060:  0000 0000 0000 0000   0000 0000 0000 0000
...
0x0f0:  0000 0000 0000 0000   0000 0000 0000 0000
Записан
Владимир Махилёв
Сотрудник СВД ВС
Старожил

Сообщений: 704



WWW
« Ответ #1 : 27 Ноябрь, 2012, 13:27:36 »

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

Поскольку вы говорите, что у вас уже есть драйвер для данной платы и он создаёт соответствующие устройства в /dev то необходимо в первую очередь разбираться с этим драйвером: изучить документацию, заголовочные файлы, связаться с разработчиком и запросить пример. Без дополнительной информации по драйверу посоветовать ничего не получится.

Записан

Aandi
Интересующийся

Сообщений: 3


« Ответ #2 : 27 Ноябрь, 2012, 16:30:52 »

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

Поскольку вы говорите, что у вас уже есть драйвер для данной платы и он создаёт соответствующие устройства в /dev то необходимо в первую очередь разбираться с этим драйвером: изучить документацию, заголовочные файлы, связаться с разработчиком и запросить пример. Без дополнительной информации по драйверу посоветовать ничего не получится.



http://www.elcus.ru/boards.php?ID=pci429-3-xx#
Вот эта плата, драйвер брал отсюда, пример есть...
Не понимаю каким образом должна осуществляться передача данных.
Записан
Владимир Махилёв
Сотрудник СВД ВС
Старожил

Сообщений: 704



WWW
« Ответ #3 : 27 Ноябрь, 2012, 17:54:27 »

В архиве с драйвером есть и документация (при беглом просмотре - главы 3.3, 3.4) и пример работы с ним. Считаю, что этого более чем достаточно для начала работы.
Записан

Aandi
Интересующийся

Сообщений: 3


« Ответ #4 : 29 Ноябрь, 2012, 11:41:10 »

Что-то как-то не идёт

Поглядите код, пожалуйста

отправляет
Код:
/* For "devctl()" */
#include <devctl.h>
#include <sys/dcmd_chr.h>

/* For "open()" */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

#include "PCI429_3_QNX.h"

union buffer
{
unsigned short int dataInt[0x210 ];
unsigned long int dataUlong[ 0x100];
}  ;
 union buffer  u;

int main(int argc, char *argv[])
{
int hARINC;
int pid;
int i, nbytes;

//***Открытие устройства***
hARINC=open("/dev/PCI429_0",0);
printf (" hARINC = %xh \n", hARINC);

if (hARINC == -1)
return 0;
//***Передача драйверу идентификатора процесса***
pid = getpid();
devctl(hARINC,pci429_setEvent , &pid , sizeof( pid ), NULL);

//Первоначальная настройка параметров адаптера
devctl(hARINC, pci429_RESET , &u , 2, NULL);
printf (" rid = %xh   \n", u.dataInt[0] );


//***Инициализация адаптера
u.dataInt[0] = 0xf88;
u.dataInt[1] = 0;
for (i=0; i<16; i++) u.dataInt[2+i] = 2;
devctl(hARINC, pci429_INIT , &u ,36, NULL);


//***Подготовка буфера выходных каналов (файловый режим)
u.dataInt[0] = atoi(argv[1]);
u.dataInt[1] = 1;
u.dataInt[2] = 255;
u.dataInt[3] = 1;
u.dataInt[4] = 0;
u.dataInt[5] = 0;
u.dataInt[6] = 0;
u.dataInt[7] = 0x55;

nbytes = (7+1)*2;
devctl(hARINC, pci429_TAB_SO_F , &u , nbytes, NULL);


//***Запись выходного параметра(файловый режим вых. канала)
u.dataInt[0] = atoi(argv[1]);
u.dataInt[1] = 1;
for (i=1; i<=0x100; i++)
{
u.dataInt[2] = i;
u.dataUlong[2] =((i-1)&0xff)|((4)<<8)|(((~(i-1))&0xff)<<16)|(((~4)&0xff)<<24);
devctl(hARINC,pci429_WRITE_PRM_F, &u , 12, NULL);
//printf (" %d %8x \n",u.dataInt[2], u.dataUlong[2] );
}


//***Пуск выходного канала
u.dataInt[0] = atoi(argv[1]);
u.dataInt[1] = 0x0;
u.dataInt[2] = 0;
devctl(hARINC, pci429_puskSO , &u , 6, NULL);
printf ("\n---> %d \n", u.dataInt[0] );



//Останов вых. канала
  u.dataInt[0] = atoi(argv[1]);
  devctl(hARINC, pci429_stopSO , &u , 2, NULL);

//Останов адаптера
  devctl(hARINC, pci429_STOP , NULL , 0, NULL);


//***Закрытие устройства***
close(hARINC);

return 1;
}

прием
Код:
/* For "devctl()" */
#include <devctl.h>
#include <sys/dcmd_chr.h>

/* For "open()" */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

#include "PCI429_3_QNX.h"

union buffer
{
unsigned short int dataInt[0x210 ];
unsigned long int dataUlong[ 0x100];
}  ;
 union buffer  u;

int main(int argc, char *argv[])
{
int hARINC;
int pid;
int i, nbytes;

//***Открытие устройства***
hARINC=open("/dev/PCI429_0",0);
printf (" hARINC = %xh \n", hARINC);

if (hARINC == -1)
return 0;
//***Передача драйверу идентификатора процесса***
pid = getpid();
devctl(hARINC,pci429_setEvent , &pid , sizeof( pid ), NULL);

//Первоначальная настройка параметров адаптера
devctl(hARINC, pci429_RESET , &u , 2, NULL);
printf (" rid = %xh   \n", u.dataInt[0] );

//***Инициализация адаптера
u.dataInt[0] = 0xf88;
u.dataInt[1] = 0;
for (i=0; i<16; i++) u.dataInt[2+i] = 2;
devctl(hARINC, pci429_INIT , &u ,36, NULL);

//***Подготовка буфера входного канала для режима ПСС
    u.dataInt[0] = atoi(argv[1]);
u.dataInt[1] = 2;
u.dataInt[2] = 0;
u.dataInt[3] = 0;
u.dataInt[4] = 0x100;
for (i=0; i<0x100; i++)
u.dataInt[5+i] = i;

nbytes =(5+0x100)*2;
devctl(hARINC, pci429_TAB_SI_SS , &u , nbytes, NULL);
printf ("\n---> %d \n", u.dataInt[0] );


//Пуск входного канала
u.dataInt[0] = atoi(argv[1]);
u.dataInt[1] = 0xb2;
devctl(hARINC, pci429_puskSI , &u , 4, NULL);
printf ("\n---> %d \n", u.dataInt[0] );

//Чтение входного параметра в защищенном режиме
for (i1=0; i1<0x2; i1++)
{
for (i=0; i<0x100; i++)
{
u.dataInt[0] = atoi(argv[1]);
u.dataInt[1] = 2;
u.dataInt[2] = i;
devctl(hARINC, pci429_READ_PRM_SS_nc, &u , 6, NULL);
printf (" %8x ", u.dataUlong[0] );
}
printf ("\n" );
}

//Останов входного канала
u.dataInt[0] = atoi(argv[1]);
devctl(hARINC, pci429_stopSI , &u , 2, NULL);


//Останов адаптера
devctl(hARINC, pci429_STOP , NULL , 0, NULL);


//***Закрытие устройства***
close(hARINC);

return 1;
}


Записан
Андрей Сеньков
Администратор
Ветеран

Сообщений: 339



WWW
« Ответ #5 : 30 Ноябрь, 2012, 13:32:25 »

Что-то как-то не идёт

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

Поскольку мы не являемся разработчиком драйвера и не обладаем аналогичным оборудование, то можем порекомендовать обратиться за технической поддержкой в фирму "Элкус".
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

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

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

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