CPS |
Change l'état du processeur |
| ARM |
Syntaxe
CPSeffect iflags{, #mode}
|
|
CPS #mode
|
Paramètres
| Nom |
Description |
| effect |
Ce paramètre d'indiquer l'effet à appliquer : |
| IE |
Cette constante permet d'indiquer l'interruption ou l'annulation est activé. |
| ID |
Cette constante permet d'indiquer l'interruption ou l'annulation est désactivé. |
| iflags |
Ce paramètre permet d'indiquer un séquence d'une ou plusieurs constantes suivantes : |
| a |
Cette constante permet d'indiquer qu'il faut activer ou désactiver les abandons imprécise. |
| f |
Cette constante permet d'indiquer qu'il faut activer ou désactiver les interruptions FIQ. |
| i |
Cette constante permet d'indiquer qu'il faut activer ou désactiver les interruptions IRQ. |
| mode |
Ce paramètre permet d'indiquer le nombre du mode à changer |
Description
Cette instruction permet de changer l'état du processeur.
Remarques
- CPS permet de modifier l'état global du processeur : L'instruction CPS est utilisée pour changer certains aspects du comportement du processeur ARM,
notamment la gestion des interruptions et le mode de fonctionnement. Elle offre un contrôle direct sur l'environnement d'exécution du CPU, ce qui la rend essentielle
dans les systèmes embarqués ou temps réel.
- Peut activer ou désactiver les interruptions : Grâce aux indicateurs i, f et a, l'instruction CPS permet d'activer ou de désactiver les interruptions
IRQ, FIQ et les abandons imprécis. Par exemple, CPSID i désactive les interruptions IRQ. Ce type de contrôle est crucial pour protéger des sections critiques du code.
- IE et ID indiquent l'effet de la commande : L'effet souhaité (activation ou désactivation) est précisé avec les constantes IE (Enable) et ID (Disable).
Cela permet de structurer clairement l'instruction et d'éviter des erreurs d'interprétation. Par exemple, CPSIE i active les interruptions IRQ.
- CPS permet de changer le mode processeur : Outre la gestion des interruptions, CPS peut aussi modifier le mode du processeur (exemple : mode
utilisateur, superviseur, système, etc.) via un paramètre numérique. Cela offre la possibilité de passer dynamiquement d'un contexte d'exécution à un autre selon les
besoins du système.
- Instruction sensible, à utiliser avec précaution : Modifier les interruptions ou le mode processeur sans précaution peut avoir des conséquences graves
sur le système. Un désactivation incorrecte des interruptions, par exemple, peut bloquer la réponse aux événements critiques. Il est donc important d'utiliser CPS dans
un contexte bien défini et contrôlé.
- Ne peut être utilisée qu'en mode privilégié : L'instruction CPS est réservée aux modes privilégiés du processeur. En mode utilisateur, son exécution
est interdite et génère une exception. Cela garantit que seuls les processus ayant des droits suffisants peuvent modifier les paramètres critiques du système.
- Excellente pour protéger les sections critiques : Dans les programmes embarqués, il est courant d'utiliser CPSID i au début d'une section critique (pour
désactiver les IRQ) et CPSIE i à la fin. Cela empêche toute interruption inappropriée qui pourrait corrompre des données partagées ou perturber des opérations
atomiques.
- Syntaxe concise mais puissante : Avec une seule instruction courte comme CPSIE if, on peut réactiver plusieurs types d'interruptions en une fois. Cette
concision permet un code clair, rapide à exécuter, et facile à intégrer dans les routines système ou de démarrage du noyau.
Dernière mise à jour : Dimanche, le 12 novembre 2017