To make a system with a minimal footprint, I am compiling my own kernel for the BeagleBone black.
With this kernel I am trying to use the PRU using the uio-pruss (which memory maps the PRU memory and offers interrupts to userspace).
However, I cannot access the PRU memory.
I tried to use devmem (part of busybox) to read the address to which the PRU is mapped and I get back:
[ 568.572896] Unhandled fault: external abort on non-linefetch (0x1018) at 0xb6fd5000
[ 568.580634] pgd = 17e21f9e
[ 568.583361] [b6fd5000] *pgd=9d4e4831, *pte=4a300183, *ppte=4a300a32
What I found for this type of error is that it could be caused by not having the right clocks enabled (https://forums.xilinx.com/t5/Embedded-Linux/Unhandled-fault-external-abort-on-non-linefetch-0x1018-at/td-p/904286)
When I boot with the default ubuntu image for the BeagleBone Black (4.14.108-ti-r113), I am able to read the PRU memory.
Therefore, I compared all clocks on the default ubuntu and adapted uio_pruss to enable all these clocks.
This did not solve the issue.
Anybody has some suggestions on what might be different between a linux-4.14.108 kernel and dtb and the default ubuntu image?