So, I have one of the PRU’s toggling a GPIO output to create a ~50MHz clock. On the 'scope I can see the voltage of the signal is ~0.8v not 3.3 when it’s running more slowly.
This is toggling pin P8:11 (GPIO1_13) by the way, and I’m not sure if there’s any L/C on-board that is slowing it down. I’ve set up /lib/firmware/BB-BONE-PRU-00A0.dts to look like:
You need to be in priviged mode to switch on the PRUSS (ie echo PRUSSDRV > /sys/devices/bone_capemgr.9/slots).
Once the PRUSS is running, there’s no kernel software between the PRU and the pinmux registers. So the answer is yes, the PRU can do pinmuxing in privileged or unprivileged user mode.
Test the examples in libpruio to see this happen on your system
button configures an GPIO input pin with high resistor
stepper configures four output pins
sos unlocks the user LED3 to control this GPIO pin
You can reach 100 MHz to toggle a GPIO pin in open loop control. This is as fast as the PWM devices. (When you need closed loop control it slows down a lot due to the latency on the OCP port.)