Necesito propagar una interrupción de mi núcleo de IP FPGA personalizado al sistema HPS de un DE0_nano_SoC (arquitectura del ciclón V HPS-FPGA) y manejar en Linux. He buscado bastante 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 de IP de FPGA personalizado para anular la confirmación de la señal de interrupción) y copia unos pocos bytes de los registros en el FPGA a un programa que se ejecuta en Linux.
La elección de Linux es arbitraria, preferiblemente Angstrom / Yocto, que estoy ejecutando en este momento, pero si el FreeRTOS ofreciera una implementación más simple, lo haría.
Mis suposiciones (corríjame si está mal)
1) El controlador de interrupciones en el HPS reconoce las interrupciones generadas por FPGA, comenzando en el número 73 (hay algunos cambios, pero en principio se asignan 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 del FPGA, asignadas por el controlador de interrupciones HPS?
2) ¿Debo desarrollar un controlador para que Linux pueda reconocer las interrupciones de FPGA?
3) Esto parece ser una característica bastante importante de toda la arquitectura del Cyclone V. ¿Ya Altera ha desarrollado dichos controladores para manejar las interrupciones simples de FPGA a HPS en Linux?