Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Проблемы с драйверами платы L791

Вы не вошли.

 Поиск | Регистрация | Вход 

Konstantin
17.09.2012 14:31:46
#1

Гость

Проблемы с драйверами платы L791

Здравствуйте.
Проблема в следующем:
   На компьютере установлена система Astra Linux с ядром 2.6.34-3 х86_64. Драйвер скачан с Вашего сайта последний (под ядро 2.6.29). Сборка драйвера прошла успешно, после незначительной доработки (не находил 2-х заголовочных файлов autoconf.h и shced.h). Команда dmesg показывает, что драйвер загружается корректно. Но при попытке запустить тестовый пример из комплекта драйвера с ледующим образом
"./test 0 L780"
выдает ошибку
"CallCreateInstance failed"
Вот отрывок из вывода команды dmesg:

[    8.312274] lcard: Staring LDev driver...
[    8.333108] ldevpcibm 0000:04:04.0: PCI INT A -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
[    8.333111] lcard: found L791 board !!!!
[    8.333113] lcard: Addr[0] - fdaff000 : 4096
[    8.333115] lcard: Addr[1] - 0 : 0
[    8.333116] lcard: Addr[2] - 0 : 0
[    8.333117] lcard: Addr[3] - 0 : 0
[    8.333119] lcard: Addr[4] - 0 : 0
[    8.333120] lcard: Addr[5] - 0 : 0
[    8.333121] lcard: Irq is 11
[    8.333123] lcard: Alloc
[    8.333124] lcard: Slot is 0
[    8.333127] lcard: IRQ is 11
[    8.333128] lcard: Success
[    8.345422] lcard: FLASH  Ser 4D561384 Name L791

Konstantin
18.09.2012 13:21:56
#2

Гость

Re: Проблемы с драйверами платы L791

Проблема разрешилась. В Astra Linux (аналог Debian) необходимо создать ссылку на lcomp.rules в папке /etc/udev/udev.d вида xx-lcomp.rules, где хх - цифры (как я понял, что-то вроде приоритета).

Теперь всплыла другая проблема. Тестовый пример запускается, но работает неправильно. Почему-то в архиве с драйвером нет биоса для L791. Я пробовал задать все остальные по очереди и результат всегда одинаков:

Get IDaqLDevice interface
IDaqLDevice get success
Free IUnknown
OpenLDevice Handle5

Slot parameters
Base    0
BaseL   0
Mem     fdaff000
MemL    1000
Type    13
DSPType 0
Irq     b
Load Bios 1
Plata Test 0

Read FLASH
SerNum       4D561384
BrdName      L791
Rev          A
DspType      NODSP
IsDacPresent c105
Quartz       1008806316550991104

Press any key
alloc size 262144
L791 Buffer size(word): 131072
Pages:             128
IrqStep:           1024
FIFO:              128
Rate:              200

Press any key
shared word 0 0
shared word 0 0
shared word 0 0

Поток, кстати, не закрывается по pthread_join в конце, после цикла.
Подскажите, пожалуйста, в чем может быть проблема? Или хотя бы, в какую сторону копать? Может тут на форуме уже рассматривалась подобная проблема?

18.09.2012 13:47:53
#3

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Проблемы с драйверами платы L791

Konstantin, тут нужен разработчик драйвера и lcomp, он ожидается в понедельник.

Konstantin
19.09.2012 10:08:46
#4

Гость

Re: Проблемы с драйверами платы L791

Хорошо, жду...

Konstantin
21.09.2012 08:56:48
#5

Гость

Re: Проблемы с драйверами платы L791

Я покопался в исходном коде примера и понял, что для L791 платы биос не нужен. Если я правильно все понял, то это из-за BusMaster. Тем не менее, когда я подаю сигнал на Х1 и запускаю test 0 L780 получаю все те же shared word 0 0. Может я что-то не так делаю? Жду Вашего ответа.

24.09.2012 10:21:52
#6

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблемы с драйверами платы L791

Биос не нужен. Какой-то мусор у Вас при чтении флеш платы в части налиия цап и частоты кварца. Она сейчас в Windows нормально работает?

Konstantin
24.09.2012 11:31:11
#7

Гость

Re: Проблемы с драйверами платы L791

Добрый день.
Т.е. биос можно указывать любой?
Насчет мусора, как вы это определили и что там должно быть в идеале?
Плата под Windows не запускалась вообще. Использование OS Windows не планируется. Интересует только Linux с ядром, начиная от 2.6.34-3 х86_64. Может ли мусор появиться, если я подаю на Х1 неправильный сигнал?

Konstantin
24.09.2012 11:36:06
#8

Гость

Re: Проблемы с драйверами платы L791

Поправка: не запускалась в том смысле, что на компьютере, где установлена плата, Windows вообще нет.

24.09.2012 12:12:00
#9

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблемы с драйверами платы L791

частота кварца разумная должна быть. проверить на компе с Windows не помешает.

Konstantin
24.09.2012 13:12:35
#10

Гость

Re: Проблемы с драйверами платы L791

Ок. Попробую проверить под Windows XP...

Konstantin
24.09.2012 13:21:30
#11

Гость

Re: Проблемы с драйверами платы L791

Хммм... Я вижу, Вы обновили драйвера для USB плат под Linux МСВС. А обновление для PCI плат планируется? Будете ли вы проводить тестирование под OS Astra Linux? Это ведь тоже операционная система специального назначения, сертифицированная для использования в военных системах. Она доступна для скачивания в версии Common.
Вот ссылка http://astralinux.ru/index.php?option=c … &Itemid=60

24.09.2012 13:53:27
#12

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблемы с драйверами платы L791

Для МСВС это был обратный порт ня ядро 2.4. Заниматься таким не планировалось больше. Это заказчик хотел один. Тяжело и трудоемко и ядро убогое с точки зрения сервиса и работы на современных машинах.

24.09.2012 13:55:54
#13

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблемы с драйверами платы L791

Еще имейте ввиду что если у вас 64 битные ос и приложения, то linux я не тестировал в этом ключе. Возможны тупо 32<->64 битные глюки в плане адресной арифметики, размерности переменных итп.

Konstantin
24.09.2012 16:30:47
#14

Гость

Re: Проблемы с драйверами платы L791

Ну хорошо. А в принципе, если наше предприятие будет заказывать достаточно большую партию L791, возможно ли как-то договориться о доработке драйвера под операционную систему Astra Linux 2.6.34-3 х86_64? И что для этого необходимо?

Да, насчет 64-х битных глюков попробую проверить...

24.09.2012 16:44:58
#15

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблемы с драйверами платы L791

С этим обращаться в офис надо.

24.09.2012 16:50:17
#16

Сотрудник "Л Кард"
Здесь с 23.04.2014
Сообщений: 237

Re: Проблемы с драйверами платы L791

"И что для этого необходимо?" - в первую очередь, уточнить, что значит "достаточно большую партию". О каких сроках пойдет речь?

Konstantin
25.09.2012 13:13:55
#17

Гость

Re: Проблемы с драйверами платы L791

Протестировал под OS Windows XP все работает отлично. Проблема в Linux. Сейчас буду экспериментировать с 64 битными адресами. Если я правильно понял, мне надо копаться в дефайнах библиотеки... Или надо начинать с самого драйвера?

Konstantin
25.09.2012 13:15:13
#18

Гость

Re: Проблемы с драйверами платы L791

Насчет объемов партии пока сам сказать не могу. Сейчас у нас ОКР, где применяется только одна плата АЦП L791. По результатам ОКР уже можно будет сказать наверняка...

Konstantin
25.09.2012 13:39:52
#19

Гость

Re: Проблемы с драйверами платы L791

Сейчас попробую пересобрать драйвер и библиотеку с флагом "-m32". Может есть еще какие-нибудь варианты исправления совместимости 32-х битных драйверов на 64-х битной платформе?

25.09.2012 14:00:05
#20

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблемы с драйверами платы L791

самый лучший вариант  это поставить linux 32 битный и проверить....

25.09.2012 14:16:52
#21

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,341

Re: Проблемы с драйверами платы L791

А почему, кстати, была выбрана именно L791?

Konstantin
25.09.2012 15:06:29
#22

Гость

Re: Проблемы с драйверами платы L791

<А почему, кстати, была выбрана именно L791?>
До нее в системе использовалась плата от ЗАО Руднев-Шиляев ЛА-2М5PCI, но там поддержка драйверов под Linux остановлена (последняя версия от 2003 года) Ваша плата является аналогом, да и поддержка драйверов несравнимо лучше...

<самый лучший вариант это поставить linux 32 битный и проверить....>

Имеется 32-х битный Linux на 3-м ядре. Сомневаюсь в успехе компиляции. Но даже если драйвер успешно заработает в 32-х битной системе - это нам не поможет, т.к. по договору мы обязуемся поставлять наше ПО с системой Astra Linux Special Edition (сертифицирована ФСТЭК, а она выпускается только под архитектуру х86_64.

Компиляция с флагом "-m32" не пошла. Вот логи:
1) драйвер
make -C /lib/modules/2.6.34-3-generic/build M=/driver/dstr modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.34-3-generic/'
  CC [M]  /driver/dstr/ldevice.o
/driver/dstr/ldevice.c:1: error: code model ‘kernel’ not supported in the 32 bit mode
make[2]: *** [/driver/dstr/ldevice.o] Ошибка 1
make[1]: *** [_module_/driver/dstr] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.34-3-generic/'
make: *** [modules] Ошибка 2

2)библиотека
...
g++ -shared -Wl,-soname,liblcomp.so -o liblcomp.so stubs.o maincomp.o lguids.o ldevbase.o plx.o loadplx.o e440.o loade440.o e140.o loade2010.o e2010.o 791.o e154.o -lc
collect2: ld terminated with signal 11 [Ошибка сегментирования]
/usr/bin/ld: i386 architecture of input file `stubs.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `maincomp.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `lguids.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `ldevbase.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `plx.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `loadplx.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `e440.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `loade440.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `e140.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `loade2010.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `e2010.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `791.o/' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `e154.o/' is incompatible with i386:x86-64 output
stubs.o: In function `LGetProcAddress(void*, char const*)/':
stubs.cpp:(.text+0x3f8): undefined reference to `dlerror/'
stubs.cpp:(.text+0x40a): undefined reference to `dlsym/'
stubs.cpp:(.text+0x411): undefined reference to `dlerror/'
stubs.o: In function `LLoadLibrary(char const*)/':
stubs.cpp:(.text+0x451): undefined reference to `dlopen/'
stubs.o: In function `LFreeLibrary(void*)/':
stubs.cpp:(.text+0x479): undefined reference to `dlclose/'
maincomp.o: In function `CreateInstance/':
maincomp.cpp:(.text+0x78): undefined reference to `operator new(unsigned int)/'
maincomp.cpp:(.text+0x1d8): undefined reference to `operator new(unsigned int)/'
maincomp.cpp:(.text+0x260): undefined reference to `operator new(unsigned int)/'
maincomp.cpp:(.text+0x2d0): undefined reference to `operator new(unsigned int)/'
maincomp.cpp:(.text+0x340): undefined reference to `operator new(unsigned int)/'
maincomp.o:maincomp.cpp:(.text+0x3b0): more undefined references to `operator new(unsigned int)/' follow
loadplx.o: In function `DaqL780::LoadBios(char*)/':
loadplx.cpp:(.text+0xb4): undefined reference to `operator new[](unsigned int)/'
loade440.o: In function `DaqE440::LoadBios(char*)/':
loade440.cpp:(.text+0xcc): undefined reference to `operator new[](unsigned int)/'
loade2010.o: In function `DaqE2010::LoadBios(char*)/':
loade2010.cpp:(.text+0x95): undefined reference to `operator new[](unsigned int)/'
make: *** [liblcomp.so] Ошибка 1

Могу ли я как-то исправить библиотеку или драйвер в ручном режиме, и что мне для этого стоит сделать?

25.09.2012 15:28:23
#23

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Проблемы с драйверами платы L791

Ну как-то наверное можно. Что за ключ m32 я не знаю, но он явно не для драйверов... гарантированно  чтобы это мне надо устанавливать и настраивать систему x64 и актуализировать драйвера....

25.09.2012 15:52:23
#24

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,341

Re: Проблемы с драйверами платы L791

Просто как потенциальный вариант на всякий случай. Если вдруг на Вашем ПК есть PCI-Express и сроки сдачи у Вас не горят, то потенциально можно посмотреть и на плату L502. Правда это совсем новое изделие и в серию поступит наверное не раньше чем через месяц… Но по крайней мере у меня проблем с ней на последних версиях 64-битного ядра Linux пока не было…

Konstantin
25.09.2012 15:59:01
#25

Гость

Re: Проблемы с драйверами платы L791

"-m32" - это флаг компилятора. Он позволяет собирать 32-х битное приложение в 64-х битной системе.
Честно сказать, я себе плохо представляю, насколько доработка Вашего драйвера под 64-х битную систему является трудоемкой задачей, но если у Вас есть возможность это сделать, то я со своей стороны готов выслать Вам любые необходимые логи или информацию, которая может потребоваться.
У меня в данный момент осталась только одна идея - это попробовать обратится к драйверу напрямую, в обход библиотеки. Если из этого что-нибудь получится (в чем я сомневаюсь), то исходный код выложу тут.