I achieved decent throughput by using the standard RPMSG PRU driver with a larger buffer size (MAX_FIFO_MSG in rpmsg_pru.c changed from 32 to 4096) and by batching the PRU data into 496 byte chunks (512 byte RPMSG message - header).
There is a project using the DMA controller which might be a very fast option, I haven't tested it yet (but it looks promising): https://github.com/maciejjo/beaglebone-pru-dma IIRC there are other projects that use the second PRU for data shoveling instead. Am Mittwoch, 18. März 2020 01:22:01 UTC+1 schrieb Igor Jędrzejczak: > > > I'm checking how fast can I copy data from Beaglebone Black PRU to an > userspace app on ARM. I'm using kernel v4.19 TI PREEMPT-RT. > > So far I simply modified the PRU_RPMsg_Echo_Interrupt1 example from here: > https://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs#LAB_5:_RPMsg_Communication_between_ARM_and_PRU > . > Added IEP timer value as part of 480 byte message sent from PRU to ARM to > check time delta between data dispatches. For RPMsg I'm using "rpmsg-pru" > channel and on the ARM side in userspace app I'm reading the data from > /dev/rpmsg_pru31 with function read() to get the data. In this > configuration I'm reading the data on ARM side every 90us. > > Here I wonder whether there is anything I could gather after writing > custom kernel module (beaglelogic approach?) over using RPMsg character > device. If yes, how much and what would be the best approach to collect the > PRU data as quickly as possible? > -- 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/5a985c1a-319f-472c-bd05-7aee7f664985%40googlegroups.com.
