Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct dmem_t {
- u_int32_t addr; /* r8 */
- u_int32_t size; /* r9 */
- u_int32_t fill; /* r10 */
- u_int32_t count; /* r11 */
- };
- int
- main()
- {
- unsigned int ret;
- void *extvirt;
- struct dmem_t dmem;
- tpruss_intc_initdata pruss_intc_initdata = PRUSS_INTC_INITDATA;
- prussdrv_init();
- /* Open PRU Interrupt */
- printf("Opening PRU\n");
- ret = prussdrv_open(PRU_EVTOUT_0);
- if (ret)
- {
- printf("prussdrv_open open failed\n");
- return (ret);
- }
- prussdrv_map_extmem(&extvirt);
- dmem.addr = prussdrv_get_phys_addr(extvirt);
- dmem.size = prussdrv_map_extmem_size();
- dmem.fill = 0xDEADBEEF;
- dmem.count= 4;
- printf("physical=0x%08x, virtual=%p\n", dmem.addr, extvirt);
- printf("Disabling PRU0\n");
- prussdrv_pru_disable(PRU_NUM);
- ret = prussdrv_pru_write_memory(PRUSS0_PRU0_DATARAM, 0, (unsigned int *) &dmem, sizeof(dmem));
- prussdrv_pruintc_init(&pruss_intc_initdata);
- long len = sizeof(PDSPcode);
- printf("Loading %ld bytes of instructions into PRU\n", len);
- prussdrv_pru_write_memory(PRUSS0_PRU0_IRAM, 0, (unsigned int *) PDSPcode, len);
- printf("\nStarting PRU\n");
- prussdrv_pru_enable(PRU_NUM);
- printf("Press enter to generate an interrupt.\n");
- getchar();
- printf ("\tGenerate interrupt \n");
- prussdrv_pru_send_event (ARM_PRU0_INTERRUPT);
- printf("Done.\n");
- u_int32_t *ptr = (u_int32_t *) extvirt;
- int i;
- for(i=0; i<dmem.count; ++i) {
- printf("%08x ", *ptr++);
- }
- printf("\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement