Hello,

I encounter a caching issue with my application. I will describe what I 
want to do, how I planned to do it and what goes wrong:

*WHAT:*

By using the PRU on my BBB, I want to timestamp a periodic rising edge on 
one input pin in *a nanosecond scale *and signal it to a Linux Kernel 
module on the ARM.


*HOW:*

To receive an interrupt in my kernel module, I bridged the pin with the 
rising edge to a second one (timer4 interrupt).
This interrupt fires a few microseconds after the event happened.

To read values from the PRU with best determinism and lowest latency, I 
allocated some DDR memory with dma_alloc_coherent() in my kernel module and 
handout the address via debugfs to the PRU.


The PRU is in endless loop:  

wait for rising edge, read out the PRU cycle counter and write the cycle 
counter to the DDR memory address. 
*This works like a charm and I got the event's cycle counter snapshot in my 
kernel module!*


The kernel module interrupt is firing a few microseconds after the event 
and has some jitter I want to avoid.

So I decided it would be best to burst the actual cycle counter to a second 
ram address for a ten thousand times by the PRU so when the Kernel module 
reads this ddr location, It knows the difference from the event's cycle 
counter and the cycle counter now.

*This does not work!*


*WRONG:*

Initially everything appered to be working. I was reading out for example:

event cycles: 1000
now cycles: 4300

great!


But to test the "now cycles" counter, I added to the kernel module to read 
it thousand times in a loop. Guess what?* It is thousand times the same.*

I tried a few options. For example to write and read two alternating 
memaddresses for this "now counter" by kernel and pru but nothing gives the 
results I expected.
It seems like anyone caches the results.....



Any help? So many thanks... I hope the problem can be understood.
Tom

-- 
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