1
CONCEPTION DES SYSTÈMES EMBARQUÉS
Hanen SHALL shallhanen@yahoo.fr
CONTENU
❑ Introduction à la conception des systèmes embarqués
2
Introduction aux systèmes embarqués
Un peu d’histoire….
o 1947: Invention du transistor (Bell)
o 1955: Premier ordinateur à transistors : TRADIC (Bell Labs pour l’US Air Force)
o 1958: Premier circuit intégré (Texas Instrument)
o 1965: G. Moore énonce la loi qui porte son nom (loi de Moore)
o o 1969: 1969: Système Système d’exploitation d’exploitation MULTICS MULTICS puis puis UNIX UNIX (Bell) (Bell)
o 1971/1972: 1er microprocesseur, le 4004 d’Intel puis le 8008
o 1972: Micro-ordinateur Micral (R2E, rachetée ensuite par Bull)
o 1973: Langage C pour le développement d’Unix
o 1974: Premier microprocesseur Motorola: 6800
o 1975: Micro-ordinateur Altair 8800 (MITS), à base d’Intel 8080
o 1976 / 1 977: Apple I (200 p) puis Apple II (produit jusqu’en 1988)
o1981: IBM PC et MS-DOS
3
Introduction aux systèmes embarqués
4
Introduction aux systèmes embarqués
Un peu d’histoire…. o 1982: Définition du protocole TCP/IP et du mot Internet
o 1983: Création du C++
o 1984: Sortie du Macintosh et de Mac OS
o 1989: Invention du World Wide Web
o 1995: Création du langage de programmation Java
o o 1996: 1996: Première Première version version de de la la norme norme USB USB
o 2000: Premier Baladeur MP3 à disque dur (Archos)
o 2007: Premier Iphone
o 2009: Première tablette sous Android
o 2011: Les ventes de Smartphones dépassent celles de PC
o 2014: Le nombre de sites web dans le monde dépasse le milliard
o …..?…!…?…
5
Définition: « Embedded System » Un système embarqué est défini comme un système électronique et informatique autonome, spécialisé dans une tâche bien précise. Le système comprend une partie matérielle et une partie logicielle. Néanmoins, il n’est pas un ordinateur d’usage général.
Introduction aux systèmes embarqués
6
Introduction aux systèmes embarqués
▪ Les parties matérielle et logicielle sont intimement liées et noyées dans le matériel et ne sont pas discernables comme un environnement de travail classique de type PC.
▪ N’est pas visible en tant que tel, mais est intégré dans un équipement doté d’une autre fonction plus globale «Embedded» = composante primordiale d’un système plus large ou une machine dont l’objectif est de commander, contrôler et superviser ce système.
▪ ▪ Système Système électronique électronique et et informatique informatique autonome autonome possédant possédant des des entrées-sorties entrées-sorties spécifiques (pour la plupart, liées à des grandeurs ou des phénomènes physiques). Il dispose de périphériques et capteurs spécifiques pour son application:
- Carte SD, mémoire flash, …
- Wifi, Bluetooth, module GSM-GPS, …
- Température, pression, actuateurs (moteurs, …), ….
▪ Il utilise généralement un microprocesseur combiné avec d’autres matériel et logiciel pour résoudre un problème de calcul spécifique.
7
Introduction aux systèmes embarqués
▪ La conception de ces systèmes est fiable (avions, systèmes de freinage ABS) à cause de leurs utilisations dans des domines de fortes contraintes mais également parce que l’accès au logiciel est souvent difficile une fois le système est industrialisé.
▪ Le logiciel système embraqué s’étend d’un petit directeur à un grand logiciel d’exploitation en temps réel (RTOS) avec une interface utilisateur graphique (GUI). Typiquement, ce logiciel système doit répondre aux événements d’une manière déterministe déterministe et et devrait devrait toujours toujours être être opérationnel. opérationnel.
Système temps réel Un système temps réel se compose d’un ou plusieurs sous-systèmes qui doivent répondre en un temps fini et spécifié à des stimulus générés par le monde extérieur: Une réponse hors échéance est invalide Même si son contenu semble correct
Exemple: Un contrôleur de vitesse pour voiture, une machine à laver, un robot d’entrepôt, un pilotage automatique de TGV-avion-véhicule terrestre, une centrale nucléaire, etc ,…
8
Introduction aux systèmes embarqués
Caractéristiques générales:
✓ Dédié à une application spécifique
✓ Coût réduit, maximisation rapport performance/prix
✓ Volume restreint (compact, pas modulaire)
✓ ✓ Capacité Capacité mémoire mémoire adaptée adaptée
✓ Consommation d’énergie maitrisée
✓ Capacité de calcul appropriée à l’application
✓ Exécution temps réel (souvent)
✓ Fiabilité, criticité, tolérance aux fautes, sécurité de fonctionnement
✓ Interfaçage avec le monde physiques, contraintes environnementales
✓….
9
Introduction aux systèmes embarqués
Exemple d’un SE : Compteur de vélo
o Fonctions:
✓Mesure de la vitesse et de la distance o Contraintes
✓Taille ✓Coût ✓Énergie ✓Énergie et et Puissance Puissance ✓Poid oInputs✓Indicateur de rotation de la roue
✓Touche “MODE” oOutput✓Afficheur LCD oMCU basse performance
✓8-bits, 10 MIPS
10
Introduction aux systèmes embarqués
Fonctions principales réalisées par un SE
▪ Système de contrôle en boucle fermée
Superviser un processus, ajuster une sortie pour maintenir un consigne
(température, vitesse, direction, etc.)
▪Séquencement
▪Séquencement
Avancer sur des étapes selon un environnement et un système
▪Traitement du signal
Éliminer le bruit, sélection de fonctions liées au traitement du signal
▪Communications et fonctions de réseau
Échange d’information rapidement et efficacement
11
Introduction aux systèmes embarqués
Architecture d’un système embarqué
▪ Il est réalisé autour d’un MCU
– MCU est un système à processeur dans un seul chip (SoC) – comprend: processeur + mémoire, GPIO (entrées/sorties simples configurables: «General Purpose Input/Output»), contrôleur de bus, contrôleur d’interruption, contrôleur d’écran, USB, Ethernet, …
N.B: Les MCUs issus des différents vendeurs varient pour des différentes
12 ▪Démarrage autonome du système (boot): pas de disque dur, utilisation de mémoire flash, …
▪ Généralement pas d’extension: construction non modulaire
N.B: Les MCUs issus des différents vendeurs varient pour des différentes raisons de conception et de décision:
- Architecture
- Implémentation
- Optimisation du traitement
- Périphériques
- Gestion de l’énergie
- Flot de développement préféré
Capteurs Acteurs
Architecture d’un système embarqué
Introduction aux systèmes embarqués
ASIC (application specific integrated integrated circuit)
Convertisseur A/N
IHM
Sauvegarde et sécurité du système
Environnem ent extérieur
Logiciel ou ou OS OS
Mémoire
Ports de diagnostic CPU
Convertisseur N/A
Systèmes auxiliaires
13
Introduction aux systèmes embarqués
Les attributs des SEs
▪ Interfaçage avec des systèmes plus larges et l’environnement
➢ Signaux analogiques issus des capteurs: typiquement en utilisant une tension pour représenter une valeur physique ➢ Électronique de puissance pour contrôler des moteurs, actionneurs ➢ Interfaces numériques pour communiquer avec d’autres circuits numériques
– Simple : relais -Compliqués :afficheurs
▪ ▪ Concurrents, Concurrents, et et comportements comportements réactifs réactifs ➢ Doivent répondre à une séquence ou combinaison d’évènements ➢ Les systèmes temps−réels ont des contraintes de temps de réponses ➢ Doivent effectuer plusieurs activités séparées et concurrentes
▪ Prise en charge des fautes
➢ Plusieurs systèmes doivent opérer d’une façon indépendante pour de longues périodes. Le système doit gérer les fautes sans cracher ➢ Souvent, le code pour la prise en charge des fautes est plus large et plus compliqués que celui du cas de fonctionnement normal.
▪ Diagnostic
14
➢ Aider les développeurs ou les clients à déterminer le problème rapidement
Introduction aux systèmes embarqués
Les contraintes des SEs
▪ Coût Les marchés compétitifs pénalisent les produits qui ne délivrent pas une valeur adéquate au coût
▪Limites de taille et de poids Mobile Mobile (aviation, (aviation, automobile) automobile) et et portable portable (systèmes (systèmes utilisables utilisables dans dans la la main) main)
▪Limite de puissance et d’énergie
➢Capacité de la batterie ➢ Limites de refroidissement
▪Environnement Les températures peuvent varier de -40°C to 125°C, parfois encore plus !
15
Introduction aux systèmes embarqués
Impact des contraintes dans la conception des Ses
▪Les MCUs sont utilisés (au lieu des microprocesseurs)
➢ Incluent des périphériques pour l’interfaçage avec d’autre circuits, répondent plus efficacement ➢ On-chip RAM et ROM réduisent le coût et la complexité de la carte du système
▪Langage ▪Langage de de programmation programmation ➢ Programmés en C au lieu du Java (code plus petit et plus rapide, par conséquent des MCU moins coûteux) ➢ Quelques parties du code dont les performances sont critiques peuvent être codées en assembleur
▪OS➢ Typiquement pas d’OS
➢ Si un OS est utilisé, il très fréquent qu’il soit un RTOS compact.
16
Introduction aux systèmes embarqués
Carte de développement embarqué: STM32F4Discovery Board
17
Introduction aux systèmes embarqués
Options pour l’aide à la conception des SEs
18
Conception et Codesign
Quand on conçoit un système embarqué, un certain nombre de contraintes apparaissent : – Est-ce que le système final marche correctement ? – Est-ce que les spécifications fonctionnelles ont été respectées ? – Comment doit-on tester les caractéristiques temps réel du système ? – Doit-on le tester avec des données réelles ? – – Quelle Quelle plateforme plateforme de de tests tests doit-on doit-on utiliser utiliser ? ?
La méthodologie de conception
–La méthodologie mise en œuvre permet d’être sûr de ne pas oublier une étape. – Des outils de CAO et d’aide à la conception peuvent être utilisés : automatisation et vérification en cours de conception. – Traçabilité des étapes de conception du système. – Maîtrise des contraintes : temps de conception, consommation, coût..
Introduction aux systèmes embarqués
19
Codesign Hardware/Software
Le codesign dans la méthodologie de conception d ’un système embarqué est de plus en plus utilisé.
- Le codesign permet de concevoir en même temps à la fois le matériel et le logiciel pour une fonctionnalité à implémenter. Cela est maintenant possible avec les niveaux d’intégration offerts dans les circuits logiques programmables.
- Le codesign permet de repousser le plus loin possible dans la conception conception du du système système les les choix choix matériels matériels à à faire faire contrairement contrairement à à l’approche classique où les choix matériels sont faits en premier lieu !
Introduction aux systèmes embarqués
20
Les étapes dans le Codesign
Durant le processus de codesign, on distingue les étapes suivantes :
– Spécifications : liste des fonctionnalités du système de façon abstraite. –Modélisation: conceptualisation et affinement des spécifications produisant un modèle du matériel et du logiciel. –Partitionnement. –Synthèse et optimisation : synthèse matérielle et compilation logicielle. –Validation –Validation : : cosimulation. cosimulation. – Intégration. – Tests d’intégration.
Introduction aux systèmes embarqués
21
Avantages du Codesign
Le codesign est intéressant pour la conception de systèmes embarqués (ou de SoC) :
– Amélioration des performances : parallélisme, algorithmes distribués, architecture spécialisée… – – Reconfiguration Reconfiguration statique statique ou ou dynamique dynamique en en cours cours de de fonctionnement. fonctionnement. – Indépendance vis à vis des évolutions technologiques des circuits logiques programmables. – Mise à profit des améliorations des outils de conception fournis par les fabricants des circuits logiques programmables : synthèse plus efficace, performance accrue.
Introduction aux systèmes embarqués
22
CONTENU
❑Les bases du développement software embarqué
23
Comment Concurrence:
s’assurer de l’exécution des fonctions voulues aux moments voulus?
Le SW/HW du MCU pour la concurrence:
▪ Le CPU exécute les instructions d’un ou plusieurs bouts de programmes
▪ Des périph. Hw dédiés ajoutent du traitement concurrent à l’exécution:
➢ DMA DMA : : transfert transfert données données entre entre mémoires mémoires et et périphériques périphériques ➢Watchdog Watchdog timer timer ➢Analog interfacing ➢Timers ➢Communications avec les autres « Devices » ➢Detecting external signal events
▪ Ces périph. utilisent les interruptions pour notifier le CPU des événements
Concurrence
24
Fonctionnement Concurrent Hw & Sw
Concurrence
25
❑ Le système d’interruption du CPU permet d’avoir un ordonnancement basique sur ce dernier
✓Exécute cette sous−routine chaque fois que cette interruption Hw survient” ✓Adéquat pour des systèmes simples
❑ ❑ Un Un système système plus plus compliqué compliqué a a besoin besoin de de gérer gérer et et exécuter exécuter plusieurs plusieurs programmes programmes concurrents concurrents et et indépendants indépendants ✓Utilise un ordonnanceur de tâches pour partager l’utilisation du CPU ✓Différentes approches pour l’ordonnancement des tâches.
❑ Comment avoir un CPU qui réagit bien ? (Comment peut−il exécuter les bons codes aux bons moments ?)
✓Si les fonctions exécutées en SW sont plus nombreuses que celle en Hw, le partage du CPU entre ces fonctions est nécessaire.
Ordonnancement du CPU
26
Définitions
Ordonnancement du CPU
27
Approches d’ordonnancement
❑ Utilisation du système d’interruption du MCU pour exécuter le bon code✓ Ordonnancement déclenché par des événements via les
interruptions ✓ Convient aux systèmes simples
Ordonnancement du CPU
✓ Convient aux systèmes simples
❑ Utilisation du Sw pour ordonnancer l’exécution sur le CPU
✓ Cyclique/Statique ✓Priorité dynamique:
- Sans préemption entre les tâches
- Avec préemption entre les tâches
28
Ordonnancement déclenché par des événements via les interruptions
❑ Architecture basique, pratique pour les systèmes simples avec une faible consommation
– Peu de contraintes de développement du code et de temps
❑ Utilise une répartition des tâches avec le système d’interruption
– – Peut Peut déclencher déclencher une une ISR ISR avec avec un un changement changement aux aux entrées, entrées, débordement de Timer, réception de données UART, entrée analogique dépassant une valeur de comparaison ou seuil…
❑ Fonction types
– Fonction Main, configure le système et active le mode sleep: après interruption, le système retourne directement en sleep – Seulement les interruptions sont utilisées pour l’exécution des programmes (traitement)
Ordonnancement du CPU
29
Ordonnancement déclenché par des événements via les interruptions
Exemple: Compteur de vélo
o Fonctions:✓Mesure de la vitesse
et de la distance o Contraintes
✓Taille ✓Taille ✓Coût ✓Énergie et Puissance ✓Poid o Inputs✓Indicateur de rotation
de la roue ✓Touche “MODE” o Output✓Afficheur LCD
Ordonnancement du CPU
o Interruptions
Possibles ? Int1: Wheel rotation
(rotation o Int1……………….
de la roue du vélo)
(rotation Possibles ? o Int1……………….
de la roue du vélo) o o Int2 Int2 :Mode ……………….
key (pour la configuration) o Int3 ………………. o o Int3 OutputClock (temps actuel) o Output✓Afficheur LCD ✓Afficheur LCD
30
Ordonnancement déclenché par des événements via les interruptions
Exemple: Compteur de vélo: Les fonctions
Ordonnancement du CPU
31
Utilisation du SW pour ordonnancer l’exécution sur le CPU Exemple: Une application plus compliquée ! :
Avertisseur de trous sur route et localisation par GPS:
– Emet une alarme sonore si un trou est proche – Affiche la position du véhicule sur LCD – Enregistre les coordonnées du véhicule – Hardware: GPS, boutons utilisateur, haut-parleur, LCD, flash memory
Ordonnancement du CPU
– Hardware: GPS, boutons utilisateur, haut-parleur, LCD, flash memory
32
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Ordonnancement du CPU
Tâches software de l’application
33
Oui : Ordonnancement statique (exécution cyclique, round- robin)
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Comment ordonnancer ces tâches ? Décider quelle tâche doit être exécutée maintenant?
2 questions fondamentales
Les tâches sont exécutées dans le Une tâche peut elle interrompre
Ordonnancement du CPU
Une Les tâches sont exécutées dans le
tâche peut elle interrompre même ordre et à chaque fois ?
l’exécution d’une autre ou attendre qu’elle soit terminée ?
Non : Ordonnancement dynamique, ordonnancement avec priorité
Oui : Ordonnancement Préemptif
Non : Ordonnancement non-Préemptif (coopératif, run-to- completion)
34
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Ordonnancement du CPU
Ordonnancement statique: exécution cyclique
while (1){ Dec(); Check(); Rec(); Sw(); LCD();}
time
35
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Ordonnancement du CPU
Ordonnancement statique: exécution cyclique
❖Avantages
➢Très simple ❖Inconvénients ❖Inconvénients
➢Même ordre d’exécution même si les conditions de fonctionnement changent ou les tâches ne sont pas d’une égale importance. ➢Toutes les tâches obéissent à la même fréquence d’exécution. Pour changer cette fréquence d’exécution pour une fonction donnée, il faut appeler plusieurs fois. ➢Délai max. = Somme des temps d’exécution des tâches. ➢Taux d’exécution = 1 / Délai max.
36
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Ordonnancement du CPU
?: Mais si on reçoit des données GPS juste après le début d’exécution de Rec?
Discussion sur les délais: – Est-ce qu’on doit attendre Rec, Sw, LCD avant de commencer de décoder les données GPS ? – Est−ce qu’on doit attendre Rec, Sw, LCD et Dec avant de savoir si on s’approche d’un trou de route ou pas !
Ordonnancement statique: exécution cyclique
37
Ordonnancement dynamique
❑ Permet de déterminer l’ordonnancement à la volée
➢Basé sur l’importance ou autre chose ➢Simplifie ➢Simplifie la la conception conception de de système système avec avec plusieurs plusieurs fréquence fréquence d’exécution
❑ Ordonnancement basé sur l’importance
➢Prioriser signifie que les tâches les moins importantes ne ralentissent pas les tâches les plus importantes.
❑ Comment et combien de fois doit−on exécuter ce qui doit être exécuté ? ➢Coarse grain –(granularité grossière): après qu’une tâche ait terminé son exécution, appelé Run-to-Completion (RTC) ou non-préemptif ➢Fine grain –(granularité grossière): n’importe quand, appelé Préemptif, puisque une tâche peut devancer une autre.
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Ordonnancement du CPU
38
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Ordonnancement du CPU
?: Mais si on reçoit des données GPS juste après le début d’exécution de Rec?
Discussion sur les délais: – Est-ce qu’on doit attendre Rec avant de commencer de décoder les données GPS ?– Est−ce qu’on doit attendre Rec, Dec et Check avant de savoir si on s’approche d’un trou de route ou pas !
Ordonnancement dynamique RTC
39
Ordonnancement dynamique RTC
Etats des tâches et règles d’ordonnancement
❑ L’ordonnanceur choisit parmi les tâches prêtes prêtes (Ready) (Ready) une une tâche tâche pour pour l’exécuter l’exécuter en en se basant sur les priorités. ❑ Règles d’ordonnancement:
➢Si aucune tâche n’est exécutée, l’ordonnanceur lance la tâche la plus prioritaire. ➢Si lancée, une tâche est exécutée jusqu’à ce qu’elle soit terminée (non préemptif). ➢La tâche rentre dans l’état attente (Waiting) jusqu’à ce qu’elle soit prête ou exécutée ➢Seulement les ISR peuvent interrompre une tâche.
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Ordonnancement du CPU
40
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Ordonnancement du CPU
?: Mais si on reçoit des données GPS juste après le début d’exécution de Rec?
Discussion sur les délais: – L’ordonnanceur arrête Rec pour pouvoir décoder la position immédiatement avec Dec – On doit attendre Dec et Check avant de savoir si on s’approche d’un trou de route.
Ordonnancement dynamique préemptif
41
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Comparaison entre les temps de réponse
Ordonnancement du CPU
❑Avantages
✓La préemption offre un temps de réponse réduit ✓Permet de faire plus de traitement (plus de détection de trous, ou une grande vitesse du véhicule) ✓Permet de réduire la fréquence de fonctionnement du CPU (moins de dépenses, moins de consommation de puissance) ❑Inconvénients
✓Nécessite une programmation plus compliquée, plus de mémoire ✓Ajoute des vulnérabilités aux problèmes de «data race»
42
Ordonnancement dynamique préemptif
Etats des tâches et règles d’ordonnancement
❑ L’ordonnanceur choisit parmi les tâches prêtes (Ready) une tâche pour l’exécuter l’exécuter en en se se basant basant sur sur les les priorités. priorités. ❑ Règles d’ordonnancement:
➢Une tâche active peut finir dans l’état waiting (blocked) ➢Une tâche en attente waiting ne peut avoir le CPU. Elle doit être signalée par une ISR ou une autre tâche. ➢Seulement l’ordonnanceur peut changer l’état d’une tâche de ready à running ou l’inverse.
Utilisation du SW pour ordonnancer l’exécution sur le CPU
Exemple: Avertisseur de trous sur route et localisation par GPS:
Ordonnancement du CPU
43
Développement Software pour les systèmes embarqués
Cycle de vie software : Concepts
❑ Coder est la partie la plus visible d’un processus de développement software
mais ce n’est pas l’unique partie
❑ Avant de coder, nous devons savoir :
➢Ce que le code doit faire ? Spécification des Besoins
➢Comment le code est structuré ? Spécification de l’architecture
→ Seulement à ce stade on peut commencer à coder (Design Before Coding)
❑ Comment savoir que le code va fonctionner ? →Plan de test; de préférence à
spécifier lors de l’étape de spécification
❑ Le code sera probablement amélioré au cours du temps: corrections,
adaptations, améliorations & maintenance préventive
44
Développement Software pour les systèmes embarqués
Cycle de développement ( de vie) d’un produit
❖ Compréhension ❖ Maintenance ❖ Amélioration ❖ Tests
45
Besoins
❑ Types de besoins:
o Fonctionnels : ce que le système doit faire o Non fonctionnels − comportement du systèmes: temps de réponse, efficacité, efficacité énergétique, sécurité, etc. o Contraintes: limitation des choix de conception ❑ Représentations
oTexte oTexte : : peut peut être être non non complet, complet, difficile difficile à à assimiler, assimiler, parfois parfois contradictoire. contradictoire.
o Diagrammes (machine à états, flowcharts, schémas de séquence message)
❑ Traçabilité
o Chaque besoins doit être vérifié avec un test
❑ Stabilité
oLe changement des besoins favorise la non efficacité et souvent le problème
de «récence» (c.à.d le nouveau changement au niveau des besoins est
considéré le plus importants)
Développement Software pour les systèmes embarqués
46
Modèles de développement
❑ Comment planifier ces tâches ?
❑ A considérer un certain nombre de risques au développement
➢Nouveau MCU ?
➢Besoins très spécifiques (débit, puissance, certification en sécurité, etc.)
➢Nouveau ➢Nouveau produit produit ? ?
➢Nouveau client ?
➢Changement des besoins ?
❑ Choisir un modèle basé sur ses risques
➢Basique : peut créer un plan détaillé: Waterfall
➢Sophistiqué : utilise des méthodes itératives; V Model
Développement Software pour les systèmes embarqués
47
Modèles de développement
Développement Software pour les systèmes embarqués
Waterfall
▪ Planifier le travail, et travailler le plan
▪ Ce modèle implique que nous et le client savons :
➢Tous les besoins ➢Toutes les interactions entre les phases de conception ➢Le temps nécessaire pour écrire le code et le
➢Le temps nécessaire pour écrire le code et le tester
Réalité : nous ne pouvons pas tout savoir et prévoir, par conséquent plusieurs révisions et retours sont nécessaires.
48
Modèles de développement
V Model Overview
Développement Software pour les systèmes embarqués
49
Lier les étapes pré− et post− codage pour une meilleure efficacité
Modèles de développement
Développement Software pour les systèmes embarqués
V V Model Model Overview Overview
- Codage et inspection du code
- Test du Software
- Analyse Rétrospectives du projet
- Spécification des besoins
- Conception architecturale
- Conception détaillée
50
V Model Overview
- Spécification des besoins
❑ Les résultats de l’analyse des besoins, doit contenir :
➢ Introduction avec les buts et objectifs du système ➢Description du problème à résoudre ➢Description fonctionnelle
– Donne “une description du traitement” de chaque fonction – Liste et justifie les contraintes de conception
Modèles de développement
Développement Software pour les systèmes embarqués
– Liste et justifie les contraintes de conception – Explique les besoins en performance ➢ Description comportementale: décrit comment le système réagit aux évènements et situations internes et externes.
– Comportement basé sur des états – Un contrôle généralisé – Un flot de donnée généralisé ➢ Critères de Validation
– Comment décider que ce système est acceptable (C’est finit ?) -C’est la base d’un plan de validation ➢ La bibliographie et les annexes désignent tous les documents en relation avec le projet et qui fournissent des informations supplémentaires.
51
V Model Overview
- Conception architecturale
❑ L’architecture définit la structure du système:
➢ Composants ➢ Propriétés externes et visibles des composants ➢ La relation entre ces composants
❑ ❑ L’architecture L’architecture est est une une représentation représentation qui qui permet permet au au concepteur concepteur de de : : ➢ Analyser l’efficacité du design par rapport aux besoins ➢ Considérer des architectures alternatives plus tôt. ➢ Réduire les risques d’implémentation
❑ L’architecture est importante parce que:
➢ Elle est assez simple pour qu’elle soit mémorisé par une seule personne (contrairement à la compréhension de tous le code source) ➢Permet à tous les intervenants de décrire le système et par conséquent de le discuter.
Modèles de développement
Développement Software pour les systèmes embarqués
52
V Modèles de développement
Model Overview
- Conception détaillée
❑ Décrit comment le système se comporte
➢ Diagramme de contrôle et de données ➢ Diagramme de machine à états ➢ Diagramme de séquence des évènements
❑ ❑ La La représentation représentation graphique graphique est est très très utile utile ➢ Peut donner un aperçu clair sur comment les composants du système doivent fonctionner.
❑ Langage de modélisation UML (Unified Modelling Language)
➢ Fournit plusieurs types de diagramme ➢ Quelques uns sont utiles pour les SEs pour décrire la structure ou le comportement
Développement Software pour les systèmes embarqués
53
Modèles de développement
V Model Overview
Développement Software pour les systèmes embarqués
Diagrammes UML
- Conception détaillée
54
V Modèles de développement
Model Overview
- Conception détaillée
Exemple: Machine à état du dialogue de l’envoi d’un brouillon avec un mailer
Développement Software pour les systèmes embarqués
55
Modèles de développement
V Model Overview
Développement Software pour les systèmes embarqués
Flowchart
- Conception détaillée
56
V Modèles de développement
Model Overview
- Codage et inspection du code
❑ Le codage est directement orienté par la conception détaillée
❑ Utiliser un outil de contrôle des versions au cours du développement
❑ Suivre un style de codage standard
➢Eliminer ➢Eliminer les les variations variations du du style style qui qui rend rend le le code code difficile difficile à à comprendre comprendre
➢Eviter les mauvaises pratiques
➢Expliciter les bonnes pratiques pour les rendre faciles à suivre
❑ Effectuer des revues du code
❑ Tester efficacement
➢Automatiquement
➢Test de régression* ❑ Inspecter le code avant de le tester * La régression est un ensemble de méthodes statistiques très utilisées pour analyser la relation d’une variable par rapport à une ou plusieurs autres.
Développement Software pour les systèmes embarqués
57
Modèles de développement
V Model Overview
Développement Software pour les systèmes embarqués
- Test du Software
❑ L’objectif du test est de trouver rapidement les problèmes:
➢Est-ce que le software viole les besoins spécifiés ?
➢Est-ce que le software viole d’autres besoins non spécifiés ?
❑ Approches de test:
➢Test Test Incrémental Incrémental
– Coder une fonction puis la tester (module/unité/élément de test)
– Puis tester quelques fonctions fonctionnelles ensemble (test
d’intégration)
➢Test BigBang
– Coder toutes les fonctions pour construire le système
– Tester le système complet
– Plug and pray!
58
V Model Overview
- Analyse Rétrospectives du projet
Modèles de développement
❑ Objectif: améliorer le processus de développement
➢ Extraire toutes les informations utiles du projet juste terminé –fournir
une une « expérience « expérience virtuelle » virtuelle » aux aux autres autres
➢ Fournir un feedback positif
➢ Documenter les problèmes et leurs solutions clairement et d’une façon
concise pour une future utilisation
❑Même les petits changements améliorent les performances, mais sont facile à
oublier→ Documenter.
Développement Software pour les systèmes embarqués
59
- On considère le contrôleur d’un chauffe-eau électrique (comme le montre la figure
suivante) comme étant un système embarqué.
Exercice Exercice
60
1) Quels sont les éléments d’entrée ?
2) Quels sont les éléments de sortie ?
3) Donnez au moins deux fonctionnalités de sécurité à ajouter et spécifier
les éléments hardware ou software nécessaires pour chacune d’elles.
4) 4) Décrivez Décrivez une une fonctionnalité fonctionnalité software software utile utile que que vous vous pouvez pouvez ajouter ajouter sans sans
l’ajout d’un élément hardware supplémentaire.
5) Décrivez deux fonctionnalités utiles que vous pouvez ajouter en
software si le contrôleur est capable de déterminer l’heure du jour.
6) Décrivez une fonctionnalité utile que vous pouvez ajouter en software
si le chauffe−eau est équipé d’une connexion Internet.
Exercice Exercice
61
CONTENU
❑Le CPU ARM
62
Microcontroller vs. Microprocessor
❑ Les deux ont un CPU qui exécute les instructions.
❑ Le MCU possède des périphériques pour une interface embarquée et pour le
contrôle (Analogique, Signaux non logiques, Timing, Génération d’horloge,
Communications point à point, réseau, Efficacité et sécurité, Gestion de la puissance)
Le Coeur du CPU Cortex-M4
63
Le Coeur du CPU Cortex-M4
La famille ARM processor
64
Instruction Set Architecture (ISA)
❑ Architecture Load/Store
➢ Développée pour simplifier la conception du CPU et améliorer ses
performances:
✓Memory wall: les CPUs sont plus rapides que les mémoires; les accès
mémoire ralentissent le CPU, limite les optimisations à la compilation
→Changer →Changer l’ISA l’ISA pour pour rendre rendre les les instructions instructions indépendantes indépendantes de de la la mémoire mémoire
➢ Les instructions de traitement des données peuvent accéder aux registres:
1.Charger les données depuis la mémoire vers les registres
2.Traiter ces données
3.Sauvegarder ces données dans la mémoire
➢ Plus efficace quand plusieurs registres sont disponibles
Architecture Registre/Mémoire (les instructions de traitement des données
peuvent accéder à la mémoire ou registres)
Le Coeur du CPU Cortex-M4
65
Le Coeur du CPU Cortex-M4
ARM Cortex-M4; Mode d’opération
66
ARM Cortex-M4; Mode d’opération
❑ Handler Mode:
➢Utilisé pour gérer les exceptions. Le processeur retourne en mode Thread
une fois le traitement des exceptions terminé.
❑ Thread Mode:
➢ Utilisé pour exécuter l’application. Le processeur entre en mode Thread
Le Coeur du CPU Cortex-M4
➢ Utilisé pour exécuter l’application. Le processeur entre en mode Thread
lorsqu’il sort d’un « reset ».
➢ En mode Thread, le registre « CONTROL register » contrôle si l’exécution
du software est privilégiée ou non. En Handler mode, l’exécution du
software est toujours privilégiée.
67
ARM Cortex-M4; Mode d’opération
❑ Privileged Level
L’application software peut utiliser toutes les instructions et a accès à toutes les
ressources.
❑ Unprivileged Level :
L’application :
Le Coeur du CPU Cortex-M4
▪ a un accès limité aux instructions MRS (Move from Special Register to
general register) et MSR (Move from general register to Special Register).
▪ ne peut pas utiliser l’instruction CPS (relatives aux interruptions)
▪ ne peut pas accéder au « timer » du système, NVIC ( Nested Vector
Interrupt Control), bloc système de contrôle
▪ peut avoir un accès limité aux mémoires et aux périphériques
▪ unprivileged software s’éxécute sous unprivileged Level
68
Le Coeur du CPU Cortex-M4
Les registres du ARM Cortex-M4
❑ Registres 32 bits:
➢Word (1 mot): 32 bits (4 bytes)
➢Half Word: 16 bits (2 bytes)
➢Double word: 64 bits (8 bytes)
69
Les registres du ARM Cortex-M4
❖ R0-R12 –Registres à usage général pour le traitement des données
➢R0-R7 (Low registers): seulement les instructions 16 bits peuvent y avoir accès
➢R8-R12 (High registers): peuvent être utilisés par les instructions 32-bits
❖ SP –Pointeur de pile (Stack pointer, R13)
✓Peut indiquer un ou deux SPs:
o o Pointeur Pointeur de de pile pile principal principal − − Main Main Stack Stack Pointer Pointer (MSP) (MSP)
o Pointeur de pile de process− Process Stack Pointer (PSP)
✓Le mode Handler utilise toujours MSP
✓Le mode thread peut être configuré pour utiliser soit MSP soit PSP
❖LR − Registre de lien (Link Register, R14)
✓Contient l’adresse de retour avec les instructions Branch & Link (B&L)
❖ PC -program counter (R15)
✓ Contient l’adresse de la prochaine instruction à exécuter
Le Coeur du CPU Cortex-M4
70
Les registres du ARM Cortex-M4
❖xPSR -Program Status Registers (Registres d’état du programme)
➢APSR : Application PSR
➢EPSR : Execution PSR
➢IPSR : Interrupt PSR (lecture seule, n’est pas accessible en «unprivileged level»)
Ces Ces trois trois registres registres sont sont accessibles accessibles comme comme étant étant un un seul seul registre registre (PSR) (PSR)
❖ Registres de contrôle des Interruption/exception (Mask registers)
➢PRIMASK
➢FAULTMASK
➢BASEPRI
❖Registre de contrôle du processeur: CONTROL Register (CR)
Le Coeur du CPU Cortex-M4
71
❑ SP actif dépend du mode en cours et de SPSEL (bit 1 du registre CONTROL)
oSPSEL == 0: MSP
oSPSEL == 1: PSP
❑ Similairement, le niveau du privilège en mode Thread dépend de nPRIV(bit 0
du registre CONTROL)
onPRIV== 0: privileged level: Accès à toutes les ressources
onPRIV== 1: unprivileged level: Accès limité aux ressources
Le Coeur du CPU Cortex-M4
Les registres du ARM Cortex-M4
72
Les registres du ARM Cortex-M4
Registres xPSR du ARM Cortex-M4
❑ Le registre PSR est le même registre mais avec 3 vues différentes
➢ Application PSR (APSR): contient les bits flags: Negative (N), Zero (Z),
Carry (C), Overflow (V), Sticky Saturation (Q), Great-Than or Equal (GE)
➢ Interrupt PSR (IPSR): contient le numéro de l’exception de l’ISR en cours
d’exécution
Le Coeur du CPU Cortex-M4
d’exécution
➢ Execution PSR (EPSR)
✓ICI/IT, Interrupt-Continuable Instruction, IF-THEN instruction
✓Thumb state, fixé à 1
73
Les registres du ARM Cortex-M4
Registres de contrôle des Interruption/exception (Mask registers)
❑ PRIMASK -Exception mask register
✓Bit 0: PM Flag, S’il est = ‘1’ désactive toutes les exceptions avec une
priorité configurable
✓Accessible Accessible avec avec les les instructions instructions CPS, CPS, MSR MSR et et MRS MRS
❑ FAULTMASK –Hard Fault exception mask register
✓Similaire à PRIMASK mais permet de bloquer les exceptions
Hardware
❑ BASEPRI
✓Active ou désactive les interruptions en se basant sur son niveau de
priorité
Le Coeur du CPU Cortex-M4
74
Les registres du ARM Cortex-M4
Registre de contrôle du processeur: CONTROL Register (CR)
❑ Bit2: FPCA flag
✓Floating Point Context Active:
o non utilisé = ‘0’
o sauvegarde des registres «floating point» = ‘1’
✓Ce ✓Ce bit bit est est à à ‘1’ ‘1’ automatiquement automatiquement quand quand les les instructions instructions FP FP (Floating (Floating Point) Point)
sont exécutées, et à ‘0’ par défaut.
❑ Bit 1: SPSEL flag
✓Sélection du SP en mode thread : MSP ‘0’ ou PSP ‘1’
✓A utiliser avec un environnement avec OS
✓Les Thread utilisent PSP
✓L’OS et les ISRs utilisent MSP
❑ Bit 0: nPRIVflag
✓Définit si le mode thread est privilégié ‘0’ ou non−privilégié ‘1’
Le Coeur du CPU Cortex-M4
75
Le système de mémoire et adressage ❑ Cortex-M4 possède 4 Go d’espace d’adresse (32 bits) ❑ L’espace mémoire de 4 Go est architecturalement défini comme un nombre de régions;
✓Chaque région est indiquée pour l’utilisation recommandée ✓Facilité pour le programmeur logiciel pour communiquer entre différents périphériques
Le Coeur du CPU Cortex-M4
7676
Le système de mémoire et adressage
❑ Région Code
– Principalement utilisée pour stocker le code de programme (instructions)
– Peut également être utilisée pour la mémoire de données
– Mémoire ON-Chip, telle que On-Chip FLASH
❑ Région SRAM
-Principalement utilisé pour stocker des données (« heap » et « stack »)
-Peut également être utilisé pour le code de programme
-Mémoire ON-Chip (malgré son nom «SRAM», elle peut être une mémoire
SRAM, SDRAM ou autres types)
❑ Région pour les Périphériques
-Principalement utilisé pour les périphériques, tels que AHB (Advanced High Performance Bus) ou APB (Advanced Peripheral Bus) 77
Le Coeur du CPU Cortex-M4
77
Le système de mémoire et adressage
❑ Région External RAM
-Principalement utilisé pour stocker des blocs de données volumineux ou le
contenu des mémoires caches
-Mémoire OFF-Chip, plus lente que la région ON-Chip SRAM
❑ Région External Device
-Principalement utilisé pour mapper des périphériques externes
-Mémoire OFF-Chip, Exemple: les cartes SD
❑ Région Internal Private Peripheral Bus (PPB)
-Utilisé à l’intérieur du cœur du processeur pour un contrôle interne
-Dans PPB, une plage de mémoire spéciale est définie en tant que SCS (System
Control Space ) -Le NVIC (Nested Vectored Interrupt Controller ) fait partie de SCS. 78
Le Coeur du CPU Cortex-M4
78
Le Coeur du CPU Cortex-M4
Le système de mémoire et adressage
79
Le système de mémoire et adressage Cortex-M4 Endianness
❑ Endian fait référence à l’ordre des octets stockés en mémoire: « Pour une valeur multi−octets, dans quel ordre ces octets sont sauvgardés? »
➢ Little-Endian: le plus petit octet d’une donnée est stocké entre le bit 0 et le bit 7
➢Big-Endian :le plus petit octet d’une donnée est stocké dans les bits 24 à 31
Le Coeur du CPU Cortex-M4
80
télécharger gratuitement CONCEPTION DES SYSTÈMES EMBARQUÉS