Status of pruss in 4.1.10-ti-r21/2015-10-11 Debian snapshot?

Pruss is still broken in the 4.1.10-ti-r21 kernel, right?

Does anyone know if the new remoteproc thing can be used to download existing firmware that was built with pruss in mind, and how I could modify my code to use that instead?

Thanks,

another user got it working with remoteproc, he's just waiting for a
beta-x15 to arrive so that they will work the same on both boards..

Regards,

Oh, do you remember who that was?

Yeap, he will post it when he's ready.

Regards,

Hi Rich,

I have this working on BBB using V4.1.6-bone15, but I should receive an x15 sometime today and it will take me a few days to do testing. There is however one hick-up that needs input from Pantelis to resolve. When BBB first boots, remoteproc/virtio_rpmsg_bus load automatically and the PRU firmware loads as before. The sample code under samples/rpmsg work work perfectly. However, if I uninstall remoteproc.ko and then reinstall it, I get a kernel exception.

Investigating further, I found that _omap_device_notifier_call sets pdev->archdata.od = NULL when the pruss_remoteproc is uninstalled, but when I install the pruss_remoteproc, pruss_probe tries to run omap_device_deassert_hardreset which references archdata.od which is is now NULL.

Looking at TI’s V3.14 kernel, it does not set archdata.od = NULL, so I can uninstall and install the KO without issue.

In the V4.1 code, if I comment out lines 57 & 60 [1], pruss_remoteproc uninstalls and installs without error.

My question is how do I recreate archdata.od before pruss_probe executes omap_device_deassert_hardreset? Given that this patch was authored by Pantelis, I figured you would be the best person to answer my question.

[1] https://github.com/RobertCNelson/linux-dev/blob/master/patches/bbb_overlays/0006-arm-omap-Proper-cleanups-for-omap_device.patch

Regards,
John

Hi John,

Did you ever resolve this?

I have it working Rick on . . .
$ uname -a
Linux beaglebone 4.1.9-bone-rt-r16 #1 Thu Oct 1 06:19:41 UTC 2015 armv7l GNU/Linux

This kernel was just an apt-get install. But, it’s not a TI specific kernel if that’s what you’re wanting. As far as I can tell though, it’s identical except that the pru stuff was re-enabled by Robert at our request some days ago. Couple weeks maybe ?

Oh, and in case it’s pertinent
$ cat /etc/dogtag
BeagleBoard.org Debian Image 2015-03-01

Wheezy 7.8 rootfs, and I’m using the pru’s without remoteproc / rpmsg.

Hi Rich,

Here is the update Robert added to his repo yesterday.

https://github.com/RobertCNelson/ti-linux-kernel-dev/blob/393f5ea242a86544063ec2af63ef270094bfa1da/patches/pru/0003-Add-rpmsg_pru-support.patch

Regards,
John

Hi Rich,

Here is the update Robert added to his repo yesterday.

https://github.com/RobertCNelson/ti-linux-kernel-dev/blob/393f5ea242a86544063ec2af63ef270094bfa1da/patches/pru/0003-Add-rpmsg_pru-support.patch

Thanks for this, John. I can't wait to give it a shot. Is there an example somewhere of how to use it? One of the challenges I face is modifying the LEDScape code to use this instead of pruss. However, it might force me to just write my own PRU code to do what I do with the PRU. In both cases, I'll probably need an example or other documentation on how to actually make it work.

Thanks,
Rick

Hi Rick,

In samples/rpmsg, you will find a way to test pruss-pru/virtio_bus. You need to configure your kernel to build the sample/rpmsg. Use "make menuconfig” and under "Kernel hacking”/“Sample kernel code”, enable “Build rpmsg client sample”.

Next, you need to build the PRU firmware from"

https://git.ti.com/pru-software-support-package

If you are using BBB, build examples/am335x/PRU_RPMsg_Echo_Interrupt0” and the relabel the output to am335x-pru0-fw and place it in the /lib/firmware folder.

After you install the kernel module, run the sample with:

modprobe rpmsg_client_sample

This will transmit 100 “hello world” message to the PRU which receives an interrupt, copies the message and then sends the same message back to Linux. You will see this in dmesg.

Regards,
John

Thanks!

Sorry for the dumb question, but where's the kernel repo and branch that this patch applies to (or where it has already been applied)? And where are these examples, in the -ti branches?

git clone https://github.com/RobertCNelson/ti-linux-kernel-dev.git
cd ti-linux-kernel-dev
checkout ti-linux-4.1.y
./build-kernel.sh

When you see menuconfig, enable samples/rpmsg under "Kernel Hacking”. Press exit and allow the build to continue. The sample code will be in KERNEL/samples/rpmsg.

Regards,
John