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.

Reply via email to