Conceptos básicos para comenzar con la arquitectura ARM-A (2) Manejo de excepciones

Curso de instructor de campo de entrenamiento de aprendizaje de 14 días: Zhou Hehe "Arquitectura ARMv8/ARMv9 - Inicio rápido"

1. Tipos de manejo de excepciones

1.1 Interrupción

En ARM, la prioridad de FIQ es más alta que la de IRQ. Habrá un controlador de interrupción dentro del SOC responsable de la programación de prioridad de interrupción y luego enviará una señal de interrupción al procesador. Las interrupciones son excepciones en el modo asíncrono.

1.2 Cancelación

Las excepciones de cancelación se dividen en cancelaciones de datos y cancelaciones de instrucciones, y la MMU puede capturar errores e informarlos al procesador.

1.3 Restablecer

El reinicio es la excepción de mayor prioridad en el procesador, generalmente dividida en reinicio de encendido y reinicio de software.

1.4 Anomalías generadas por el software

ARMv8 proporciona excepciones generadas por software 3. El motivo de esta excepción es que el software intenta ingresar a un nivel de excepción más alto.

SVC permite que los programas en modo usuario soliciten servicios del sistema operativo
HVC permite que los clientes (sistema operativo Linux) soliciten servicios de host
SMC permite que los programas del mundo normal soliciten servicios de seguridad

1.5 Excepciones síncronas y asíncronas

Como sugiere el nombre, una excepción síncrona debe esperar a que la CPU termine de procesar la excepción actual antes de continuar con la ejecución de las instrucciones.

Excepciones comunes de sincronización:

Acceso a otros niveles de registros, como EL1 actualmente, si accede a registros EL2, se producirá una excepción Errores de traducción de direcciones/permisos de dirección SVC, HVC y SMC
no alineados del SP Excepciones asincrónicas comunes:


Interrupciones físicas IRQ, FIQ y errores del sistema
Interrupciones virtuales vIRQ, vFIQ, vSError

2. Modelo de excepción ARMv8

inserte la descripción de la imagen aquí
La descripción del nivel de excepción de ARMv8-a es la siguiente:
1) Lo primero que se debe tener en cuenta es que en AArch64 no existen conceptos de modos de procesador como Usuario, SVC y ABT, pero ARMv8 debe ser compatible con versiones anteriores. , estos se manejan. El modo del controlador se asigna a 4 niveles de excepción.
2) La aplicación está ubicada en EL0 con el nivel de privilegio más bajo, el sistema operativo invitado (kernel de Linux, ventana, etc.) está ubicado en EL1, el hipervisor que proporciona soporte de virtualización está ubicado en EL2 (puede que no esté implementado) y Seurity Monitor brinda soporte de seguridad está ubicado en EL3 (es posible que no se implemente).
3) Solo cuando ocurre una excepción (o cuando regresa el procesamiento de la excepción), se puede cambiar el nivel de excepción (esta es también la razón por la que se nombró el nivel de excepción, para manejar la excepción). Cuando ocurre una excepción, hay dos opciones, permanecer en el EL actual o saltar a un EL superior, y el EL no se puede degradar. De manera similar, cuando regresa el procesamiento de excepciones, hay dos opciones, quedarse en el EL actual o ajustarse a un EL más bajo.

3. Controlador de interrupción GIC

Debido a la gran cantidad de periféricos y sus interrupciones relacionadas en el SOC, y existen muchos métodos de configuración diferentes para cada interrupción, para reducir la carga en la CPU, la configuración y administración de las interrupciones del procesador moderno generalmente se implementan a través de la interrupción. controlador.

GIC es un controlador de interrupción lanzado por arm que se puede usar con procesadores cortex-A y cortex-R.Actualmente hay cuatro versiones, a saber, GICv1 - GICv4. GICv3 es un controlador de interrupción ampliamente utilizado en el diseño de SOC basado en armv8.Las funciones de GICv4 y GICv3 son básicamente las mismas, pero para mejorar el rendimiento de la virtualización, se agrega la capacidad de inyectar directamente interrupciones virtuales.

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/In_engineer/article/details/128028429
Recomendado
Clasificación