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

lcomp (e2010) + GNU/Linux AMD64

Вы не вошли.

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

Антон (Югорский Гос. Университет)
24.08.2009 13:17:22
#1

Гость

lcomp (e2010) + GNU/Linux AMD64

Здравствуйте.
Не мог бы кто-нибудь из разработчиков/пользователей привести сообщения от драйвера, собранного с опцией Debug=y

Хочу найти причину по которой драйвер не работает в 64-хразрядной системе.
Ранее я уже выкладывал логи: http://www.lcard.ru/forumthreads/7844

В логах не никаких следов срабатывания ldevusb_read_bulk_callback.
Из-за чего это может быть? Из-за неверного явного приведения типов? Или все сложнее?

Антон (Югорский Гос. Университет)
24.08.2009 15:42:25
#2

Гость

Re: lcomp (e2010) + GNU/Linux AMD64

usb_submit_urb возвращает ноль, но ldevusb_read_bulk_callback не срабатывает.

24.08.2009 16:12:17
#3

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

Re: lcomp (e2010) + GNU/Linux AMD64

а в такой же конфигурации, но в 32-разрядном режиме?

Антон (Югорский Гос. Университет)
24.08.2009 16:30:12
#4

Гость

Re: lcomp (e2010) + GNU/Linux AMD64

да, в 32-х.

для большей информативности могу привести статусы завершения вызовов для девайсо-специфичных функций из файла e2010.c

25.08.2009 08:48:24
#5

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

Re: lcomp (e2010) + GNU/Linux AMD64

значит я где-то непортабельно написал адресную арифметику или определение размеров... Linux машина у меня 32 битная так что 64 битной сборки я не делаю...

Антон (Югорский Гос. Университет)
25.08.2009 11:59:11
#6

Гость

Re: lcomp (e2010) + GNU/Linux AMD64

Вот и хочу понять где именно проблема.
Для этого мне нужны логи от программы и от драйвера -- из /var/log/kern.log для 32-битной сборки.

Сам я их воспроизвести пока не могу -- нет под рукой 32-битного дистрибутива.

Был бы очень признателен Вам, если бы Вы их здесь привели.

25.08.2009 12:54:04
#7

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

Re: lcomp (e2010) + GNU/Linux AMD64

по логу что ранее постился - загрузка не прошла и потому ничего и неработает. Обработка статуса просто корявая потому и не сигнализирует об этом явно...

Антон (Югорский Гос. Университет)
25.08.2009 15:10:16
#8

Гость

Re: lcomp (e2010) + GNU/Linux AMD64

Под загрузкой понимается LoadBios_E2010 и все более низкоуровневые функции?

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

[  617.020509] lcard: Staring LDev driver...
[  617.128072] lcard: Alloc
[  617.128079] lcard: switch to app
[  617.292009] lcard: In COMMAND_E2010 usb_control_msg.status=0
[  617.529690] lcard: In COMMAND_E2010 usb_control_msg.status=0
[  617.529690] lcard: In ReadFlashWord_E2010 usb_control_msg.status=256
[  617.529690] lcard: brdname  E20-10
[  617.529690] lcard: revision B
[  617.529690] lcard: set to E2010B
[  617.529690] lcard: ldevusb device now attached to ldev0
[  617.529690] usbcore: registered new interface driver ldevusb
[  619.420074] usbcore: deregistering interface driver ldevusb
[  619.420099] lcard: in delete
[  619.420102] lcard: ldev0 now disconnected
[  619.441673] lcard: Staring LDev driver...
[  619.486762] lcard: Alloc
[  619.486769] lcard: switch to app
[  619.596008] lcard: In COMMAND_E2010 usb_control_msg.status=0
[  619.821410] lcard: In COMMAND_E2010 usb_control_msg.status=0
[  619.822601] lcard: In ReadFlashWord_E2010 usb_control_msg.status=256
[  619.822606] lcard: brdname  E20-10
[  619.822608] lcard: revision B
[  619.822609] lcard: set to E2010B
[  619.822611] lcard: ldevusb device now attached to ldev0
[  619.822646] usbcore: registered new interface driver ldevusb
[  648.349162] lcard: LDev_Open call
[  648.349170] lcard: subminor 0<7>lcard: in DIOC_GET_PARAMS
[  648.349207] lcard: in close
[  648.349296] lcard: LDev_Open call
[  648.349298] lcard: subminor 0<7>lcard: in DIOC_GET_PARAMS
[  648.356296] lcard: DIOC_SEND_BIOS
[  648.356302] lcard: 22628
[  648.356322] lcard: DIOC_SEND_BIOS
[  648.356324] lcard: 18532
[  648.356336] lcard: DIOC_SEND_BIOS
[  648.356337] lcard: 14436
[  648.356349] lcard: DIOC_SEND_BIOS
[  648.356350] lcard: 10340
[  648.356361] lcard: DIOC_SEND_BIOS
[  648.356363] lcard: 6244
[  648.356371] lcard: DIOC_SEND_BIOS
[  648.356373] lcard: 2148
[  648.356377] lcard: In DIOC_LOAD_BIOS
[  648.356378] lcard: 22628
[  648.360617] lcard: In COMMAND_E2010 usb_control_msg.status=0
[  648.416032] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=4096
[  648.456009] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=4096
[  648.532015] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=4096
[  648.588009] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=4096
[  648.648008] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=4096
[  648.700008] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=2148
[  648.704107] lcard: In LoadBios_E2010 usb_clear_halt.status=0
[  648.704250] lcard: In COMMAND_E2010 usb_control_msg.status=-32
[  648.704397] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=4
[  651.204094] lcard: In LoadBios_E2010 usb_control_msg.status=-110
[  651.204100] lcard: read 0 bytes from USB status -110<7>lcard:  Load bios complete
[  651.204528] lcard: In DIOC_READ_FLASH_WORD
[  651.205143] lcard: In ReadFlashWord_E2010 usb_control_msg.status=256
[  652.192182] lcard: In SETBUFFER
[  652.192189] lcard: Set Buffer 10000000
[  652.196411] lcard: Set real Buffer 10000384
[  652.196826] lcard: In MMAP IOCTL !!!
[  652.196830] lcard: offset field 1<7>lcard: map in buf<7>lcard: In SETUP
[  652.197561] lcard:  2 4 0 0
[  652.197563] lcard: Set Buffer 8 32768
[  653.192023] lcard: In DIOC_ENABLE_CORRETION
[  653.201515] lcard: In PUT_PM_WORD_E2010 usb_control_msg.status=1
[  653.204262] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=48
[  653.204378] lcard: In INIT_SYNC
[  653.209558] lcard: In START 39
[  653.216520] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=263
[  653.216528] lcard: Set extra sync
[  653.216759] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=13
[  653.216910] lcard: In PUT_PM_WORD_E2010 usb_control_msg.status=1
[  653.217007] lcard: in PUT_DATA_MEMORY_E2010 usb_control_msg.status=4
[  653.217109] lcard: In EnableE2010 usb_clear_halt.status=0
[  653.217208] lcard: In COMMAND_E2010 usb_control_msg.status=0
[  653.217211] lcard: start satrt
[  653.217214] lcard: In QueueBulkRead
[  653.217218] lcard: QueueBulkRead - failed submitting read urb, error 0
[  700.272010] lcard: in close
[  700.272010] lcard: stop stop
[  700.276293] lcard: In COMMAND_E2010 usb_control_msg.status=0
[  700.276298] lcard: pipe aborted
[  700.276383] lcard: In ldevusb_read_bulk_callback bulk->status -2
[  700.276387] lcard: in callback
[  700.276389] lcard: size 0
[  700.276391] lcard: In QueueBulkRead
[  700.276397] lcard: QueueBulkRead - failed submitting read urb, error -1
[  700.276399] lcard: QueueBulkRead - failed submitting read urb, error -1
[  700.276401] lcard: stopped under kill condition

25.08.2009 15:38:00
#9

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

Re: lcomp (e2010) + GNU/Linux AMD64

In LoadBios_E2010 usb_control_msg.status=-110
[ 651.204100] lcard: read 0 bytes from USB status -110<7>lcard: Load bios complete

во тут должно в ответ прочитаться 510 байт....
что-то мне подсказывает что Вы в плату ревизии B льете прошивку от A. Попробуйте биос 2010m заливать туда....

Антон (Югорский Гос. Университет)
27.08.2009 09:24:52
#10

Гость

Re: lcomp (e2010) + GNU/Linux AMD64

Спасибо.
Теперь работает.
Проверил на ядре 2.6.26-amd64.
Буду тестировать дальше.

Антон (Югорский Гос. Университет)
27.08.2009 12:29:48
#11

Гость

Re: lcomp (e2010) + GNU/Linux AMD64

Проверил и на более свежих ядрах: 2.6.{28, 30, 31-rc5}. Тестовый пример работает.

diff ./ldevice.c ./ldevice.c_orig

9d8
< #include <linux/version.h>
159,163c158
<       #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
<     device_create(lcard_class, NULL, MKDEV(major, i), NULL ,"ldevice%d", i);
<       #else
<     device_create(lcard_class, NULL, MKDEV(major, i), "ldevice%d", i);
<       #endif
---
>       device_create(lcard_class, NULL, MKDEV(major, i), "ldevice%d", i);

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск