Necesito propagar una interrupción de mi núcleo IP FPGA personalizado al sistema HPS de un DE0_nano_SoC (arquitectura HPS-FPGA del Ciclón V) y manejarlo en Linux. He buscado mucho en Google para decir con confianza que este tema no está bien cubierto.
Funcionalidad requerida
El núcleo IP FPGA personalizado establece una señal de interrupción. El HPS registra esta señal ( posiblemente escribe en el núcleo IP de la FPGA personalizada para des-afirmar la señal de interrupción) y copia unos pocos bytes de los registros de la FPGA a un programa que se ejecuta en Linux.
La elección de Linux es arbitraria, preferiblemente Angstrom/Yocto, que tengo en marcha ahora mismo, pero si el FreeRTOS ofreciera una implementación más simple yo iría a por él.
Mis suposiciones (por favor corrígeme si me equivoco)
1) El Controlador de Interrupciones en el HPS reconoce las interrupciones generadas por la FPGA, comenzando en el número 73 (hay algún desplazamiento, pero en principio están mapeadas con valores constantes).
2) Linux para ARM Cortex A9, es capaz de reconocer interrupciones específicas del proveedor (para diferentes periféricos como I2C0/1/2, UART0/1, etc).
Pregunta
1) ¿Reconoce Linux las interrupciones de la FPGA, mapeadas por el Controlador de Interrupciones de HPS?
2) ¿Necesito desarrollar un controlador, para que el Linux pueda reconocer las interrupciones de la FPGA?
3) Esta parece ser una característica muy importante de toda la arquitectura del Ciclón V. ¿No ha desarrollado Altera ya tales controladores, para manejar interrupciones simples de FPGA a HPS en Linux?