I don't remember exactly, but I don't think there are more than 2 PRU-ARM
interrupts on the PRUs. I believe the other interrupts can be mapped to
system interrupts using the interrupt map that you pass to
prussdrv_pruintc_init() (you'd have to write your own instead of using
PRUSS_INTC_INITDATA). It's been a while since I saw this, so maybe someone
else should confirm this.
An alternative solution to your problem is use something like a interrupt
vector, i.e., use part of the PRU RAM (maybe the first byte) to identify
which interrupt happened. You'd send the interrupt as
; Set c24 and c25 (data RAM in PRU1 and PRU0)
LDI32 r0, 0x24020
LDI r1, 0
SBBO &r1, r0, 0, 4
MOV &r28, INTERRUPT_NUMBER
SBCO r28, c24, 0, 4 ; Not sure about this
line, you should check
MOV r31.b0, 32 | PRU_EVTOUT_0
and read it as
prussdrv_map_prumem(PRUSS0_PRU1_DATARAM, &pru1_mem); /* You might
need to cast this to uint32_t */
prussdrv_pru_wait_event (PRU_EVTOUT_1);
prussdrv_pru_clear_event (PRU_EVTOUT_1, PRU1_ARM_INTERRUPT);
if(pru_mem1 == 0){
} else if (pru_mem1 == 1){
} ...
This is sort of a sketch, no guarantees it will work out of the box! Still,
hope it helps...
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.