Dear all,
I modified a little the firmware of a usrp-based device.
I wanted to check the buffer overrun event on the BULK IN EP2 FIFO, but the
interrupt autovectoring mechanism doesn't work.
The following code


static void
isr_EP2FULLFLAG (void) interrupt
{
  clear_fifo_gpif_irq ();

  IOD ^= 0x01;

  _usb_rx_overrun++;
}

void install_handlers (void)
{
  setup_descriptors ();        // ensure that they're set before use

  hook_uv (UV_SUDAV,     (WORD) isr_SUDAV);
  hook_uv (UV_USBRESET,  (WORD) isr_USBRESET);
  hook_uv (UV_HIGHSPEED, (WORD) isr_HIGHSPEED);

  hook_fgv (FGV_EP2FF,   (WORD) isr_EP2FULLFLAG);

  SYNCDELAY; EP2FIFOIE = 0x01; /* The FF on the EP2, which is BULK IN */
  SYNCDELAY;
  USBIE = bmSUDAV | bmURES | bmHSGRANT;
}


I don't see any changes in the port D bit 0 or _usb_rx_overrun variable,
even in case of the EP2 overrun, which I can less efficiently verify with
EP2468STAT or EP24FIFOFLGS (and maybe EP2CS as well).
Any clue? Did someone ever try hook_fgv?

Regards,
Mic
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to