How to enable /dev/uio for PRU communication on Debian 9.2 kernel 4.9.54-ti-r68 ?

999 views
Skip to first unread message

simo zz

unread,
Oct 23, 2017, 7:55:41 AM10/23/17
to BeagleBoard
Hello,

I am trying to communicate with the PRU unit on a Debian 9.2 and kernel 4.9.54-ti-r68 by Robert Nelson, but the file

/dev/uio


is not loaded / enabled by default. Looking for *pru* on my file-system I have:

/run/udev/data/+drivers:platform:pruss-soc-bus
/run/udev/data/+module:pruss_soc_bus
/run/udev/data/+platform:4a326000.pruss-soc-bus
/run/udev/data/+mbox:mbox_pru1
/run/udev/data/+mbox:mbox_pru0
/lib/firmware/uio_pruss_enable-00A0.dtbo
/lib/modules/4.9.54-ti-r68/kernel/drivers/remoteproc/pru_rproc.ko
/lib/modules/4.9.54-ti-r68/kernel/drivers/remoteproc/pruss.ko
/lib/modules/4.9.54-ti-r68/kernel/drivers/remoteproc/pruss_intc.ko
/lib/modules/4.9.54-ti-r68/kernel/drivers/remoteproc/pruss_soc_bus.ko
/lib/modules/4.9.54-ti-r68/kernel/drivers/rpmsg/rpmsg_pru.ko
/var/lib/dpkg/info/libaprutil1-dbd-sqlite3:armhf.md5sums
/var/lib/dpkg/info/libaprutil1:armhf.shlibs
/var/lib/dpkg/info/libaprutil1:armhf.md5sums
/var/lib/dpkg/info/libaprutil1:armhf.list
/var/lib/dpkg/info/libaprutil1-ldap:armhf.list
/var/lib/dpkg/info/libaprutil1:armhf.symbols
/var/lib/dpkg/info/libaprutil1:armhf.triggers
/var/lib/dpkg/info/libaprutil1-ldap:armhf.md5sums
/var/lib/dpkg/info/libaprutil1-dbd-sqlite3:armhf.list
/usr/lib/git-core/git-prune
/usr/lib/git-core/git-prune-packed
/usr/lib/arm-linux-gnueabihf/libaprutil-1.so.0.5.4
/usr/lib/arm-linux-gnueabihf/libaprutil-1.so.0
/usr/lib/libprussdrv.so
/usr/local/lib/libprussdrvd.a
/usr/local/lib/libprussdrvd.so
/usr/local/lib/libprussdrv.a
/usr/local/lib/libprussdrv.so
/usr/local/include/prussdrv.h
/usr/local/include/pruss_intc_mapping.h
/usr/share/pastebin.d/sprunge.us.conf
/usr/share/man/man1/git-prune-packed.1.gz
/usr/share/man/man1/git-prune.1.gz
/usr/share/doc/libaprutil1-ldap
/usr/share/doc/libaprutil1
/usr/share/doc/libaprutil1-dbd-sqlite3
/usr/share/initramfs-tools/hooks/ti_pru_firmware
/usr/share/lintian/overrides/libaprutil1
/opt/scripts/device/x15/pru-rpmsg_client_sample
/opt/scripts/device/x15/pru-rpmsg_client_sample/am57xx-pru2_1-fw
/opt/scripts/device/x15/pru-rpmsg_client_sample/am57xx-pru2_0-fw
/opt/scripts/device/x15/pru-rpmsg_client_sample/am57xx-pru1_1-fw
/opt/scripts/device/x15/pru-rpmsg_client_sample/am57xx-pru1_0-fw
/opt/scripts/device/bone/capes/BB-BEAGLELOGIC/beaglelogic-pru0
/opt/scripts/device/bone/capes/BB-BEAGLELOGIC/beaglelogic-pru1
/opt/scripts/device/bone/pru-rpmsg_client_sample
/opt/scripts/device/bone/pru-rpmsg_client_sample/am335x-pru0-fw
/opt/scripts/device/bone/pru-rpmsg_client_sample/am335x-pru1-fw
/opt/source/dtb-4.4-ti/src/arm/am33xx-pruss-rproc.dtsi
/opt/source/dtb-4.4-ti/src/arm/am33xx-pruss-uio.dtsi
/opt/source/bb.org-overlays/src/arm/uio_pruss_enable-00A0.dts
/sys/kernel/debug/clk/pruss_ocp_gclk
/sys/devices/platform/ocp/4a300000.pruss
/sys/devices/platform/ocp/4a326000.pruss-soc-bus
/sys/devices/platform/ocp/480c8000.mailbox/mbox/mbox_pru1
/sys/devices/platform/ocp/480c8000.mailbox/mbox/mbox_pru0
/sys/class/mbox/mbox_pru1
/sys/class/mbox/mbox_pru0
/sys/firmware/devicetree/base/__symbols__/mbox_pru1
/sys/firmware/devicetree/base/__symbols__/pru1
/sys/firmware/devicetree/base/__symbols__/pruss
/sys/firmware/devicetree/base/__symbols__/pruss_soc_bus
/sys/firmware/devicetree/base/__symbols__/mbox_pru0
/sys/firmware/devicetree/base/__symbols__/pru0
/sys/firmware/devicetree/base/__symbols__/pruss_ocp_gclk
/sys/firmware/devicetree/base/__symbols__/pruss_mdio
/sys/firmware/devicetree/base/__symbols__/pruss_intc
/sys/firmware/devicetree/base/ocp/pruss_soc_bus@4a326000
/sys/firmware/devicetree/base/ocp/pruss_soc_bus@4a326000/pruss@4a300000
/sys/firmware/devicetree/base/ocp/pruss_soc_bus@4a326000/pruss@4a300000/pru@4a338000
/sys/firmware/devicetree/base/ocp/pruss_soc_bus@4a326000/pruss@4a300000/pru@4a334000
/sys/firmware/devicetree/base/ocp/pruss@4a300000
/sys/firmware/devicetree/base/ocp/mailbox@480C8000/mbox_pru1
/sys/firmware/devicetree/base/ocp/mailbox@480C8000/mbox_pru0
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_42_pru_ecap_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_91_pruout_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_27_pruin_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_41_pruin_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_91_pruin_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P8_15_pru_ecap_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P8_11_pruout_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_92_pruout_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P8_16_pruin_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_17_pru_uart_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_21_pru_uart_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_26_pru_uart_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P8_12_pruout_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_18_pru_uart_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_92_pruin_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_22_pru_uart_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_30_pruin_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_30_pruout_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_26_pruin_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_27_pruout_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P8_15_pruin_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_24_pruin_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_P9_24_pru_uart_pin
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/prcm@200000/clocks/pruss_ocp_gclk@530
/sys/bus/platform/devices/4a300000.pruss
/sys/bus/platform/devices/4a326000.pruss-soc-bus
/sys/bus/platform/drivers/pruss-soc-bus
/sys/bus/platform/drivers/pruss-soc-bus/4a326000.pruss-soc-bus
/sys/module/pruss_soc_bus
/sys/module/pruss_soc_bus/drivers/platform:pruss-soc-bus


so I understand it has been enabled through device-tree and somehow it can be used.
Also, the uio kernel module is loaded by default (i can see using lsmod) but the

/dev/uio

isn't there.

How to enable it ? What do I have to do to load it automatically at boot ?

Thank you in advance,
Simon

Robert Nelson

unread,
Oct 23, 2017, 10:11:40 AM10/23/17
to Beagle Board, simo....@gmail.com
On Mon, Oct 23, 2017 at 3:59 AM, simo zz <simo....@gmail.com> wrote:
> Hello,
>
> I am trying to communicate with the PRU unit on a Debian 9.2 and kernel
> 4.9.54-ti-r68 by Robert Nelson, but the file

4.9.x-ti-ry is remoteproc pruss only..

Use the 4.9.x-bone kernel

cd /opt/scripts/tools/
git pull
sudo ./update_kernel.sh --bone-kernel --lts-4_9

and make sure you set the uio overlay:

https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_PRU_Options

Regards,

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

simo zz

unread,
Oct 23, 2017, 10:23:11 AM10/23/17
to Robert Nelson, Beagle Board
Hello Robert,

Thank you very much. It works now. :)

Regards,
Simon

lb...@temple.edu

unread,
Mar 23, 2018, 9:54:19 PM3/23/18
to BeagleBoard

I had a 4.9.78-ti-r94 kernel, and I used the update_kernel script to update the kernel to 4.9.89-bone10. However, when I run "run_test_motor -f", I still get an error as:

ERROR: pru-rproc driver missing


Please let me know how I should fix this. Thanks.


Li Bai

Jason Kridner

unread,
Apr 12, 2018, 12:46:19 AM4/12/18
to BeagleBoard


On Friday, March 23, 2018 at 9:54:19 PM UTC-4, lb...@temple.edu wrote:

I had a 4.9.78-ti-r94 kernel, and I used the update_kernel script to update the kernel to 4.9.89-bone10. However, when I run "run_test_motor -f", I still get an error as:

ERROR: pru-rproc driver missing


Please let me know how I should fix this. Thanks.


Robotics Cape library works with the PRU remoteproc driver, not PRU UIO driver. Go back to the -ti kernel and enable the RPROC driver overlay.
Reply all
Reply to author
Forward
0 new messages