Hello,
I have few more questions about PRU and TI SDK AM335x on beaglebone black Hardware.
1. It is said that for next SDK based on kernel 3.14 LTS, the beaglebone community code and TI code will be pretty much aligned for PRU. I want to know in which direction either in UIO driver side or RemoteProc driver side, PRU software will be aligned ?
2. After installing PRU package released on 30 june 2014 for TI SDK7, I find out that in Documentation "PRU-Package-v1.0-Manifest" pruss_rpmsg software name is also listed but in /drivers/rpmsg no such file or driver available and also no such patch available is in PRU-Swpkg that create pruss_rpmsg driver . Is it error in documentation or some files are missing in a PRU package?
3. In one of my project, I tried to get SPI0 interrupt in PRU. I followed the example PRU_PRUtoARM_Interrupt. SPI peripheral Interrupt Status Register indicate event is generated, but I could not get in PRU. I use Interrupt Number 44 for McSPI0 as referenced in AM335x-PRU-Reference guide and map channel 1 to host channel 1. Is Interrupt number 44 is correct? Any solution? I tested GPIO0 Interrupt number 57, PRU get interrupt successfully in this case. (baremetal project on BBB)
4. It is written on TI wiki that I should change PRU.out file to rproc_pru0_fw so that pruss_remoteproc driver load the PRU program, but this syntax does not load the program and give error message. If I try rproc-pru0-fw, it seems to work.
5. With Remoteproc, the examples provided does not work out of the box e.g PRU_gpioToggle example when try to load out the box gives following messages
pruss-rproc 4a300000.pruss: creating platform devices for PRU cores
[ 22.020163] remoteproc0: 4a334000.pru0 is available
[ 22.025573] remoteproc0: Note: remoteproc is still under development and considered experimental.
[ 22.035184] remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[ 22.095168] pru-rproc 4a334000.pru0: booting the PRU core manually
[ 22.133999] remoteproc0: powering up 4a334000.pru0
[ 22.182005] pru-rproc 4a334000.pru0: rproc_boot failed
[ 22.223568] pru-rproc: probe of 4a334000.pru0 failed with error -12
But if I include header file <rsc_table_am335x_pru.h>, the following messages appears
[ 22.276970] remoteproc1: 4a338000.pru1 is available
[ 22.282277] remoteproc1: Note: remoteproc is still under development and considered experimental.
[ 22.291839] remoteproc1: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[ 22.324978] pru-rproc 4a338000.pru1: booting the PRU core manually
[ 22.357013] remoteproc1: powering up 4a338000.pru1
[ 22.414664] remoteproc1: Booting fw image rproc-pru1-fw, size 28732
[ 22.422968] pruss-rproc 4a300000.pruss: configured system_events = 0x000000000f7e0000 intr_channels = 0x000000ff host_intr = 0x000000cf
[ 22.435990] remoteproc1: remote processor 4a338000.pru1 is now up
[ 22.442645] pru-rproc 4a338000.pru1: PRU rproc node /ocp/pruss@4a300000/pru@4a338000 probed successfully
I also tried PRU_Direct_Connect0 and Connect1 examples but no success
pruss-rproc 4a300000.pruss: creating platform devices for PRU cores
[ 9.060012] remoteproc0: 4a334000.pru0 is available
[ 9.065313] remoteproc0: Note: remoteproc is still under development and considered experimental.
[ 9.074957] remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guarantee d.
[ 9.257162] remoteproc0: registered virtio0 (type 7)
[ 9.262707] pru-rproc 4a334000.pru0: PRU rproc node /ocp/pruss@4a300000/pru@4a334000 probed successfully
[ 9.329701] remoteproc1: 4a338000.pru1 is available
[ 9.335001] remoteproc1: Note: remoteproc is still under development and considered experimental.
[ 9.344622] remoteproc1: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guarantee d.
[ 9.635051] pru-rproc 4a338000.pru1: booting the PRU core manually
[ 9.672447] remoteproc1: powering up 4a338000.pru1
[ 9.738602] remoteproc1: Booting fw image rproc-pru1-fw, size 28732
[ 9.746755] pruss-rproc 4a300000.pruss: configured system_events = 0x000000000f7e0000 intr_channels = 0x000000ff host_intr = 0x000000cf
[ 9.759835] remoteproc1: remote processor 4a338000.pru1 is now up
[ 9.766459] pru-rproc 4a338000.pru1: PRU rproc node /ocp/pruss@4a300000/pru@4a338000 probed successfully
[ 16.448776] remoteproc0: powering up 4a334000.pru0
[ 16.493157] remoteproc0: Booting fw image rproc-pru0-fw, size 45560
[ 16.500311] pru-rproc 4a334000.pru0: [0] event 17 already assigned to channel 1
[ 16.508137] remoteproc0: Failed to process post-loading resources: -17
[ 16.515232] remoteproc0: rproc_boot() failed -17
6. For my application, I need to have user interaction between ARM and PRU to handle events and read/write data on memory e.g DDR. Any user space program will be helpful to understand to how events are handled and messages are communicated using remoteproc/rpmesg driver from userspace.