Re: PCI Driver ISR configuration.
From: Juan de la Cerda (juandlcc_at_hotmail.com)
Date: 09/28/04
- Next message: John: "About the warning information about LNK 4209"
- Previous message: sonu: "hi"
- In reply to: David Liao \(MS\): "Re: PCI Driver ISR configuration."
- Messages sorted by: [ date ] [ thread ]
Date: 27 Sep 2004 23:27:27 -0700
Hello David,
Thanks for your answer.
> Is your network card has installable ISR?
Yes it is, I checked the registry (is a RTL81391) and is using
giisr.dll.
> Did you check hardware interrupt register that ISR installed before return
> SysInter?
I am using the generic ISR (GIISR.DLL) and I send (with the
KernelLibIoControl) the address of the card interrupt register and the
mask in order to check if the card generated the interrupt.
> Did you Reset hardware (inclues Mask all interrupt by hardware) before
> loading Installable ISR?
No I didn't, I will try and see what happens, but I'm sure that my
card isn't generating interrupts before I enable the corresponding
bit.
> you can not call InterruptDisable(DataIsr.SysIntr) during intialize IST.
So, Is not necessary to call InterruptDisable before the call to
InterruptInitialize?
Any other suggestion will be appreciated.
Thank you very much.
Regards,
Juan.
"David Liao \(MS\)" <davli@online.microsoft.com> wrote in message news:<um4JfzNpEHA.1160@tk2msftngp13.phx.gbl>...
> Is your network card has installable ISR?
> Did you check hardware interrupt register that ISR installed before return
> SysInter?
> Did you Reset hardware (inclues Mask all interrupt by hardware) before
> loading Installable ISR?
>
> you can not call InterruptDisable(DataIsr.SysIntr) during intialize IST.
>
> David Liao
>
> "Juan de la Cerda" <juandlcc@hotmail.com> wrote in message
> news:2a9f8977.0409270206.33515d59@posting.google.com...
> > Hi to all,
> >
> > I've developed my own PCI driver for our own PCI board (Motor
> > Controller), this board is plugged into an Advantech VIA Eden CEPC
> > Board with our own WinCE 4.2 image. The image is standalone and boots
> > with biosloader (with no KITL transport included, only TCP/IP
> > transport and Manual Server).
> >
> > Now we are developing the application (with eVC++ 4.0 SP2) that uses
> > the driver to manage the PCI board, we are debugging the app conecting
> > with the target through TCP/IP transport and Manual Server (Using a
> > telnet session to execute the command line).
> >
> > We have the following problem: sometimes, when I call the IOCTL that
> > installs the ISR for my PCI driver, the TCP/IP conection is lost.
> > Using PCIENUM utility I saw that the problem only happens when the IRQ
> > allocated for my PCI board is the same as the one used by the ethernet
> > board.
> >
> > So, my question is: Is the problen happening due to a wrong ISR
> > instalation? Or a wrong call to LoadIntChainHandler?(Following is my
> > driver source code por IRQ allocation).
> >
> > ///////////////// SNIP
> > //////////////////////////////////////////////////////
> >
> > DDKISRINFO IsrInfo;
> > GIISR_INFO DataIsr
> > HANDLE hIsr;
> > HANDLE hevent;
> > HANDLE hthread;
> >
> > IsrInfo.cbSize = sizeof(IsrInfo);
> >
> > DDKReg_GetIsrInfo(hRegEntry, &IsrInfo);
> >
> > hIsr =
> > LoadIntChainHandler(IsrInfo.szIsrDll,IsrInfo.szIsrHandler,(BYTE)IsrInfo.dwIrq);
> >
> > DataIsr.SysIntr = IsrInfo.dwSysintr;
> >
> > // Stuff loading GIISR the rest of information in DataIsr....
> >
> > KernelLibIoControl(hIsr, IOCTL_GIISR_INFO, &DataIsr, sizeof(DataIsr),
> > NULL, 0, &kioreturned);
> >
> > hevent = CreateEvent(NULL, FALSE, FALSE, NULL);
> >
> > InterruptDisable(DataIsr.SysIntr);
> >
> > InterruptInitialize(DataIsr.SysIntr, hevent, NULL, NULL);
> >
> > hthread = CreateThread(NULL,0,Driver_IST,&hevent,0,NULL);
> >
> > CeSetThreadPriority(DevData.hThread, 0);
> >
> > ////// IST Sorce Code: ////////
> >
> > DWORD WINAPI Driver_IST(LPVOID lpArg)
> > {
> > HANDLE phev;
> > DWORD intreg;
> >
> >
> > phev = *(HANDLE *)lpArg;
> >
> > while(!Global_Abort)
> > {
> > WaitForSingleObject(phev, INFINITE);
> >
> >
> > if(!Global_Abort)
> > {
> > SetEvent(ThDevData->hAppEvent);
> > InterruptDone(ThDevData->DatosIsr.SysIntr);
> > }
> > }
> >
> > return 0;
> > }
> >
> > //////////////// END SNIP
> > //////////////////////////////////////////////
> >
> > Any suggestion will be appreciated.
> >
> > Thanks in advance for your help.
> >
> > Best Regards,
> >
> > Juan.
- Next message: John: "About the warning information about LNK 4209"
- Previous message: sonu: "hi"
- In reply to: David Liao \(MS\): "Re: PCI Driver ISR configuration."
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|