__far __attribute__((cregister("PRU_SHAREDMEM", near))) volatile uint32_t variable_1;
__far __attribute__((cregister("PRU_SHAREDMEM", near))) volatile uint32_t variable_2;
//Somewhere In code
variable_1 = data;
variable_2 = _2_data;990
> --
> 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...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/CALHSORqFPgeAnZrrCw8T%2BEpeMQJtMV_ERS6876w8ZOnF%2BY_DxA%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.
DMA is not really necessary, as the PRU can read/write to the ARM
system DRAM and the ARM can read/write to the PRU memories. There are
some ways DMA could improve performance of a high-performance
application using both the ARM and the PRU heavily, but it's not a
clear win in all cases.
However, any kernel-level physical memory access for talking to the
PRU is going to have a lot in common with doing DMA. You need to map
physical addresses into logical memory space, issue fence instruction
to guarantee memory coherency, etc. Basically, the PRU can be
considered a "custom" DMA controller, in that it is something other
than the application processor that is accessing and changing main
memory contents. The usage semantics for talking to the PRU in kernel
space are very similar to using DMA. Just 's/DMA/PRU/g' and you won't
go too far wrong! ;-)
--
Charles Steinkuehler
cha...@steinkuehler.net