Hi

I am facing a strange problem with my application. I have some code running 
on PRU0 and PRU1 that share some data using scratchpad. PRU1 also send some 
data to ARM, 32 bytes at each time with a counter value as timestamp. each 
time a new chuck of data is ready, it is written in a circular buffer on 
shared memory, also a pointer is updated in a fixed position of the shared 
memory and a interrupt is sent to the ARM. On the ARM side, each time the 
interrupt is received, the pointer is read so it can get the last chunk of 
data. So far so good.
Analyzing the data received on the ARM side, we note some samples are 
missing, eg: timestamps are 1000, 1001, 1003, 1004, 1005.... (1002 is 
missing) and this is expected. That is the point in having a ring buffer. 
The problem is that sometimes, some samples are repeated. ex: 1004, 1005, 
1005, 1006, 1008.... The only way I can think of this to happen is that for 
some reason the PRU flush data to the shared ram but this write is not 
completed before the interrupt is sent to the ARM... the ARM read the 
shared memory but finds old data.
Here comes my question: I can deal with it as it happens here and there, 
but where and how can I investigate it further and maybe, how to ensure 
that this will not happen or at least, do not get worst?

Thanks,

Carlos Novaes

-- 
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 beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to