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

Тема: L783 vxdapi.dll. Почему так?

Вы не вошли.

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

Юрий Иванов
20.03.2003 19:24:11
#1

Гость

L783 vxdapi.dll. Почему так?

Доброго времени суток.
Ковыряю под свои нужды vxdapi.dll.
В связи с этим возникли вопросы:
1.Почему в LoadBiosPLX для записи .bio файла d плату используется цикл с использованием outmword(...), а не Put_DM_array_PLX()/Put_PM_array_PLX()?
Есть какие-то скрытые проблемы с использованием PUT_xx при загрузке BIOS/'a?
2. Можно ли сделать reset плате через DIOC_xx функцию?

21.03.2003 09:28:05
#2

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

Re: L783 vxdapi.dll. Почему так?

1 да нет - в последней версии библитотеки так и сделано.
2 а зачем?

Юрий Иванов
21.03.2003 15:25:06
#3

Гость

Re: L783 vxdapi.dll. Почему так?

>2 а зачем?
1. Чтобы не таскать за собой PDEV_REG_UNI, а только хэндл.

24.03.2003 09:19:55
#4

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

Re: L783 vxdapi.dll. Почему так?

Там кроме хэндла есть еще и хэндл события и  кроме того в новой библиотеке все по другому уже.
см lcomp в библиотеке файлов.

Юрий Иванов
24.03.2003 14:54:27
#5

Гость

Re: L783 vxdapi.dll. Почему так?

Есть еще один вопрос.
Имеем:
1. PC P1-166/win98
2. Тестовая програмка для L-783
.VAR/SEG=INT_DM_USER/ABS=0x2000/DM/RAM Cmd;
.INIT Cmd: 0x5;
StartLab:
    JUMP lStart;
    NOP;
    NOP;
    NOP;

{IRQ2 (обработчик номера команды)}
    JUMP lIrq2Handler;
    NOP;
    NOP;
       NOP;

lStart:
    DIS SEC_REG;
    ENA M_MODE; {Установим 4 бит MSTAT - умножение целых чисел}
{IRQ0, IRQ1, IRQ2 - level, disable Interrupt nesting}
    ICNTL = 0x0;
{очистим запросы на все прерывания}
    IFC = 0xFF;     NOP;     NOP;
    DMOVLAY=0x1;    PMOVLAY=0x1;

{разрешим прерывания IRQ2, IRQ1, IRQ0}
        AR = B#1110000110;  {0x386}
    IMASK = AR;
    NOP;


Cicle1:{холостой цикл}
    NOP;
    NOP;
    NOP;
    JUMP  Cicle1;

{ Обработчик прерываний IRQ2 (обработчик номера команды)}
lIrq2Handler:
    DIS INTS;
    ENA SEC_REG;   

    I4 = ^CMd;
    M4 = 0;
    L4 = 0;
    AR=DM(I4,M4);
    AR = AR +1;
    DM(I4,M4) = AR;
    DIS SEC_REG;
    ENA INTS;
    RTI;

При вызове DllExport(DWORD) CommandPLX(HANDLE hVxd, WORD Cmd)
{
   DWORD cbRet;   WORD data=0;   WORD par = Cmd;
   return DeviceIoControl( hVxd, DIOC_COMMAND_PLX,
                           &par, sizeof(par),
                           &data, sizeof(WORD),
                           &cbRet, NULL
                         );
}

имеем 15-20 секундное зависание машины и после этого нормальное продолжение работы. Меня бы это вполне устроило, но часы начинают отставать :-((
Команда отрабатывает правильно. При обращении к штатному BIOS/'у происходит аналогичное "подвисание".

24.03.2003 15:45:04
#6

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

Re: L783 vxdapi.dll. Почему так?

Используйте 2000 - там этого не должно быть по идее.

Юрий Иванов
24.03.2003 16:15:00
#7

Гость

Re: L783 vxdapi.dll. Почему так?

Гм. Запустить 2000 на первом пентиуме - это эротично.
Вспоминается анекдот:
- Что такое пошаговая стратегия?
- Need for speed на 486 компьютере

То есть это не лечится?

25.03.2003 09:12:59
#8

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

Re: L783 vxdapi.dll. Почему так?

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

Контакты

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

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

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

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