Use prudebug or some other pru debugger and step through your pru code. 
Maybe you are setting that interrupt.

You can also "cat /proc/interrupts" to view interrupt counts to see if it's 
not blocking because your interrupt is firing. The pru interrupts will be 
there as pruss_evt0, evt1, etc.

-Brandon

On Monday, March 17, 2014 8:22:54 AM UTC-7, Carlo Pane wrote:
>
>
> Hi, 
>
> I'm using a beaglebone black for my project and I would like to use the 
> PRUs included into Sitara processor.
>
> I've followed some "how to"s  found on internet and in all of them there 
> are examples employing PRU0, but not PRU1. I've have done some tuning in 
> order to use PRU1, but I can't make it works. My set up for using PRU with 
> interrupt is the following:
>
> For the C part:
> #include "prussdrv.h" 
> #include <pruss_intc_mapping.h> 
> [...] 
> tpruss_intc_initdata pruss_intc_initdata = PRUSS_INTC_INITDATA; 
> [...] prussdrv_open(PRU_EVTOUT_1); 
> [...] prussdrv_pruintc_init(&pruss_intc_initdata); 
> [...] prussdrv_exec_program (PRU_NUM, "./prucode.bin"); 
> prussdrv_pru_wait_event (PRU_EVTOUT_1); /* things... 
> */prussdrv_pru_clear_event
> (PRU_EVTOUT_1,PRU1_ARM_INTERRUPT);
>
>
>
>
> While, in the assembly part i do:
>
> #define PRU1 
> #ifdef PRU0 
> #define PRU_OFFSET 0x22000 
> #else 
> #define PRU_OFFSET 0x24000 
> #endif 
>
> // Refer to this mapping in the file - pruss_intc_mapping.h 
> #define PRU0_PRU1_INTERRUPT 17 
> #define PRU1_PRU0_INTERRUPT 18 
> #define PRU0_ARM_INTERRUPT 19 
> #define PRU1_ARM_INTERRUPT 20 
> #define ARM_PRU0_INTERRUPT 21 
> #define ARM_PRU1_INTERRUPT 22 
> #define CONST_PRUCFG C4 
> #define CONST_PRUDRAM C24 
> #define CONST_PRUSHAREDRAM C28 
> #define CONST_DDR C31 
>
> // Address for the Constant table Block Index Register (CTBIR) 
> #define CTBIR PRU_OFFSET+0x00020 
> // Address for the Constant table Programmable Pointer Register 0(CTPPR_0) 
> #define CTPPR_0 PRU_OFFSET+0x00028 
> // Address for the Constant table Programmable Pointer Register 1(CTPPR_1)
> #define CTPPR_1 PRU_OFFSET+0x0002C 
> // Enable OCP master port 
> LBCO r0, CONST_PRUCFG, 4, 4 
> CLR r0, r0, 4 
> SBCO r0, CONST_PRUCFG, 4, 4 
>
> /* Configure the programmable pointer register for PRU0 by setting 
> c28_pointer[15:0] field to 0x0120. This will make C28 point to 0x00012000 
> (PRU shared RAM).*/ 
>
> MOV r0, 0x00000100
> MOV r1, CTPPR_0 
> ST32 r0, r1 CLOOP: 
> [...] 
> MOV r31.b0, PRU1_ARM_INTERRUPT +16 
> [...] 
> JMP CLOOP
>
> My problem is that fuction *prussdrv_pru_wait_event *has not a blocking 
> behavior. Or rather, program doesn't wait on that function for the PRU 
> instruction  
>
>
> *MOV r31.b0, PRU1_ARM_INTERRUPT +16.*Am I doing something wrong?
>

-- 
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.

Reply via email to