Infotro/sem/int (#11)
This commit is contained in:
15 files changed
+188
-5
No files matched your search
@@ -20,6 +20,7 @@
|
|||||||
## [SEm - Système Embarqué](/infotro/SEm/)
|
## [SEm - Système Embarqué](/infotro/SEm/)
|
||||||
- [PLA - Programmation en langage assembleur](/infotro/SEm/PLA.md)
|
- [PLA - Programmation en langage assembleur](/infotro/SEm/PLA.md)
|
||||||
- [ASM - Assembleur ARM](/infotro/SEm/ASM.md)
|
- [ASM - Assembleur ARM](/infotro/SEm/ASM.md)
|
||||||
|
- [INT - Interruptions](/infotro/SEm/INT)
|
||||||
|
|
||||||
|
|
||||||
# TODOs
|
# TODOs
|
||||||
|
|||||||
@@ -0,0 +1,136 @@
|
|||||||
|
<header><h1>
|
||||||
|
Intérruptions
|
||||||
|
</h1></header>
|
||||||
|
|
||||||
|
# Principe d’une interruption
|
||||||
|
Une interruption est un signal envoyé par un périphérique au processeur pour lui indiquer qu’il a besoin de son attention.
|
||||||
|
Le processeur interrompt alors le programme en cours d’exécution pour traiter l’interruption.
|
||||||
|
Une fois l’interruption traitée, le processeur reprend l’exécution du programme interrompu.
|
||||||
|
|
||||||
|
## Mécanisme d'une interruption
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
***IRQ*** : Interrupt ReQuest <br>
|
||||||
|
***INTA*** : INTerrupt Acknowledge <br>
|
||||||
|
|
||||||
|
## Process
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
1. Interruption
|
||||||
|
2. Sauvegarde du contexte (Registres et position du programme)
|
||||||
|
3. Run du programme d'interruption
|
||||||
|
4. Retour du programme d'interruption
|
||||||
|
5. Restauration du contexte (Registres et position du programme)
|
||||||
|
|
||||||
|
|
||||||
|
Etat du processeur définit par :
|
||||||
|
- Programme Counter ($R_{15}$)
|
||||||
|
- Status Register
|
||||||
|
- $R_0 \to R_4$
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
1. IRQ synchronization
|
||||||
|
- IRQ asynchrone => synchronisation à l'aide d'une bascule D
|
||||||
|
2. Finalisation de l'instruction en cours
|
||||||
|
3. Hardware context
|
||||||
|
- Sauvegarde du PC (Programme Counter) et SR (Status Register)
|
||||||
|
- Jump à l'adresse de l'interruption
|
||||||
|
4. Software context
|
||||||
|
- Sauvegarde des registres $R_0 \to R_4$
|
||||||
|
5. Traitement de l'interruption
|
||||||
|
- Fetch de l'instruction
|
||||||
|
|
||||||
|
## Table des vecteurs
|
||||||
|
La table des vecteurs d'interruption est une table qui contient les adresses des routines de traitement des interruptions.
|
||||||
|
Elle est située à une adresse fixe dans la mémoire.
|
||||||
|
Lorsqu’une interruption survient, le processeur utilise le numéro de l’interruption pour accéder à la table des vecteurs
|
||||||
|
et obtenir l’adresse de la routine de traitement correspondante.
|
||||||
|
|
||||||
|
**IVR** : Interrupt Vector Register
|
||||||
|
Le IVR est un registre du processeur qui contient l’adresse de la table des vecteurs d’interruption.
|
||||||
|
|
||||||
|
|
||||||
|
## Priorité des interruptions
|
||||||
|
|
||||||
|
***FIQ*** : Fast Interrupt reQuest - Interruption de plus haute priorité
|
||||||
|
***IRQ*** : Interrupt ReQuest - Interruption de priorité basse
|
||||||
|
|
||||||
|
# Mécanisme d'une interruption
|
||||||
|
Le traitement d'une interruption (exceptions en ARM), nécessite les mécanismes suivants :
|
||||||
|
- Registre d'états
|
||||||
|
- Gestion des exceptions
|
||||||
|
- Plusieurs piles
|
||||||
|
- Table des vecteurs
|
||||||
|
- Gestion des priorités
|
||||||
|
|
||||||
|
## Registre d'états
|
||||||
|
Le registre d'états (CPSR) contient les informations suivantes :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
| M[4..0] | Mode | Notation |
|
||||||
|
|---------|------------|----------|
|
||||||
|
| 10000 | User | _usr |
|
||||||
|
| 10001 | FIQ | _fiq |
|
||||||
|
| 10010 | IRQ | _irq |
|
||||||
|
| 10011 | Supervisor | _svc |
|
||||||
|
| 10111 | Abort | _abt |
|
||||||
|
| 11011 | Undefined | _und |
|
||||||
|
| 11111 | System | _sys |
|
||||||
|
|
||||||
|
## Gestion des exceptions
|
||||||
|
Les exceptions sont des événements qui interrompent le flux d’exécution normal du processeur.
|
||||||
|
Les exceptions peuvent être de plusieurs types :
|
||||||
|
|
||||||
|
| Exception | Mode | Description |
|
||||||
|
|--------------------------|------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| Reset | _svc | Survient lorsque la broche ***RESET*** du processeur est activée. A l’enclenchement du système (power-up) ou à la mise sous tension du processeur |
|
||||||
|
| Undefined instruction | _und | Survient lorsque ni le processeur ni les coprocesseurs associés ne reconnaissent l’instruction courante |
|
||||||
|
| Software interrupt (SWI) | _svc | Définie par l’utilisateur, cette instruction d’interruption synchrone permet à un programme en mode utilisateur (user) d’accéder à des opérations privilégiées qui ne s’exécutent qu’en mode superviseur (supervisor) |
|
||||||
|
| Prefetch abort | _abt | Survient lorsque le processeur tente d’exécuter une instruction qui provient d’une adresse mémoire illégale |
|
||||||
|
| Data abort | _abt | Survient lorsque le processeur tente de lire ou d’écrire une donnée à une adresse mémoire illégale |
|
||||||
|
| IRQ | _irq | Survient lorsqu’une interruption extérieure au processeur est activée et que le bit I du registre d’états ***CPRS*** est mis à 0 |
|
||||||
|
| FIQ | _fiq | Survient lorsqu’une interruption rapide extérieure au processeur est activée et que le bit F du registre d’états ***CPRS*** est mis à 0 |
|
||||||
|
|
||||||
|
## Piles
|
||||||
|
Le processeur ARM possède plusieurs piles pour gérer les interruptions.
|
||||||
|
Chaque mode d’exécution possède sa propre pile et donc surtout son propre pointeur de pile.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Table des vecteurs
|
||||||
|
La table des vecteurs d’interruption est une table qui contient les adresses des routines de traitement des interruptions.
|
||||||
|
Elle est située à une adresse fixe dans la mémoire à l'adresse ***0x00000000***.
|
||||||
|
Lorsqu’une interruption survient, le processeur utilise le numéro de l’interruption pour accéder à la table des vecteurs
|
||||||
|
et obtenir l’adresse de la routine de traitement correspondante.
|
||||||
|
|
||||||
|
| Vector address | Exception type | Exception mode | Priority (1 high, 6 low) |
|
||||||
|
|----------------|--------------------------|----------------|--------------------------|
|
||||||
|
| 0x00000000 | Reset | supervisor | 1 |
|
||||||
|
| 0x00000004 | Undefined instruction | undef | 6 |
|
||||||
|
| 0x00000008 | Software interrupt (SWI) | supervisor | 6 |
|
||||||
|
| 0x0000000C | Prefetch abort | abort | 5 |
|
||||||
|
| 0x00000010 | Data abort | abort | 2 |
|
||||||
|
| 0x00000014 | Reserved | Not applicable | Not applicable |
|
||||||
|
| 0x00000018 | Interrupt (IRQ) | irq | 4 |
|
||||||
|
| 0x0000001C | Fast Interupt (FIQ) | fiq | 3 |
|
||||||
|
|
||||||
|
# Entrées / Sorties d'une interruption
|
||||||
|
L'entrée d'une interruption se fait par la broche ***IRQ*** ou ***FIQ*** du processeur :
|
||||||
|
|
||||||
|
1. Termine l'instruction en cours
|
||||||
|
2. Sauvegarde du contexte : PC, CPSR
|
||||||
|
3. Met le bit du type d'interruption et le nouveau mode à jour
|
||||||
|
4. Sauvegarde l'addresse de retour (PC - 4) dans le LR du mode
|
||||||
|
5. Saute à l'adresse de la routine d'interruption qui se trouve dans la table des vecteurs
|
||||||
|
6. Sauvegarde les registres de travail
|
||||||
|
7. Exécute la routine d'interruption
|
||||||
|
|
||||||
|
La sortie d'une interruption :
|
||||||
|
|
||||||
|
1. Restaure les registres de travail
|
||||||
|
2. Restaure le SPSR du mode dans le CPSR et simultanément met à jour le PC
|
||||||
|
3. Reprend l'exécution du programme interrompu
|
||||||
@@ -3,14 +3,14 @@ Systèmes Embarqués
|
|||||||
</h1></header>
|
</h1></header>
|
||||||
|
|
||||||
# Assembleur
|
# Assembleur
|
||||||
- [PLA - Programmation en Language Assemleur](/infotro/arm/PLA.md)
|
- [PLA - Programmation en Language Assemleur](/infotro/arm/PLA)
|
||||||
- [ASS - ASSembleur ARM](/infotro/arm/ASM.md)
|
- [ASS - ASSembleur ARM](/infotro/arm/ASM)
|
||||||
|
|
||||||
# C
|
# C
|
||||||
- SPR - Sous PRogrammges
|
- SPR - Sous PRogrammges
|
||||||
- PSC - Pointers and Memory in C
|
- PSC - Pointers and Memory in C
|
||||||
- LES - Les Entrées-Sorties
|
- LES - Les Entrées-Sorties
|
||||||
- INT - Les INTerruptions
|
- [INT - Les INTerruptions](/infotro/SEm/INT)
|
||||||
- DMA - Direct Memory Access
|
- DMA - Direct Memory Access
|
||||||
- CAM - Memoire cache
|
- CAM - Memoire cache
|
||||||
|
|
||||||
|
|||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
"structures": {
|
||||||
|
"main": {
|
||||||
|
"bits": 32,
|
||||||
|
"ranges": {
|
||||||
|
"31": {
|
||||||
|
"name": "N",
|
||||||
|
"description": "Negative / Less Than"
|
||||||
|
},
|
||||||
|
"30" : {
|
||||||
|
"name": "Z",
|
||||||
|
"description": "Zero"
|
||||||
|
},
|
||||||
|
"29" : {
|
||||||
|
"name" : "C",
|
||||||
|
"description" : "Carry / Borrow / Extend"
|
||||||
|
},
|
||||||
|
"28" : {
|
||||||
|
"name" : "V",
|
||||||
|
"description" : "Overflow"
|
||||||
|
},
|
||||||
|
"27-8" : {
|
||||||
|
"name": "",
|
||||||
|
"descrpition" : ""
|
||||||
|
},
|
||||||
|
"7" : {
|
||||||
|
"name" : "I",
|
||||||
|
"description" : "IRQ disable"
|
||||||
|
},
|
||||||
|
"6" : {
|
||||||
|
"name" : "F",
|
||||||
|
"description" : "FIQ disable"
|
||||||
|
},
|
||||||
|
"5" : {
|
||||||
|
"name" : "T",
|
||||||
|
"description" : "State bit"
|
||||||
|
},
|
||||||
|
"4-0" : {
|
||||||
|
"name" : "M4 .. M0",
|
||||||
|
"description" : "Mode bits"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 39 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 181 KiB |
+3
-2
@@ -12,5 +12,6 @@
|
|||||||
* [Signaux et échantillonnage](/infotro/Eln/SignauxEtEchantillonnage)
|
* [Signaux et échantillonnage](/infotro/Eln/SignauxEtEchantillonnage)
|
||||||
* [Filtres](/infotro/Eln/Filtres)
|
* [Filtres](/infotro/Eln/Filtres)
|
||||||
* [SEm - Systèmes Embarqués](/infotro/SEm/)
|
* [SEm - Systèmes Embarqués](/infotro/SEm/)
|
||||||
* [PLA - Programmation en langage assembleur](/infotro/SEm/PLA.md)
|
* [PLA - Programmation en langage assembleur](/infotro/SEm/PLA)
|
||||||
* [ASM - Assembleur ARM](/infotro/SEm/ASM.md)
|
* [ASM - Assembleur ARM](/infotro/SEm/ASM)
|
||||||
|
* [INT - Interruptions](/infotro/SEm/INT)
|
||||||
Reference in new issue
Block a user