Systemes temps reel et systemes embarquesArchitecture des ordinateurs
Loıc Cuvillon
Telecom Physique Strasbourg
11 novembre 2015
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 1 / 84
Sommaire
1 Raspberry
2 Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3 Exceptions et Interruptions
Definition
Controleur d’interruptions et traitement
4 Gestion de la memoire (pagination)
5 Les entrees-sorties (I/O)
I/O par port
I/O mappees en memoire
6 Le temps : Horloge et Timers
L’horloge temps reel
Les timers
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 2 / 84
Bibliographie
Bibliographie
Architecture :
Architecture de l’ordinateur, 5eme edition, Andrew Tanenbaum, Pearson
education, 2005. par le createur de l’OS Minix
Documentation technique :
Intel Architecture Software Developer’s Manuel
ARM Architecture Reference Manual
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 3 / 84
Bibliographie
Little/Big Endian
Petit/Gros boutiste (etymologie : voyage de Gulliver)
exemple : la valeur 433=0x01B1 necessitant 2 octets en memoire
Big endian : most significant bit (MSB : 01h) en premier
Little Endian : lest significant bit (LSB : B1h) en premier
Little-Endian (x86,arm)adresse memoire 00 01
B1 01
Big-Endian (powerpc,arm,mips)
adresse memoire 00 01
01 B1
Protocole IP : big endian (pour tous, interoperabilite)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 4 / 84
Raspberry
Plan
1 Raspberry
2 Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3 Exceptions et Interruptions
Definition
Controleur d’interruptions et traitement
4 Gestion de la memoire (pagination)
5 Les entrees-sorties (I/O)
I/O par port
I/O mappees en memoire
6 Le temps : Horloge et Timers
L’horloge temps reel
Les timers
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 5 / 84
Raspberry
Hardware
System on chip (Soc) ARM/GPU
+ SDRAM, DMA, MMU, GPIO, UART
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 6 / 84
Raspberry
Gpio
GPIO : General Purpose InputOutput
configurable en entree ou sortie
niveau binaire : 0 - 3.3 Volt
peut produire une interruption
pas de CNA/CAN disponible
(mais un PWM)
GPIO particuliers
Liaison serie RS232 (RX,TX)
I2C (SDA/SCL)
SPI(MOSI, MISO)
PWM
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 7 / 84
Raspberry
RS-232
RS232 :une norme de liaison serie
3 fils : GND, Transmission (Tx),
Reception (Rx)
bit 0 = niveau haut +3 a +15V
bit 1 = niveau bas -15V
Communication null-modem :
Periph 1 Periph 2
GND ↔ GND
TX ↔ RX
RX ↔ TX
utilise un UART
baudrate = debit en
symboles/seconde
(<bits/seconde)
UART
composant qui serialise les
donnees
frame standard :
1 bit de start a 0
8 bits (l’octet de data)
1 bit de parite (ou non)
1 bit de fin a 1 (ou 2 bits)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 8 / 84
Raspberry
BerrylClip
Carte Berryclip+
Connexion haut-parleur, leds, interrupteurs sur les GPIOs
(Haut−parleur)
Pins
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 9 / 84
Raspberry
Connexion au RPI via la liaison serie
Un adaptateur USB RS232 3.3V TTL
conversion niveau RS232 vers 0-3.3V du Rpi
+ emulation d’un port serie pour les PC recents via /dev/ttyUSB0
7
1
13
Berryclip Pins
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 10 / 84
Raspberry
Connexion au RPI via la liaison serie
le RPi par defaut ouvre un terminal sur son port serie
login/passwd : pi/raspberry
Se connecter au RPi
1 Inserer la SD-card (ne pas alimenter le RPi)
2 Connecter le cable serie entre le PC et le RPi3 la commande screen /dev/ttyUSB0 115200 dans un terminal pour
se connecter
115200 est le baudrate cote RPi
sortir de l’utilitaire screen : touches [ctrl-a] puis [k]
4 alimenter le Rpi (les messages du noyau apparaissent, puis le login
apres les 60s de timeout du DHCP)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 11 / 84
Raspberry
Tools : mount
systeme de fichier
un systeme de fichier = organise le stockage et la recuperation de
l’information sous forme de fichiers nommes.
les partitions disques (disques dur, cle USB) sont des peripheriques
nommes /dev/sda1, /dev/sda2, /dev/sdd2 ..
Montage d’un systeme de fichier
mount [partition] [dir]
monter une partition sur un repertoire
umount [partition] ou umount [dir]
demonter une partition
df
liste les systemes de fichers montes
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 12 / 84
Raspberry
Tools : mount
/ boot/
lib/
mnt/
Readme.txt
/ /boot
/lib
/mnt
heros_S2_ep03.avi
/ENSPS/
Presentation_R5.ppt
heros_S2_ep03.avi
/ENSPS/
Presentation_R5.ppt
Disque dur /dev/sda : Clef USB
mount −t auto /dev/sda/ /mnt/
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 13 / 84
Raspberry
Tools : divers
Tools
cat [file]
concatener des fichiers
mais ici affiche le contenu sur la sortie standard
less ou more
decoupe le flux de la sortie standart en page
(touches : [b] page precedente, [space] suivante, [q] exit)
exemple : cat encyclopedie.txt | less
tar xf [archive]
decompresser une archive au format tar
sudo {-s}
execute la commande en tant que root,
-s ouvre un shell root
dmesg
messages de debug du noyau linux
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 14 / 84
Raspberry
Tools : manipulation fichiers
cp [file] [file/dir]
copie le fichier dans un autre fichier ou repertoire
cp -r [rep] [rep]
copier un repetoire dans un autre
mv [file/dir] [file/dir]
deplacer un fichier/repertoire dans un autre fichier ou repertoire
rm [file]
effacer un fichier
rm -r [dir]
effacer un repertoire (recursif)
mkdir [dir]
creer un repertoire
cd [dir]
changer de repertoire (.. le repertoire parent)
pwd
affiche le repertoire courant
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 15 / 84
Raspberry
Tools : editeur de texte
Vi (vim) : vi filemame
touche [echap]
sortir du mode courant
touche [i] ou touche [R]
mode insertion ou remplcement
touche([echap]) :w
ecrire le fichier
touche ([echap]) :x
sauver et quitter
touche ([echap]) :q!
forcer quitter
nano
plus classique. Menus via touche [ctrl] + lettre
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 16 / 84
Processeur ARM
Plan
1 Raspberry
2 Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3 Exceptions et Interruptions
Definition
Controleur d’interruptions et traitement
4 Gestion de la memoire (pagination)
5 Les entrees-sorties (I/O)
I/O par port
I/O mappees en memoire
6 Le temps : Horloge et Timers
L’horloge temps reel
Les timers
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 17 / 84
Processeur ARM Architecture ARM : principes
Architecture ARM (Advance RISC Machine)
processeur RISC 32 bit
Reduced Instruction Set Computer ; instr. de taille fixe (32bits)
architecture ”load and store”
(operation arithmetique realisable uniquement entre registres)
avantages : architecture epuree et frequence d’execution rapide
inconvenient : programme plus long (2x) que le meme en CISC
populaire dans l’embarque : lego mindstorm, nintendo DS ; apple
ipod,iphone (consommation electrique)
la societe ARM
ne fabrique pas de processeurs mais les dessine !
vend des licences et ses dessins a des fondeurs
percoit des royalties sur les processeurs vendus
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 18 / 84
Processeur ARM Architecture ARM : principes
L’architecture externe du ARM
bus d’adresses 32 bits :
4Go de RAM possible ;
bus de donnees
(+ instruction : Archi. Van
Neumann)
2 lignes d’interruptions ;
nReset : reinitialisation ;
nRW : selection
ecriture/lecture
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 19 / 84
Processeur ARM Architecture ARM : principes
Fonction d’un processeur (Central Processing Unit)
Execution sequentielle d’instructions au travers d’un pipeline
Fetch Instruction
Decode
Execute
Etapes du pipeline ARM7
Fetch : Recuperer le code de
l’instruction a executer
Decode : Decode instruction et
registres a utiliser
(preparation des chemins de
donnees)
Execute : Execution instruction
lecture registres ;
operation ;
ecriture resultat registre ;
...
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 20 / 84
Processeur ARM Architecture ARM : principes
Architecture Interne d’un processeur
R1
R2
R3
IR
...
PCselectionBus source
ALU ALU operation mode
Address bus
Data bus Memory
C
A B
Single Core CPU
and
Con
trol
Uni
t
Dec
ode
Registres : stockage de
mots (16, 32, 64 bits
suivant architecture)
ALU : Unite Arithmetique
et Logique ;
+,-,*,/,ET,OU,XOR,
decalage,. . .
Unite de decodage etcommande : generation
signaux de commande
(operation ALU, routage
des bus A,B et C).
Bus memoire :
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 21 / 84
Processeur ARM Architecture ARM : principes
Architecture Interne d’un processeur
R1
R2
R3
IR
...
PCselectionBus source
ALU ALU operation mode
Address bus
Data bus Memory
C
A B
Single Core CPU
and
Con
trol
Uni
t
Dec
ode
Registres
PC (R15) : Programme Counter
adresse de l’instruction en
cours ;
incremente par le CPU ;
(ou IP, instruction pointer)
IR : mot de l’instruction en cours
R1,R2,R3.. R12 : registres a
usages generaux
CPSR : current program status
register
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 22 / 84
Processeur ARM Architecture ARM : principes
CSPR register : Program status
mise a jour apres chaque instruction
bits N, Z et V mis a jour suivant le resultat de l’instruction precedente
definit le mode d’operation du processeur
M[0:4]
Data endianness bit
IRQ Disable
Mode bits
04
I
9 7283031
zero
negative/less than
EVZN C
overflow
carry
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 23 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
ISA : Instruction Set Architecture
Jeu d’instructions d’un CPU
Langage machine
langage natif du processeur definit par les concepteurs
seul et unique pour un processeur
un code binaire
l’Assembleur (Assembly language) :
representation symbolique du langage machine
usage de mnemoniques pour faciliter la vie du programmeur
→ non-portable ( 6= langage haut-niveau (C,java))
Exemple :
Saut d’adresse, ”branching” : B chez ARM et JMP chez INTEL
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 24 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
ISA : Instruction Set Architecture
Instruction d’addition sur processeur ARM
doc technique : ADD Rd Rn Rm
Rd=Rn+Rm (Rd : registre destination)
RdRn00000
0121620252831 2126
1c o n d 0 0 shift
3
Rm
Assembleur : ADD R3 R2 R3 − > Langage machine :0xE0823003
000 0 000 0000 0001
0121620252831 2126
0 1 0001 11 0 1100 1100
(cond=1110 signifie ”toujours executer”)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 25 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
PC initialise a 100
initialisation par un autre programme (ou reset du CPU)
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x00050x204 : 0x????
Memory
Data bus
Read/Write
0x104 : LDR R3, #2
0x100
0x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 26 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
Fetch de l’instruction par l’IFU (Instruction Fetch Unit)
adresse de l’instruction donnee par le PC
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x00050x204 : 0x????
Memory
Data bus
Read/Write
0x104 : LDR R3, #2
0x100
0x100
R
0x100 : LDR R2, 0x200
0x10C : STR R3, 0x204LDR R2, 0x200
LDR R2, 0x200
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 27 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
fin du Fetch : code de l’instruction a executer dans IR
Decodage et preparation du chemin de donnees
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x00050x204 : 0x????
Memory
Data bus
Read/Write
0x100
0x104 : LDR R3, #20x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
LDR R2,0x200
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 28 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
Execution de l’instruction LDR
LDR : load dans le registre Rx une donnee referencee ou une #constante
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x00050x204 : 0x????
R
Memory
Data bus
Read/Write
0x100
0x0005
0x104 : LDR R3, #2
0x0005
0x200 0x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
LDR R2,0x200
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 29 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
fin de l’instruction
Incrementation du PC de 0x004 : pointe sur instruction suivante
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x00050x204 : 0x????
Memory
Data bus
Read/Write
0x104 : LDR R3, #2
0x104
0x0005
0x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
LDR R2,0x200
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 30 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
Fetch de l’instruction suivante
ecrase le contenu de l’IR
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x00050x204 : 0x????
Memory
Data bus
Read/Write
0x0005
0x104 : LDR R3, #20x104
R0x104
LDR R3, #2
LDR R3, #2
0x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 31 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
Decode et Execute l’instruction
LDR : load dans le registre Rx une donnee referencee ou une #constante
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x00050x204 : 0x????
Memory
Data bus
Read/Write
0x0005
LDR R3, #2
0x104 : LDR R3, #2
0x0002
0x104
0x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 32 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
fin de l’instruction : Incremente de 0x004 le PC
Fetch de l’instruction suivante
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R30x10C : STR R3, 0x204
0x200 : 0x00050x204 : 0x????
Memory
Data bus
Read/Write
0x0005
0x104 : LDR R3, #2
0x0002
0x108
0x108
ADD R3, R2, R3
R
ADD R3,R2,R3
0x100 : LDR R2, 0x200
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 33 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
execution de l’instruction
ADD Rdest,Ra,Rb : addition Rdest<=Rb+Ra
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x00050x204 : 0x????
Memory
Data bus
Read/Write
0x0005
0x104 : LDR R3, #2
ADD R3,R2,R3
0x108
0x05+
0x02
0x0007
0x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 34 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
Fin instruction : incremente le PC
Fetch instruction suivante
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x00050x204 : 0x????
Memory
Data bus
Read/Write
0x0005
0x104 : LDR R3, #2
0x0007
0x10C
0x10C 0x100 : LDR R2, 0x200
0x10C : STR R3, 0x204STR R3,0x204
STR R3,0x204
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 35 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Illustration : Realisation d’une addition
Execution de l’instruction
STR Rd Add : sauve contenu de Rd a l’adresse Add
...
ALU
Single Core CPU
Address busR1
R2
R3
PC
IR
0x108 : ADD R3, R2, R3
0x200 : 0x0005
Memory
Data bus
Read/Write
0x0005
0x104 : LDR R3, #2
0x0007
0x10C
0x204
W0x204 : 0x0007
0x0007
0x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
STR R3,0x204
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 36 / 84
Processeur ARM Jeu d’instruction et language assembleur ARM
Le pipeline d’execution
execution en parallele d’1 Fetch, 1 Decode et 1 Execution
→ acceleration du debit d’execution : 1 execution d’instruction/cycle
(alors que le traitement d’une instruction : 3 cycles)
Fetch de l’instruction pointee par PC+08 pendant execution de PC
Execute
Execute
Execute
temps(Inst.addr: PC)
(Inst.addr: PC−0x08)
ADD R3, R3, R1
LDR R2, #6
Fetch Decode
Fetch Decode
Fetch Decode
ADD R2, R2, R1...
selectionBus source
ALU ALU operation modeC
A B
and
Con
trol
Uni
t
Dec
ode
PC
IR
R3 R1
R1
R2
R3Data bus
Address bus PC
LDR R2, #6
1 cycle 1 cycle1 cycle
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 37 / 84
Exceptions et Interruptions
Plan
1 Raspberry
2 Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3 Exceptions et Interruptions
Definition
Controleur d’interruptions et traitement
4 Gestion de la memoire (pagination)
5 Les entrees-sorties (I/O)
I/O par port
I/O mappees en memoire
6 Le temps : Horloge et Timers
L’horloge temps reel
Les timers
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 38 / 84
Exceptions et Interruptions Definition
Exceptions (et Interruptions)
Definition d’une exception
arret temporaire du flux normal d’instructions pour repondre a un
evenement exceptionnel ou externe
Exception synchrone (”Exception”) : resultat d’une instruction executeepar le processeur generant une erreur
arithmetique : division par 0, debordement (overflow)
memoire : erreur d’alignement, memoire insuffisante, erreur manipulation
pointeur
appel systeme (LINUX) : par l’instruction INT 0x80, une application requiert
un service de l’OS.
Exception asynchrone (”Interruption”) : associee a un evenement issu
d’un peripherique
timers : expiration d’un timer ou un tick (periode) d’horloge systeme
autres peripheriques : touche clavier, clic souris, paquet ethernet,. . .
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 39 / 84
Exceptions et Interruptions Definition
Interruption
Interruption materielle
interruption : un signal sur la broche (INT) du CPU
declenchant l’execution d’une routine en reponse
(ISR : Interrupt Service Routine)
economie pour le CPU du temps de scrutation des peripheriques
CPU
RAM
CPU
RAM
Entrée−Sortie programmée avec attente de disponibilité Entrée−Sortie programmée avec interruption
INT
INT
1
INT
2
PIC
Scrutation périodique par le CPUde l’état du périphèrique
I/O (1)
I/O (2)
I/O (2)
I/O (1)
controleur
controleur
controleur
controleur
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 40 / 84
Exceptions et Interruptions Definition
Interruption
Exemple : Clavier PS2
si une touche est enfoncee ou relachee
le controleur du clavier :
ecrit dans un de ses registres le code de la touche
genere une interruption
le CPU notifie arrete le processus en cours et execute une routine
d’interruption qui consiste a venir lire la valeur de la touche dans le
registre
interrupteur sur GPIO
Activation interrupt GPIO 7 :
echo 07 > /sys/class/gpio/export
echo rising > /sys/class/gpio/gpio7/edge
cat /proc/interrupts pour visualiser
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 41 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Controleur d’interruptions
Gestion des interruptions
plusieurs peripheriques et interruptions (eventuellement simultanees)
le CPU ne peut executer qu’un ISR a la fois
probleme de concurrence
solution : un controleur d’interruption
priorites pour les interruptions (arbitrage de la concurrence)
interruption presentee une a la fois au CPU
masquer les interruptions non-prioritaires mais les memoriser (buffer)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 42 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Controleur d’interruptions
Un controleur programmable d’interruptions (PIC) : le 8259
utilise par le PC IBM et ses successeurs, peut etre mis en cascade
priorite par ordre decroissant (0(+prioritaire),2,...,7(-))
3 registres :
1 contenant l’interruption actuellement traitee par le CPU
1 contenant les interruptions pas encore traitees (de priorite inferieure)
1 contenant les interruptions a masquer (celle dont le CPU ne veut pas)
8259A Interrupt controller
CPU
D0-D7
CS
A0WR
INTA
RD
INT IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
+5 v
Keyboard
Clock
Disk
Printer
Source : Architecture des ordinateurs, Tanenbaum
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 43 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Vecteur d’interruption
1 exception = 1 routine ISR a une adresse memoire donnee
(cette adresse est appellee le vecteur d’interruption)
le numero d’exception/interruption sert d’indice dans la table desvecteurs d’interruption pour trouver l’adresse memoire ou se trouve
l’ISR
Exemple sur architecture i386
un registre du processeur IDTR (INT Descriptor Table Register) stocke en
permanence l’adresse en memoire de la table des vecteurs d’interruption
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 44 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Exception et interruption
Traitement complet
1 sauvegarde du contexte,l’etat actuel du processeur ;
(souvent, dans la pile d’execution de la tache en cours)
2 chargement du vecteur d’interruption (adresse ISR) dans le registre PC
3 execution de l’ISR
4 recharger contexte anterieur (etat du processeur avant INT)
5 reprise execution du programme
traitement rapide, changement de contexte minimal effectue par le
materiel
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 45 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Traitement de l’interruption
interruption la plus elevee presentee sur broche INT du CPU
le traitement d’une exception synchrone est similaire
PIC...
ALU
Single Core CPU
Address bus
Data bus
IDTR
IR
PC
R1, R2, ....
SP
0xFF00
0x108
4
74
INTPériph.
0x108 : ADD R3, R2, R3
Memory
0x104 : LDR R3, #20x100 : LDR R2, 0x200
0x10C : STR R3, 0x204LDR R3,#2
0xFF00: 0x844
...
0x204 :0x200 : 0x0005
...
...
0x400: 0x00030x404: 0x040
0x404
...
Pile du processus en cours
Table des vecteurs d’int
...
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 46 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Traitement de l’interruption
PC du processus interrompu pousse sur la pile par le materiel
adresse de sommet de la pile stockee dans registre SP
PIC...
ALU
Single Core CPU
Address bus
Data bus
IDTR
IR
PC
R1, R2, ....
SP
0xFF00
0x108
4
74
INTPériph.
0x108 : ADD R3, R2, R3
Memory
0x104 : LDR R3, #20x100 : LDR R2, 0x200
0x10C : STR R3, 0x204LDR R3,#2
0xFF00: 0x844
...
0x204 :0x200 : 0x0005
...
...
0x400: 0x00030x404: 0x040
0x40
...
Pile du processus en cours
Table des vecteurs d’int
SP+0x04: 0x408
PC: 0x108
...0x408: 0x108 (PC)
8
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 47 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Traitement de l’interruption
table des vecteurs d’int. stockee a l’adresse contenue dans IDTR
cherche dans la table, l’entree du numero d’INT (4)
PIC...
ALU
Single Core CPU
Data bus
IDTR
IR
PC
R1, R2, ....
SP
0xFF00
0x108
INTPériph.
0x108 : ADD R3, R2, R3
Memory
0x104 : LDR R3, #20x100 : LDR R2, 0x200
0x10C : STR R3, 0x204LDR R3,#2
0xFF00: 0x844
...
0x204 :0x200 : 0x0005
...
...
0x400: 0x00030x404: 0x040
0x40
...
Pile du processus en cours
...0x408: 0x108 (PC)
Address bus
0xFF10
0
Table des vecteurs d’int
1...
No
0xFF10: 0x64C
8
4
4
7
4
IDTR+(0x4)* 4
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 48 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Traitement de l’interruption
l’entree contient le vecteur d’int. (adresse du gestionnaire de l’int.(ISR))
PC <= vecteur d’interruption
PIC...
ALU
Single Core CPU
Data bus
IDTR
IR
PC
R1, R2, ....
SP
0xFF00
INTPériph.
0x108 : ADD R3, R2, R3
Memory
0x104 : LDR R3, #20x100 : LDR R2, 0x200
0x10C : STR R3, 0x204LDR R3,#2
0xFF00: 0x844
...
0x204 :0x200 : 0x0005
...
...
0x400: 0x00030x404: 0x040
0x40
...
Pile du processus en cours
...0x408: 0x108 (PC)
Address bus
4
0
Table des vecteurs d’int
1...
No
0xFF10
0x64C0x1080x64C
0x64C: PUSH R1...
0x670: IRETx86)(asm
4
4
7
8
0xFF10: 0x64C
le vecteur d’INT:adresse de l’ISR
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 49 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Traitement de l’interruption
execution de l’ISR (l’instruction pointee par PC)
PIC...
ALU
Single Core CPU
Data bus
IDTR
IR
PC
R1, R2, ....
SP
0xFF00
INTPériph.
0x108 : ADD R3, R2, R3
Memory
0x104 : LDR R3, #20x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
0xFF00: 0x844
...
0x204 :0x200 : 0x0005
...
...
0x400: 0x00030x404: 0x040
0x40
...
Pile du processus en cours
...0x408: 0x108 (PC)
Address bus
4
0
Table des vecteurs d’int
1...
No
0xFF10: 0x64C
0x64C: PUSH R1...
0x670: IRET
0x64C
0x64C
PUSH R1
(pile utilisable par ISR)
ISR codex86)
(asm
PUSH R1
7
48
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 50 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Traitement de l’interruption
dans l’ISR, acces au peripherique pour lever l’INT
ISR se finit par l’instruction IRET (x86)
PIC...
ALU
Single Core CPU
Data bus
IDTR
IR
PC
R1, R2, ....
SP
0xFF00
INTPériph.
0x108 : ADD R3, R2, R3
Memory
0x104 : LDR R3, #20x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
0xFF00: 0x844
...
0x204 :0x200 : 0x0005
...
...
0x400: 0x00030x404: 0x040
0x40
...
Pile du processus en cours
...0x408: 0x108 (PC)
Address bus
4
0
Table des vecteurs d’int
1...
No
0xFF10: 0x64C
0x64C: PUSH R1...
0x670: IRET ISR codex86)
(asm
0x670 IRET
IRET
7
8
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 51 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Traitement de l’interruption
IRET : reprendre le processus initial (PC<= valeur avant l’int.)
le PC initial en memoire au sommet de la pile (adresse contenu dans SP)
PIC...
ALU
Single Core CPU
IDTR
IR
PC
R1, R2, ....
SP
0xFF00
INTPériph.
0x108 : ADD R3, R2, R3
Memory
0x104 : LDR R3, #20x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
0xFF00: 0x844
...
0x204 :0x200 : 0x0005
...
...
0x400: 0x00030x404: 0x040
...
Pile du processus en cours
...0x408: 0x108 (PC)
Address bus
4
0
Table des vecteurs d’int
1...
No
0xFF10: 0x64C
0x64C: PUSH R1...
0x670: IRET ISR codex86)
(asm
Data bus
0x408
0x108 (PC)
0x408
IRET
0x108
7
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 52 / 84
Exceptions et Interruptions Controleur d’interruptions et traitement
Traitement de l’interruption
SP pointe vers le nouveau sommet de la pile
le processus peut reprendre (mais il reste l’int 7 a traiter)
PIC...
ALU
Single Core CPU
IDTR
IR
PC
R1, R2, ....
SP
0xFF00
INTPériph.
0x108 : ADD R3, R2, R3
Memory
0x104 : LDR R3, #20x100 : LDR R2, 0x200
0x10C : STR R3, 0x204
0xFF00: 0x844
...
0x204 :0x200 : 0x0005
...
...
0x400: 0x00030x404: 0x040
...
Pile du processus en cours
...
Address bus
4
0
Table des vecteurs d’int
1...
No
0xFF10: 0x64C
0x64C: PUSH R1...
0x670: IRET ISR codex86)
(asm
Data busIRET
0x108
0x404
0x408: 0x1087
0x108 ?
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 53 / 84
Gestion de la memoire (pagination)
Plan
1 Raspberry
2 Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3 Exceptions et Interruptions
Definition
Controleur d’interruptions et traitement
4 Gestion de la memoire (pagination)
5 Les entrees-sorties (I/O)
I/O par port
I/O mappees en memoire
6 Le temps : Horloge et Timers
L’horloge temps reel
Les timers
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 54 / 84
Gestion de la memoire (pagination)
Problematique d’un systeme multi-tache
Des processus mais 1 memoire : Et si la place est occupee ?
code dependant de sa position en memoire
(adresses absolues des donnees)
Main Memory (RAM)
(Hard Disk Drive)
Secondary Memory
./prog
@start_:
section memory addr
0x18
ELF Header
Programm Header
.text
07 00 00 000e 00 00 00
.data
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x3F
0x30
.data
addl (%ebx), %eaxmovl $0x32, %ebx
addl (%ebx), %eax.text
movl $0x32, %ebxcompl %edx, $0jne 0x08movl $1, %eaxmovl $2, %ebxsubs %eax, %edx
0x30
08 4F E1 C5
4F 23 A3 00
./program2
./program3
?
movl , %eax0x30
movl , %eax0x30
0x18
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 55 / 84
Gestion de la memoire (pagination)
Gestion de la memoire
Problematique de lareallocation dynamique
comment positionner les
processus en memoire ?
comment obtenir un bloc
contigue pour un malloc
sans retasser ? d’exploitation
Systèmed’exploitation
Système
Processus A
Processus B
Processus H
000
10K
100K
280K
900K
1M
Processus H
Processus A
Processus B
000
70K
270K
580K
900K
1M
Retassement par réallocation
dynamique
Mémoire après un temps
de fonctionnement
(libre)
(libre)
2 solutions possibles utilisant une translation d’adresse :
la segmentation
la pagination
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 56 / 84
Gestion de la memoire (pagination)
La pagination :Principe
1 1 table de correspondance entre :
adresse logique (@logique/virtuelle) du Code/Data dans l’executable ELF
adresse physique (@physique) ou il est effectivement en memoire
0x08
0x00
0x10
0x18
0x20
0x28
0x38
addl (%ebx), %eaxmovl $0x32, %ebx
0x30
movl 0x30, %eax
07 00 00 00
0e 00 00 00
0x3C
ProcessusMémoire Logique/Virtuelle
0x3F
@physique@logique
0x08
0x00
0x10
0x18
0x20
0x28
0x30
0x10
0x140x20
0x380x3C
0x04
0x0C
0x14
0x1C
0x24
0x2C
0x340x380x3C
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x30
Processus A
Processus B
movl 0x30, %eaxmovl $0x32, %ebx
0e 00 00 00
07 00 00 00
addl (%ebx), %eax
Memoire Physique (RAM)
Processus B
0x3C 0x3F
Chargmement du programme et céation table correspondanceLoıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 57 / 84
Gestion de la memoire (pagination)
La pagination : Principe
1 Translation d’adresse pour toute lecture/ecriture d’un code/donnee
(Exemple : Fetch de la premiere instruction du programme)
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x3F
0x30
0x3C
Processus A
Processus A
Processus B
Processus B
addl (%ebx), %eax
movl 0x30, %eaxmovl $0x32, %ebx
0e 00 00 00
07 00 00 00
Memoire Physique (RAM)
PC
EAX
ECX
0x18
@start_: 0x18
0x10
@physique@logique
0x08
0x00
0x10
0x18
0x20
0x28
0x30
0x10
0x140x20
0x380x3C
0x04
0x0C
0x14
0x1C
0x24
0x2C
0x340x380x3C
0x18EBX
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 58 / 84
Gestion de la memoire (pagination)
La pagination : Principe
1 Translation d’adresse pour toute lecture/ecriture d’un code/donnee
(Exemple : lecture d’un operande)
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x3F
0x30
0x3C
Processus A
Processus A
Processus B
Processus B
addl (%ebx), %eax
movl 0x30, %eaxmovl $0x32, %ebx
0e 00 00 00
07 00 00 00
Memoire Physique (RAM)
PC
EAX
0x18
@physique
movl 0x30,%eax
@logique
0x08
0x00
0x10
0x18
0x20
0x28
0x30
0x10
0x140x20
0x380x3C
0x04
0x0C
0x14
0x1C
0x24
0x2C
0x340x380x3C
0x30 0x38
Read
EBX
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 59 / 84
Gestion de la memoire (pagination)
La pagination
Deplacement de code/donnee en memoire physique
1 deplacement et mise-a-jour table
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x3F
0x30
0x3C
Processus A
Processus A
Processus B
Processus B
addl (%ebx), %eax
0e 00 00 00
07 00 00 00
Memoire Physique (RAM)
PC
EAX
Read
movl 0x30, %eaxmovl $0x32, %ebx
@physique@logique
0x08
0x00
0x10
0x18
0x20
0x28
0x30
0x10
0x140x20
0x380x3C
0x04
0x0C
0x14
0x1C
0x24
0x2C
0x340x380x3C
0x08
0x0C
EBX
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 60 / 84
Gestion de la memoire (pagination)
La pagination
Avantage
programme utilise des @virtuelles contigues
↔ a des adresses physiques non-contigue
deplacement en RAM du code/donnees
= quelques ligne de la table a updater.
Inconveniant
la table de correspondance aussi grande que la memoire physique RAM !
(si une adresse=32bits)
gestion lourde de la memoire
Solution
Deplacement du code/donnee par paquet de 2, 4, ou 2n octets
Table de correspondance entre @logique et @physique du paquet
Taille de la Table divisee par 2, 4 ou 2n→ gestion plus legere
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 61 / 84
Gestion de la memoire (pagination)
La pagination
Table de pages
blocs (ici de tailles 23 octets) sont appelles pages
0x08
0x00
0x10
0x18
0x20
0x28
0x38
addl (%ebx), %eaxmovl $0x32, %ebx
0x30
movl 0x30, %eax
07 00 00 00
0e 00 00 00
0x3C
ProcessusMémoire Logique/Virtuelle
Numérode page
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
01234567
Pagephysiquevirtuelle
Page
Table des pages
42
7
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x30
0x3C
Processus A
Processus B
Processus B
movl 0x30, %eaxmovl $0x32, %ebx
0e 00 00 00
07 00 00 00
Numérode page
addl (%ebx), %eax
Memoire Physique (RAM)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 62 / 84
Gestion de la memoire (pagination)
La pagination : Memoire virtuelle
Memoire virtuelle
Possible de ne charger que le debut du programme si manque de place
Un bit indique dans la table si la page est chargee ou non
0
1
2
3
4
5
6
7
0x08
0x00
0x10
0x18
0x20
0x28
0x38
addl (%ebx), %eaxmovl $0x32, %ebx
0x30
movl 0x30, %eax
07 00 00 00
0e 00 00 00
0x3C
ProcessusMémoire Logique/Virtuelle
Numérode page
0
1
2
3
4
5
6
7
01234567
Pagephysiquevirtuelle
Page
Table des pages
2
7 1
10
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x30
0x3C
Processus A
Processus B
movl 0x30, %eaxmovl $0x32, %ebx
0e 00 00 00
07 00 00 00
Numérode page
Memoire Physique (RAM)
Processus A
Processus A
Processus B
Processus B1:page présente0:page absente
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 63 / 84
Gestion de la memoire (pagination)
La pagination : Memoire virtuelle
Memoire virtuelle : besoin de charger la suite ?
la page non chargee mise temporairement sur une memoire secondaire
0
1
2
3
4
5
6
7addl (%ebx), %eax (3)
01
2
34
56
7
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x30
0x3C
Processus A
Processus B
movl 0x30, %eaxmovl $0x32, %ebx
0e 00 00 00
07 00 00 00
Numérode page
Memoire Physique (RAM)
Processus A
Processus A
Processus B
Processus B
1:page présente0:page absente
Pagephysiquevirtuelle
Page
2
7 1
10
Table des pages
(Disque Dur)Memoire Secondaire
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 64 / 84
Gestion de la memoire (pagination)
La pagination : Memoire virtuelle
Memoire virtuelle : besoin de charger la suite ?
un programme demon (kswapd sous linux) libere des pages :
si un programme requiert une page non chargee (”defaut de page”)
si la memoire est presque pleine (retire vieilles pages)
0
1
2
3
4
5
6
7addl (%ebx), %eax (3)
01
2
34
56
7
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x30
0x3C
Processus A
movl 0x30, %eaxmovl $0x32, %ebx
0e 00 00 00
07 00 00 00
Numérode page
Memoire Physique (RAM)
Processus A
Processus A
Processus B
Processus B
1:page présente0:page absente
Pagephysiquevirtuelle
Page
2
7 1
10
Table des pages
Processus B
swap area
Memoire Secondaire(Disque Dur)
Kswapd
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 65 / 84
Gestion de la memoire (pagination)
La pagination : Memoire virtuelle
Memoire virtuelle : besoin de charger la suite ?
chaque processus a sa table de pages
on met a jour les 2 pages de tables
0
1
2
3
4
5
6
7
01
2
34
56
7
0x08
0x00
0x10
0x18
0x20
0x28
0x38
0x30
0x3C
Processus A
movl 0x30, %eaxmovl $0x32, %ebx
0e 00 00 00
07 00 00 00
Numérode page
Memoire Physique (RAM)
Processus A
Processus A
Processus B
Processus B
swap area
Memoire Secondaire(Disque Dur) Processus B
addl (%ebx), %eax
Page
3
Table des pages de B
Pagephysiquevirtuelle
0
1:page présente0:page absente
Pagephysiquevirtuelle
Page
2
7 1
1
Table des pages
13
5 1
6 1
01
2
34
56
71:page présente0:page absente
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 66 / 84
Gestion de la memoire (pagination)
La pagination : Memoire virtuelle
Avantages
Code et Donnees du programme dynamiquement relogeables en
memoire
Memoire virtuelle : Taille des programmes en cours > taille de la memoire
Utilisation du disque comme stockage secondaire
Inconveniants
Une architecture plus complexe : necessite une unite specifique pour
gerer la table de pages et faire les calculs d’adresses
Temps d’acces non deterministe a la memoire : si la page requise n’est
pas en memoire mais sur le disque (page default)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 67 / 84
Gestion de la memoire (pagination)
Unite de Gestion de la memoire (MMU)
circuit imprime distinct ou inclus dans le processeur
dedie aux traductions d’adresse par segmentation ou pagination
une logique importante (jusqu’a 30% de la surface du processeur)
au niveau materiel, elle contient :
logique de conversion des adresses virtuelles en adresses physiques
logique de verification de la validite de l’adresse (sinon segfault) ou
disponibilite de la page en RAM.
memoire cache associative TLB (Translation Lookaside Buffer) contenant la
portion la + utilisee de la table des pages (reduit les acces plus lent a la
table de pages en RAM.)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 68 / 84
Les entrees-sorties (I/O)
Plan
1 Raspberry
2 Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3 Exceptions et Interruptions
Definition
Controleur d’interruptions et traitement
4 Gestion de la memoire (pagination)
5 Les entrees-sorties (I/O)
I/O par port
I/O mappees en memoire
6 Le temps : Horloge et Timers
L’horloge temps reel
Les timers
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 69 / 84
Les entrees-sorties (I/O)
Rappel : Architecture des cartes-meres
Northbridge
controleur memoire
(rafraıchissement, selection,.)
bande passante elevee
compatibilite limite avec 1 type de
memoire et 1 CPU
terminologie Intel : Graphics and
Memory Controller Hub (GMCH)
Southbridge
dedie aux bus de moindres debits
peut inclure : DMA, RTC, PIC
terminologie Intel : I/O Controller
Hub (ICH).
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 70 / 84
Les entrees-sorties (I/O)
Entrees-sorties
interaction entre CPU et peripheriques (monde externe)
entre registres du controleur d’un periph. et le CPU
2 strategies : adressage par port dedie ou par mappage en memoire
mémoire
0
0x6E
0
0xFFFF
0
0xFFFF
I/O ports
physiquephysique
mémoire
I/O registres mappées en mémoireI/O registres par adresse de port
0xF140
Plage réservéeI/O
0xF400
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 71 / 84
Les entrees-sorties (I/O) I/O par port
I/O par port
broche I/O du CPU active − > @ sur le bus = @ d’un port (et non
memoire)
instructions lecture/ecriture : IN, OUT (asm) ou inb,outb (en C)
adresses de ports liees a la conception de la carte mere
cat /proc/ioport permet de lister les ports existants
CPU
IO/M
MemoryNorthBridge
Address Bus
PortSerial
S I/O controller
I/O
0x3F8
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 72 / 84
Les entrees-sorties (I/O) I/O par port
I/O par port
(source :
linux device drivers, 3eme edition)
Exemple : portparallele
12 broches sortie
et 5 broches en entree
le niveau electrique de
la broche
= la valeur du bit du
registre
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 73 / 84
Les entrees-sorties (I/O) I/O par port
I/O par port
2
10000000
+
−
(source : linux device drivers, 3eme edition)
#define PORT 0x378
main{
ioperm(PORT,2,1);
//demande acces (1=acces on)
//a 2 octets a partir
// de l’@ de port PORT
outb(0x1,PORT);
//ecriture sur port
//de la valeur 1
}
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 74 / 84
Les entrees-sorties (I/O) I/O mappees en memoire
I/O mapping
des @ memoires physiques sont detournees par la carte mere vers des
registres des peripheriques
memoire pas accessible sur ces adresses
sur architecture intel 32 bits :
la plage ≈ 3.5Go − >4Go reservee pour I/O
si plus de 3.5 Go installes, cette RAM est inutilisable (non adressable)
CPU
Memory
Address Bus
0x0000
0xFFFF0xFF4A
PCI device controller
Data Bus
bridge
South
NorthBridge
TOLUD<0xFF4A<0xFFFF
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 75 / 84
Les entrees-sorties (I/O) I/O mappees en memoire
I/O mapping
adresses physiques reserves aux I/O
voir la documentation de la carte-mere ou du Soc.
cat /proc/iomem : liste les zones memoires reservees
lspci -v : liste peripheriques pci et adresses physiques des registres
mappes (et port)
acces et lecture/ecriture (Drivers Linux)
Le noyau et les processus utilisent des @ virtuelles et non physiques !
(void*)add_virtuel ioremap( (void*)add_phys, length)
demande une @ virtuelle mappee/correspondant a l’@ physique
lecture ecriture ensuite avec :
ioread((void*)add_virtuel) et iowrite(value,(void*))
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 76 / 84
Les entrees-sorties (I/O) I/O mappees en memoire
I/O mapping
acces et lecture/ecriture (Process utilisateur)
Le periherique /dev/mem est une image de la memoire physique (RAM)
(void*) mmap(NULL, length, , ,fd, offset)
demande une @ virtuelle mappee/correspondant a l’@ offset de la
memoire/fichier fd
lecture et ecriture via le pointeur dans memoire/registre du peripherique
length et offset doivent etre des multiples de la taille des pages
avantage : acces direct a la memoire (memoire peripherique)
risque : acces non protege et concurrent possible.
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 77 / 84
Les entrees-sorties (I/O) I/O mappees en memoire
I/O mapping
Exemple avec les gpios du RPi
D’apres /proc/iomem et la doc du Soc :
Adresse phy Description Size RW
0x20200000 GPIO function select0 32 RW
0x2020001C GPIO Pin Output Set 0 32 W
0x20200028 GPIO Pin Output Clear 0 32 W
0x20200034 GPIO Pin Level 0 32 R
GPIO Pin Output Set : chaque bit represente un GIPO, un bit ecrit a 1
allume le GPIO
GPIO Pin Output Clear : idem mais met a 0 le GPIO
voir exemple gpio_direct.c
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 78 / 84
Les entrees-sorties (I/O) I/O mappees en memoire
I/O par ports et mappees en memoire
Comparatif
I/O port
+ adressage separe : plage
d’adresses memoires complete
+ si CPU a 1 petit bus d’adresses
+ instruction specifique : lisibilite
code
- hardware supplementaire
(logique + broche CPU)
I/O mappee en memoire
+pas de logique pour les ports sur
CPU (prix,simplicite)
+meme instruction qu’un acces
memoire (RISC)
-occupe des adresses memoires
(ou il peut y avoir de la RAM)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 79 / 84
Le temps : Horloge et Timers
Plan
1 Raspberry
2 Processeur ARM
Architecture ARM : principes
Jeu d’instruction et language assembleur ARM
3 Exceptions et Interruptions
Definition
Controleur d’interruptions et traitement
4 Gestion de la memoire (pagination)
5 Les entrees-sorties (I/O)
I/O par port
I/O mappees en memoire
6 Le temps : Horloge et Timers
L’horloge temps reel
Les timers
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 80 / 84
Le temps : Horloge et Timers
La gestion du temps
Planification d’actions dans le futur
travaux periodiques (reordonnancement des taches, pooling)
travaux a echeances (timer decremente jusque 0)
Timers
materiels : composant electronique (quartz), generateur d’INT, µs.
logiciels : registres decrementes, reduction charge processeur
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 81 / 84
Le temps : Horloge et Timers L’horloge temps reel
L’horloge temps reel ou Real-time Clock (RTC)
quartz 32.768 kHz (maximum≈30MHz)
alimentation : batterie lithium ou supercondensateur
avantages :
independante du reste du systeme (1 utilisation : reveil programme)
sauvegarde de l’heure et du jour en absence d’alimentation
inconvenients :
consultation lente (I/O)
resolution faible (ms : milliseconde)
Circuit integre RTC Puce southbridge (RTC inclus)
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 82 / 84
Le temps : Horloge et Timers Les timers
Les timers
Programmable Interrupt Timer (PIT)
compteurs programmables en mode one-shot ou periodique
resolution temporelle : µs
un des compteur est utilise comme ”timer systeme”
le timer systeme genere l’INT de plus haute priorite : l’INT timer (IRQ 0)
Ex : puce intel 825x, inclus dans le southbridge a l’adresse I/O : 0x40-43
Time Stamp Counter (TSC)
compteur (registre) 64 bits interne au CPU ix86
incrementation de 1 a chaque signal d’horloge CPU
190 ans pour le remplir a 3GHz, resolution : nanosecondes (ns)
accessible par une instruction processeur (asm) ”RDTSC”
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 83 / 84
Le temps : Horloge et Timers Les timers
Timers
Linux : usage des timers
variable kernel jiffies
variable 32 bits
incrementee a chaque interruption timer
(pour linux, a defini a la compilation du kernel)
utilisee par le noyau et pour la frequence de reordonnancement des threads
usage noyau : void init timer (struct timer list* timer) et scheduler tick()
usage user : clock gettime()
registre TSC
la meilleur resolution (ns)
usage : rtdsc(low,high), lecture en 2 variable 32 bits du TSC
utilise par le Linux temps reel Xenomai sur architecture intel386
Loıc Cuvillon (TPS) Systemes temps reel et systemes embarques Annee scolaire 2010-2015 84 / 84