Page 1 of 1

Epiphany III interrupt to ARM host

PostPosted: Mon May 01, 2017 4:06 pm
by GreggChandler
Does the hardware and/or driver support generating an interrupt to the ARM?

I have currently written code that shares data and makes requests of the ARM from the Epiphany via shared external memory. Currently, I poll shared memory via a mutex that I share between the ARM and Epiphany III. This works well, but necessarily generates quite a bit of mesh traffic. I can throttle the polling, but that impacts performance. Does the hardware and/or driver support an interface that would allow the Epiphany to generate an interrupt or signal to the ARM? Even a single interrupt that I could share with a type field in memory would reduce the mesh traffic.

I understand that I could spin up an ARM thread to poll a single shared memory location, but that really doesn't alleviate the mesh traffic--it just localizes it. Interrupt generation amongst/between the Epiphany cores works well. My experience suggests that I could generate an interrupt from the ARM to the Epiphany. Generation of an interrupt from the Epiphany to the ARM would allow me to treat the ARM and Epiphany III cores as peers, albeit heterogeneous ones.

Re: Epiphany III interrupt to ARM host

PostPosted: Mon May 01, 2017 5:39 pm
by olajep
Yes, but experimental

It's implemented as a blocking ioctl call. But if you open the device file (can be opened multiple times if needed) with O_NONBLOCK you can do polling instead.
No poll()/epoll()/select() support.

See:
https://github.com/adapteva/epiphany-ex ... ilbox-test

// Ola

Re: Epiphany III interrupt to ARM host

PostPosted: Mon May 01, 2017 7:47 pm
by GreggChandler
Ola:

Thanks for the quick reply and the link. I'll give it a try. select() would be nice (grin), but I'll take whatever I can get!