I have a binary that was written using the pasm (https://github.com/beagleboard/am335x_pru_package) for a system that used the 3.2 kernel. Everything was dandy, then we updated to the 3.12 kernel. I cannot get the PRU binary to load the way it did in the 3.2 kernel and was hoping it was still possible.
I found these patches that supposedly add support for device tree for the PRU (https://build.merproject.org/package/view_file/home:mike7b4:bbb/kernel-adaptation-bbb-v3.12/0086-These-are-the-patches-necessary-for-enabling-the-PRU.patch?expand=1) however I get the following kernel error when booting:
[ 3.015312] platform 4a300000.pruss: omap_device_late_idle: enabled but no driver. Idling [ 3.024313] ------------[ cut here ]------------ [ 3.029261] WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2359 _idle+0x1b4/0x208() [ 3.038494] omap_hwmod: pruss: idle state can only be entered from enabled state [ 3.046342] Modules linked in: [ 3.049604] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.12.30 #4 [ 3.055978] Backtrace: [ 3.058600] [] (dump_backtrace+0x0/0x10c) from [] (show_stack+0x18/0x1c) [ 3.067555] r6:c0030b60 r5:00000000 r4:c08b8894 r3:00000000 [ 3.073610] [] (show_stack+0x0/0x1c) from [] (dump_stack+0x84/0x9c) [ 3.082133] [] (dump_stack+0x0/0x9c) from [] (warn_slowpath_common+0x70/0x94) [ 3.091548] r5:00000009 r4:cf071df0 [ 3.095365] [] (warn_slowpath_common+0x0/0x94) from [] (warn_slowpath_fmt+0x38/0x40) [ 3.105423] r8:c07f6470 r7:c08e8a00 r6:a0000113 r5:c0884428 r4:c08843c8 [ 3.112579] [] (warn_slowpath_fmt+0x0/0x40) from [] (_idle+0x1b4/0x208) [ 3.121440] r3:c078e79c r2:c073091c [ 3.125255] [] (_idle+0x0/0x208) from [] (omap_hwmod_idle+0x2c/0x48) [ 3.133840] r5:c0884428 r4:c08843c8 [ 3.137658] [] (omap_hwmod_idle+0x0/0x48) from [] (omap_device_idle+0x40/0x80) [ 3.147164] r6:c07f660c r5:cf0d0980 r4:00000000 r3:cf0d0940 [ 3.153217] [] (omap_device_idle+0x0/0x80) from [] (omap_device_late_idle+0x78/0x88) [ 3.163277] r5:00000000 r4:cf105000 [ 3.167106] [] (omap_device_late_idle+0x0/0x88) from [] (bus_for_each_dev+0x68/0x9c) [ 3.177165] r4:00000000 r3:cf07ee1c [ 3.180980] [] (bus_for_each_dev+0x0/0x9c) from [] (__omap_device_late_init+0x2c/0x3c) [ 3.191225] r6:c08e8a00 r5:00000007 r4:c0849bb8 [ 3.196153] [] (__omap_device_late_init+0x0/0x3c) from [] (do_one_initcall+0x100/0x160) [ 3.206507] [] (do_one_initcall+0x0/0x160) from [] (kernel_init_freeable+0x10c/0x1d0) [ 3.216669] [] (kernel_init_freeable+0x0/0x1d0) from [] (kernel_init+0x10/0x158) [ 3.226383] [] (kernel_init+0x0/0x158) from [] (ret_from_fork+0x14/0x3c) [ 3.235336] r5:c05e407c r4:00000000 [ 3.239144] ---[ end trace c2b89e2ece3fcafd ]---
Has anyone successfully loaded a program the old way (UIO) on a newer kernel (moving towards remoteproc and rpmsg)? Any suggestions on getting the old way to work on a 3.12 kernel?