uio_pruss on Mainline Linux

Hi, I’ve been wondering for a while, since there is a driver in mainline Linux called uio_pruss, what can we actually do with it? Does it work with the beaglebone black? I have built Linux 4.5.2 with this support enabled (i’ve tried a few other versions too) but there’s no information on what needs to be done for somebody to enable this module to actually register the PRU in Linux. I assume it works in ti-linux but I would rather not use that for my personal use case since the mainline kernel is good enough for all my other purposes.

Thanks.

Here is the patch we've been carrying..

https://github.com/RobertCNelson/bb-kernel/tree/am33x-v4.5/patches/pru_uio

All the TI/Kernel people want people to use remoteproc_pruss...

While everyone uses uio_pruss. :wink:

Regards,

Robert Nelson
https://rcn-ee.com/

Thanks, that appears to be a pretty small patch, I’ll try it out.
I would have no problem using the remoteproc_pruss if it was in the official kernel but I can’t see any as of 4.6-rc4.

remoteproc_pruss is getting "redesigned" again... ;(

I'm tempted to say, let's just clean it up and push it.

If someone complains, uio_pruss has been in mainline for awhile, and
remoteproc_pruss has gone no where. :wink:

Regards,

Thanks, that appears to be a pretty small patch, I’ll try it out.
I would have no problem using the remoteproc_pruss if it was in the official kernel but I can’t see any as of 4.6-rc4.

The main problem I see with remoteproc is that it is not as well documented as uio_pruss. Many aspects of how to use, and setup remoteproc are not very clear. For instance, you have these magic “map” files that I have been able to find zero documentation on. Which is in relation to configuration for PRUs as far as I can tell. .bss, data segments, etc, but it’s not documented at all. So we’re left to assume we know what we’re doing. I personally, do not like to operate like that at all.

I had someone on this group tell me not long ago that I must be joking when I tried to explain I was note sure how something worked with remoteproc on the PRU’s. But see that the problem when you’re dealing with someone whose known the secrete handshake for a long enough period of time that they forget the rest of the world doesn’t know what’s going on.

Anyway, uio_pruss has been around long enough to have worked well on the white, and the driver code is really short and easy to read through. Not to mention that UIO is just really cool technology to begin with.

remoteproc is really cool technology too as far as I’m concerned, but where it really belongs in my personal opinion, is multi core application processors. So you could for instance run a dual core processor as a single core running Linux, and a single core running bare metal. THAT is an awesome concept. But reinventing drivers for a high speed peripheral that already has reallt good drivers is . . . well . . ." don’t fix what ain’t broke . . "

<heh> That reminds me of the 68000 CPU manuals back in the day (when
you actually had dead-tree printed book data-sheets). The first
edition was *HUGE* (about 2 inches thick), but after several years had
gone by, the manual was only about 1/2 an inch thick. They had
removed all the basic information everyone was supposed to "just
know", but without which you would be totally lost.

I guess it's called "progress". :slight_smile:

Now I just save each and every datasheet I ever download from the
internet. Usually, the latest version is what I need, but sometimes
there are details in the older versions that got removed in a
subsequent update.

But this was done a while ago when the added support for ethernet. I’m not aware of any other changes.

Regards,
John

That reminds me of the 68000 CPU manuals back in the day (when
you actually had dead-tree printed book data-sheets). The first
edition was HUGE (about 2 inches thick), but after several years had
gone by, the manual was only about 1/2 an inch thick. They had
removed all the basic information everyone was supposed to "just
know", but without which you would be totally lost.

I guess it’s called “progress”. :slight_smile:

Now I just save each and every datasheet I ever download from the
internet. Usually, the latest version is what I need, but sometimes
there are details in the older versions that got removed in a
subsequent update.

Soundsl iek you and my buddy would get along just dandy. heh, he must have several gigs of pdf’s ( yes . . datasheets ) that migrate from new system to new system when he upgrades :wink:

He’s also a mame / retro arcade board collector, lots of 68000’s out there :wink:

remoteproc_pruss is getting “redesigned” again… ;(

woow, here is new documentation from TI and now its worthless? 3.5. PRU-ICSS / PRU_ICSSG — Processor SDK Linux for AM335X Documentation

Maybe you should explain why you think this is worthless?

Regards,
John

Maybe you should explain why you think this is worthless?

if the software is under going a redesign what are the changes? does this mean the documentation is now worthless due to the redesign?

The main concepts remain the same. What has changed is TI are moving to use standard API’s instead of some of the custom API’s they used in the past. For example one of the chief improvements over 4.1 they are making is to introduce a irqchip, so that client users can use standard irq handling API instead
of the custom API in 4.1. TI should be introducing this in their 4.4 TI Processor SDK release. We however should have access to the update in a few weeks.

Regards,
John