Форум: Техническая поддержка

Тема: L780 + QNX RtP - непонятки.

Вы не вошли.

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

Dmitry
14.01.2002 18:35:22
#1

Гость

L780 + QNX RtP - непонятки.

не могу обнаружить плату в пространстве IO портов (как впрочем и в mem -- то же) из под qnx6. Сканировал все 64к портов. Звуковуха, сеть, lpt и прочее -- видны, а на месте где должна быть L780 получаю in16()=-1, как по PLX адресам, так и по рабочим адресам платы.

Кроме того, pci_attach_dev -- карту определяет криво, т.е. он ее находит, но вот адреса IO портов
и памяти считает за нулевые. Поэтому, приходиться читать конфигурацию с помощью pci_read_config16().

При этом в ДОС, все работает, в RTX - то же.
Доступ через порты и через память разрешен с помощью dos-утилиты и записан в eprom.

мож кто сталкивался, а мож у меня система кривая?
кста, пробовал искать плату на разных PC --
результат тот же. ...странный глюк...

Dmitry
17.01.2002 13:04:38
#2

Гость

Re: L780 + QNX RtP - непонятки.

Ау-у! Разработчики. Если у вас все работает,
черкните пару строчек. Просто я тогда буду
искать ошибку в ДНК.
Проверить это - дело десяти минут,
на только что установленной с нуля системе с КД-ПЗУ. Неужели у вас нет куеникса rtp за 80 руб?

//плата ревизии B.

#include <errno.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>
#include <unistd.h>
#include <devctl.h>
#include <fcntl.h>

#include <sys/mman.h>
#include <sys/neutrino.h>
#include <sys/dispatch.h>
#include <sys/types.h>
#include <sys/rsrcdbmgr.h>
#include <sys/rsrcdbmsg.h>
#include <sys/iofunc.h>

#include <hw/pci.h>
#include <hw/inout.h>

#define PLX_CNTRL 0x50  /* User I/O, PCI Target Response, EEPROM, Initialization Control */

main() {
        void *hdl;
        int i;
        int Device_index = 0;

        struct pci_dev_info info;
        memset(&info, 0, sizeof(info));

        int phdl = pci_attach(0);
        if(phdl < 0) {
                perror("pci_attach");
                exit(EXIT_FAILURE);
        }
        info.VendorId = 0x10B5;
        info.DeviceId = 0x9050;
        if ((hdl = pci_attach_device(NULL, PCI_SHARE, 0, &info)) == 0) {
                perror("pci_attach_device");
                exit(EXIT_FAILURE);
        }
        void* retval;
        if ((retval = pci_attach_device(hdl, PCI_SHARE|PCI_INIT_ALL, Device_index, &info)) == 0) {
                perror("pci_attach_device");
                exit(EXIT_FAILURE);
        }
        int len = 0x20;
        short buf[len];
        pci_read_config16(0, info.DevFunc, 0, len, buf);
        for(i = 0; i < len; i++)
                printf("%04X ", buf[i] & 0x0000FFFF);
        printf("//n");

        ThreadCtl(_NTO_TCTL_IO, NULL);
// здесь адрес портов взятый из дампа pci_config
// или просто подсмотренный в ДОС-утилите для
// L780
        uintptr_t iobase = 0xD400;
        int size = 0x0040;
        //iobase = mmap_device_io(size, 0xD000);
        for(int i = 0; i < size; i++) {
                printf("%4x ", in16(iobase + i));
        }
        printf("//n");
}

17.01.2002 13:18:47
#3

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

Re: L780 + QNX RtP - непонятки.

У нас нет QNX - мы пока работаем только с Linux

VM
17.01.2002 14:16:49
#4

Гость

Re: L780 + QNX RtP - непонятки.

Я не использовал pci_attach_device, правда устройство было bus master, но это суть дела не меняет. Делал следующее:
pci_attach();
pci_find_device();
pci_read_configX();
mmap();
...

Вроде все работало.
Единственное, может я и подзабыл, но в
pci_read_configX() первым параметром указывается
номер устройства на шине, который возвращает pci_find_device().

Dmitry
21.01.2002 10:14:48
#5

Гость

Re: L780 + QNX RtP - непонятки.

Проблема с портами решилась. Фокус был в
флаге PCI_SHARE. Кривизна определения портов и прерывания функцией pci_attach_device осталась.

Dmitry
21.01.2002 10:16:06
#6

Гость

Re: L780 + QNX RtP - непонятки.

Проблема с портами решилась. Фокус был в
флаге PCI_SHARE. Кривизна определения портов и прерывания функцией pci_attach_device осталась.

VM
21.01.2002 15:34:05
#7

Гость

Re: L780 + QNX RtP - непонятки.

Порты стали читаться без -1 ?
PCI_SHARE,- это который выставляется в pci_attach_device()?

Dmitry
22.01.2002 09:50:07
#8

Гость

Re: L780 + QNX RtP - непонятки.

Да, порты стали видны. Да, это именно этот флаг.
Поведение странновато на мой взгляд, но я пока только знакомлюсь с куениксом.
Обидно, что потерял пару рабочих дней пока понял, что не плохо бы попробовать это флаг выкинуть...

Контакты

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

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

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

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