GSoC Linux UIO driver for PRU

2019-07-13 Thread Nils Hölscher
Hi,

After I made sure that my fdt is correct I wondered why the pruss was still
not accessible.
When I researched more about userspace drivers in Linux I found out, that I
have overseen the pru UIO module in Linux.
This is the part that links the PRUs to the /dev/uio[0-7].
Which then would be used by the sources I currently use.
The UIO source is available here:
https://github.com/beagleboard/linux/blob/3.8/drivers/uio/uio_pruss.c
However this requires the linux UIO lib to load the modules and abstract
the device into a file.

While researching I also found that BSD has a PRU driver.
Also this driver is more feature rich as it support PRU debugging.
The sources can be found her:
https://bitbucket.org/rpaulo/libpru/src/default/
Additionally I found these sources in the FreeBSD tree:
https://github.com/freebsd/freebsd/blob/250e158ddf52459661439141407bca505d199c19/sys/arm/ti/ti_pruss.c
This code also registers the PRUs in /dev/.
On the other hand the BSD drivers have no documentation at all.

These are the code lines that will fail without a file in /dev.
Linux: https://github.com/nilhoel1/rtems-pru/blob/master/ti/prussdrv.c#L265
BSD:
https://bitbucket.org/rpaulo/libpru/src/5cb7271533a96d177e73492f7cc40fa4b28396a5/ti-pru.c#lines-614

So my questions are:
1. How are drivers registered to /dev in RTEMS? (examples)
2. Which driver would be a better starting point to bring pruss support to
RTEMS?

Best,
Nils Hölscher
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: GSoC Linux UIO driver for PRU

2019-07-13 Thread Chris Johns


On 13/7/19 5:16 pm, Nils Hölscher wrote:
> Hi,
> 
> After I made sure that my fdt is correct I wondered why the pruss was still 
> not
> accessible.
> When I researched more about userspace drivers in Linux I found out, that I 
> have
> overseen the pru UIO module in Linux.
> This is the part that links the PRUs to the /dev/uio[0-7].
> Which then would be used by the sources I currently use.
> The UIO source is available here:
> https://github.com/beagleboard/linux/blob/3.8/drivers/uio/uio_pruss.c
> However this requires the linux UIO lib to load the modules and abstract the
> device into a file.
> 
> While researching I also found that BSD has a PRU driver.
> Also this driver is more feature rich as it support PRU debugging.
> The sources can be found her:
> https://bitbucket.org/rpaulo/libpru/src/default/
> Additionally I found these sources in the FreeBSD tree:
> https://github.com/freebsd/freebsd/blob/250e158ddf52459661439141407bca505d199c19/sys/arm/ti/ti_pruss.c
> This code also registers the PRUs in /dev/.
> On the other hand the BSD drivers have no documentation at all.
> 
> These are the code lines that will fail without a file in /dev.
> Linux: https://github.com/nilhoel1/rtems-pru/blob/master/ti/prussdrv.c#L265
> BSD: 
> https://bitbucket.org/rpaulo/libpru/src/5cb7271533a96d177e73492f7cc40fa4b28396a5/ti-pru.c#lines-614
> 
> So my questions are:
> 1. How are drivers registered to /dev in RTEMS? (examples)

I suggest you look at cpukit/include/rtems/io.h and then for examples of this
interface being used in the bsp directory.

> 2. Which driver would be a better starting point to bring pruss support to 
> RTEMS?

The bitbucket set of drivers look pretty good so I think just use them and add
to the beagle bsp.

Chris
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Re: GSoC Linux UIO driver for PRU

2019-07-13 Thread Joel Sherrill
On Sat, Jul 13, 2019 at 1:42 PM Chris Johns  wrote:

>
>
> On 13/7/19 5:16 pm, Nils Hölscher wrote:
> > Hi,
> >
> > After I made sure that my fdt is correct I wondered why the pruss was
> still not
> > accessible.
> > When I researched more about userspace drivers in Linux I found out,
> that I have
> > overseen the pru UIO module in Linux.
> > This is the part that links the PRUs to the /dev/uio[0-7].
> > Which then would be used by the sources I currently use.
> > The UIO source is available here:
> > https://github.com/beagleboard/linux/blob/3.8/drivers/uio/uio_pruss.c
> > However this requires the linux UIO lib to load the modules and abstract
> the
> > device into a file.
> >
> > While researching I also found that BSD has a PRU driver.
> > Also this driver is more feature rich as it support PRU debugging.
> > The sources can be found her:
> > https://bitbucket.org/rpaulo/libpru/src/default/
> > Additionally I found these sources in the FreeBSD tree:
> >
> https://github.com/freebsd/freebsd/blob/250e158ddf52459661439141407bca505d199c19/sys/arm/ti/ti_pruss.c
> > This code also registers the PRUs in /dev/.
> > On the other hand the BSD drivers have no documentation at all.
> >
> > These are the code lines that will fail without a file in /dev.
> > Linux:
> https://github.com/nilhoel1/rtems-pru/blob/master/ti/prussdrv.c#L265
> > BSD:
> https://bitbucket.org/rpaulo/libpru/src/5cb7271533a96d177e73492f7cc40fa4b28396a5/ti-pru.c#lines-614
> >
> > So my questions are:
> > 1. How are drivers registered to /dev in RTEMS? (examples)
>
> I suggest you look at cpukit/include/rtems/io.h and then for examples of
> this
> interface being used in the bsp directory.
>

There is a helper in the IO Manager which is implemented as a call to
mknod()
which is a standard call.

>
> > 2. Which driver would be a better starting point to bring pruss support
> to RTEMS?
>




>
> The bitbucket set of drivers look pretty good so I think just use them and
> add
> to the beagle bsp.
>

+1 If needed,

>
> Chris
> ___
> devel mailing list
> devel@rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel