Using Remoteproc and the scratchpad

Hello guys,

I am trying to make an ADC using the PRU. I want to use one core as SPI master and send the samples to the second core using scratchpad . On the second core i want to do some DSP and than send it to the arm using REMOTEPROC/RPMsg. The problem i am walking in to is that there is next to no explanation on remoteproc or scratchpad. Are there better resources on these topics? or are there better solutions to what i am trying to accomplish? has anyone written a library in C for REMOTEPROC/RPMsg. I do not mind researching but there is so little information that i am left to copy pasting different parts of the TI examples which do not explain anything.

Have you seen the PRU Cookbook[1]? In chapter 7[2] I give a simple example of passing data between the two PRUs using xin() and xout(). It’s a simple example, but a start.

BeagleLogic[3] has a better (and much more detailed) example of what you are wanting to do.

–Mark

[1] PRU Cookbook
[2] More Performance
[3] Welcome to BeagleLogic! — BeagleLogic 2.0 documentation

Programming PRUs is a bit of a moving target as the mechanisms have changed and evolved and a lot of documentation is out-of-date. I used some of Mark’s stuff and well as the cut&paste&try method too.

I’m not using the scratchpad but I did write an application that moves data between PRUs using a circular buffer in the shared memory block. Maybe there is some helpful information there.

https://github.com/danjulio/lepton/tree/master/beaglebone/pru_rpmsg_fb

Remoteproc is a standard Linux kernel feature, so start with the
kernel's Documentation/ directory:

https://www.kernel.org/doc/Documentation/remoteproc.txt

The scratchpad is documented quite well in the PRU reference
materials, see section 5.2.4:

https://github.com/beagleboard/am335x_pru_package/blob/master/am335xPruReferenceGuide.pdf