arm - meaning - controlador de fiq & irq-brazo
arm processor (4)
Tradicionalmente, el brazo tiene una línea de interrupción que puede enviar a uno de los dos controladores FIQ o IRQ. FIQ tiene un banco más grande de modo FIQ que solo registra, por lo que tiene menos de lo que necesita almacenar en la pila. Desde allí, lee los registros específicos del proveedor, si los hay, para determinar el origen de la interrupción y luego ramificar en manejadores separados.
Más recientemente, tiene arquitecturas de brazo doblado con muchas interrupciones 128, 256 cada una con un manejador separado. Por lo tanto, preguntar de manera genérica sobre el brazo no es tan variado, pero es como pedir algo genérico sobre x86.
Toda esta información está fácilmente disponible en los manuales de referencia ARM arquitectónicos para las diferentes arquitecturas y los pines en el núcleo (lo que el proveedor construye su chip) está documentada en los manuales técnicos de referencia para los distintos núcleos (también muy fáciles de obtener) . infocenter.arm.com tiene la arquitectura y los manuales de referencia técnica, así como amba / axi (el bus de datos al que se conecta el proveedor). Su pregunta está completamente respondida en esos documentos.
Soy nuevo para armar y tengo algunos aspectos relacionados con IRQ y FIQ. Por favor, trata de aclarar esto.
¿Cuanta cantidad de brazo de canal FIQ & IRQ tiene?
¿Y qué cantidad de controladores podemos escribir para cada canal?
Además, si podemos registrar el controlador múltiple para el canal de interrupción único, de qué forma el brazo llega a saber qué manejador ejecutar.
La distinción entre IRQ
y FIQ
se remonta a los primeros días de ARM cuando fue diseñada por Acorn. Siempre fue el caso que la línea IRQ
estaba conectada a un controlador de interrupción que multiplexaba un gran número de fuentes de interrupción. Esto es precisamente lo que sucede en todos los ARM modernos
La razón detrás del FIQ era proporcionar una respuesta de latencia extremadamente baja con la máxima prioridad (puede adelantarse de forma segura al controlador de IRQ
). El número comparativamente grande de registros de sombra facilita la escritura de manejadores que almacenan el estado del manejador en los registros de la CPU y no golpean la pila.
Los registros paralelos son casi opuestos a los utilizados habitualmente por APCS para la llamada a funciones, por lo que escribir manejadores en C provocaría un empuje y eventual aparición de hasta 8 registros no sombreados. Tener cualquier tipo de demultiplexación de interrupción borra cualquier ventaja de rendimiento que FIQ
podría haber dado.
Todo esto significa que solo hay realmente algún beneficio en el uso de FIQ
para aplicaciones muy especializadas donde se requiere una respuesta de interrupción en tiempo realmente dura para un dispositivo de interrupción, y usted está dispuesto a escribir su controlador en ensamblador. También te quedarás con la posibilidad de sincronizar con el resto del sistema, algunos de los cuales dependerían de deshabilitar la IRQ
para mantener sincronizados los datos.
El procesador ARM admite directamente solo UNA IRQ y ONE FIQ. ARM admite múltiples interrupciones a través de un periférico llamado Interrupt Controller. Los controladores de interrupción estándar ARM se llaman GIC (Controlador de interrupción genérico).
El GIC tiene una serie de entradas para que los periféricos conecten sus líneas de interrupción y dos líneas de salida que se conectan a IRQ y FIQ. Básicamente actúa como un MUX. Un controlador GIC configurará configuraciones tales como prioridad de interrupción, tipo (IRQ / FIQ), enmascaramiento, etc.
En los sistemas ARM tradicionales, hay una entrada para IRQ y FIQ en los Vectores de excepción. Dependiendo de qué línea disparó la interrupción, se llama a IRQ o controlador FIQ. El manejador de interrupciones consulta el GIC (registros de interfaz de CPU GIC, para ser específicos) para obtener el número de interrupción. En función de este número de interrupción, se invoca el controlador de dispositivo correspondiente.
El número de interrupciones depende de la implementación de GIC específica. Por lo tanto, debería consultar el manual del controlador de interrupción de su sistema para obtener los detalles.
Nota: El manejo de interrupciones es ligeramente diferente dependiendo del núcleo de ARM específico que está codificando.
En realidad, la pregunta es un poco complicada. Debe especificar en la pregunta a qué arquitectura en ARM trabaja. ARM v7-A y ARM v7-R Architecture Reference Manual (ARM ARM) especifica un FIQ y un IRQ, ya que muchos ya han sido respondidos. Pero ARMv7-M (utilizado en los procesadores Cortex-M) integra un controlador de interrupción en el procesador, y por lo tanto ofrece un NMI (en lugar de FIQ) y hasta 240 líneas IRQ.
Para más información: ARMv7 A y ARMv7-R Architecure manual de referencia: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index.html
ARMv7-M Architecture Manual de referencia: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403e.b/index.html
Como ejemplo, la hoja de especificaciones de Cortex M4: http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php