Hi Ken Shirriff! Here's what I do in the libpruio project:
I don't use interrupts and I don't stop the PRU main loop (no prussdrv_pru_wait_event() and prussdrv_pru_clear_event()). Instead the PRU main loop is running continually and I use a certain area in the DRam to exchange status information. Before the ARM sends a new command, it has to wait until the PRU is ready (max. 10 to 15 PRU cycles). And when the PRU has data for the ARM part, it stores the data in a ring buffer and tells the ARM the current ring buffer position. I'm not keen on ethernet issues, but I think a similar concept should work for you as well. Use a FIFO buffer for outgoing data and a ring buffer for incomming. Before the ARM can send the next package, it has to wait until the current one is done. (When this limitation is insufficient, you'll have to use a ring buffer for outgoing data as well.) BR -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/1870abc3-64aa-4b07-aeef-57f58e1f4602%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
