/***************************************************************************** * Include Files * *****************************************************************************/ #include // Driver header file #include #include /***************************************************************************** * Explicit External Declarations * *****************************************************************************/ /***************************************************************************** * Local Macro Declarations * *****************************************************************************/ #define PRU_NUM 0 #define ADDEND1 0x0010F012u #define ADDEND2 0x0000567Au #define AM33XX /***************************************************************************** * Local Typedef Declarations * *****************************************************************************/ /***************************************************************************** * Local Function Declarations * *****************************************************************************/ static int LOCAL_exampleInit ( unsigned short pruNum ); static unsigned short LOCAL_examplePassed ( unsigned short pruNum ); /***************************************************************************** * Local Variable Definitions * *****************************************************************************/ /***************************************************************************** * Intertupt Service Routines * *****************************************************************************/ /***************************************************************************** * Global Variable Definitions * *****************************************************************************/ static void *pruDataMem; static unsigned int *pruDataMem_int; /***************************************************************************** * Global Function Definitions * *****************************************************************************/ int main (void) { unsigned int ret; tpruss_intc_initdata pruss_intc_initdata = PRUSS_INTC_INITDATA; printf("\nINFO: Starting %s example.\r\n", "PRU_encoder"); /* Initialize the PRU */ prussdrv_init (); /* Open PRU Interrupt */ ret = prussdrv_open(PRU_EVTOUT_0); if (ret) { printf("prussdrv_open open failed\n"); return (ret); } /* Get the interrupt initialized */ prussdrv_pruintc_init(&pruss_intc_initdata); /* Initialize example */ printf("INFO: Initializing example.\r\n"); LOCAL_exampleInit(PRU_NUM); /* Execute example on PRU */ printf("INFO: Executing example.\r\n"); prussdrv_exec_program (PRU_NUM, "./PRU_encoder.bin"); /* Wait until PRU0 has finished execution */ printf("INFO: Waiting for HALT command.\r\n"); prussdrv_pru_wait_event (PRU_EVTOUT_0); printf("INFO: PRU completed transfer.\r\n"); prussdrv_pru_clear_event (PRU_EVTOUT_0, PRU0_ARM_INTERRUPT); /* Check if example passed */ if ( LOCAL_examplePassed(PRU_NUM) ) { printf("INFO: Example executed succesfully.\r\n"); } else { printf("INFO: Example failed.\r\n"); } /* Disable PRU and close memory mapping*/ prussdrv_pru_disable (PRU_NUM); prussdrv_exit (); return(0); } /***************************************************************************** * Local Function Definitions * *****************************************************************************/ static int LOCAL_exampleInit ( unsigned short pruNum ) { //Initialize pointer to PRU data memory if (pruNum == 0) { prussdrv_map_prumem (PRUSS0_PRU0_DATARAM, &pruDataMem); } else if (pruNum == 1) { prussdrv_map_prumem (PRUSS0_PRU1_DATARAM, &pruDataMem); } pruDataMem_int = (unsigned int*) pruDataMem; return(0); } static unsigned short LOCAL_examplePassed ( unsigned short pruNum ) { return 1; }