Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с открытием драйвера bulkusb.sys
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
overloaded
В AT91sam7 BasicUSB подредактированный. В основном ничего не менял. В главном цикле

Код
//============ WRITE USB
     unsigned length;    
     memcpy(buf,(void const*)&FHW_INS,sizeof(struct FHW_ins));
     pCDC.Write(&pCDC, buf, sizeof(struct FHW_ins));
//============ READ USB    
     length = pCDC.Read(&pCDC, buf, sizeof(struct FHW_outs),100010);
     if(length!=sizeof(struct FHW_outs))
     {
       SoftClosed = 1;
       goto MainLoop;
     }
     else    
     memcpy((void*)&FHW_OUTS,buf,sizeof(struct FHW_outs));



На ПК:
Код
            fr = new FileRead(dev_name + "\\PIPE01");//01
            if (fr.handle == 0)
                return false;

            fw = new FileWrite(dev_name + "\\PIPE00");//00
            if (fw.handle == 0)
                return false;


При работе с драйвером atm6124.sys все ОК.
Ставлю bulkusb.sys из DDK XP и 2003 пробовал.

new FileRead(dev_name + "\\PIPE01");
а точнее
handle = CreateFile(filename,
GENERIC_READ/* | GENERIC_WRITE*/,
0,//FILE_SHARE_READ,
0,
OPEN_EXISTING,
0,
0);
возвращает -1;

меняю PIPE00 и 01 местами.
Код
            fr = new FileRead(dev_name + "\\PIPE00");//01
...
            fw = new FileWrite(dev_name + "\\PIPE01");//00
...

FileRead открывается, FileWrite нет(код 87="ERROR_INVALID_PARAMETER").
Если открывать и FileWrite для PIPE00 открывает, но после этого ReadFile() "залипает" и
бесконечно ждет данные.

dev_name возвращается правильный т.к. с атмеловским драйвером все работает
на всякий случай вот он
"\\\\?\\usb#vid_03eb&pid_6124#5&79ebe7c&0&4#{a5dcbf10-6530-11d2-901f-00c04fb951ed}"

Может дело в программе на МК? Если кто успешно работал с этим драйером, киньте плз
код для МК.. И для ПК тоже было бы неплохо.. Ну или мысли по поводу сего )
Спасибо )
overloaded
не прошло и пару дней... wacko.gif и проблема решена. smile.gif

если кому интересно..
девайс не отдавал SET_CONFIGURATION - залипал в сендЗероЛенгтПакет
а дескрипторы устр-ва и конф-и отдавал.

поменял в AT91F_USB_SendData
Код
    if (pUdp->UDP_CSR[0] & AT91C_UDP_TXCOMP) {
        pUdp->UDP_CSR[0] &= ~(AT91C_UDP_TXCOMP);
        while (pUdp->UDP_CSR[0] & AT91C_UDP_TXCOMP);
    }
на

    while (!(pUdp->UDP_CSR[0] & AT91C_UDP_TXCOMP));
        pUdp->UDP_CSR[0] &= ~(AT91C_UDP_TXCOMP);
        while (pUdp->UDP_CSR[0] & AT91C_UDP_TXCOMP);


короче кривой драйвер атмела отлично работал с кривым его-же примером для мк))
а пример в свою очередь отказался рабоать с менее кривым драфером =) lol.gif
дескриптор степени кривизны прошивки не мог получить видимо...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.