Académique Documents
Professionnel Documents
Culture Documents
Figure 1.1 : Schéma bloc d’un calculateur, consistant en une mémoire, une unité
centrale de traitement (CPU) des entrées et des sorties.
Mémoire du Calculateur
La mémoire du calculateur contient toutes les informations nécessaires au démarrage (boot) de ce dernier,
à l’exécution de programmes, et à l’accès aux données. Les instructions qui dictent au calculateur la manière
de démarrer (booter) forment ce qui est appelé « Firmware ». Comme on le verra plus tard, celle-ci est assez
différente en termes d’organisation de la mémoire du microcontrôleur. Cependant, la mémoire joue un rôle
important dans la sauvegarde des instructions de programme et des données variables.
Unité de Commande (Control Unit)
L’Unité de Commande-UC (CU) lit et interprète les instructions du programme. Elle envoi aussi des signaux
de commande à travers le bus de commande (control bus). Ces signaux instruisent le calculateur de lire ou
d’écrire en mémoire, contrôlent le timing du transfert de données, et autrement dit instruit le processeur du
calculateur à suivre les étapes nécessaires dans les timings nécessaires pour exécuter le programme. L’UC
utilise ce qui est appelé un compteur de programme (CP) (voir chapitre 2) pour garder une trace de
l’instruction actuelle, et une partie spéciale de la mémoire appelée registre d’état (RE) (voir chapitre 2) pour
garder une trace de l’instruction exécutée la plus récente.
Unité Arithmétique et Logique (Arithmetic and Logic Unit ou ALU)
Comme le suggère le nom, l’UAL (ALU) est capable de réaliser plusieurs opérations arithmétique (addition,
soustraction, multiplication) et des fonctions logiques (ET, OU, OU Exclusif) . Les fonctions disponibles dans
l’UAL dictent les types d’instructions possibles à être exécuté sur le calculateur. L’UAL et UC forment l’Unité
Centrale de Traitement – UCT (CPU) du calculateur.
Dispositifs d’Entrée/Sortie-E/S (Input and Output -I/O Devices)
Les ordinateurs utilisent un nombre important de dispositifs d’E/S. Les dispositifs d’entrée recueillent des
informations à partir du monde extérieur pour aider l’ordinateur à prendre des décisions quant aux processus
à effectuer. Les entrées usuelles de l’ordinateur incluent : le clavier ; la sourie ; l’écran tactile ; le microphone ;
les interrupteurs ; et les détecteurs de lumière. Les dispositifs de sortie permettent à l’ordinateur d’afficher
des informations à destination des humains. Les sorties usuelles des ordinateurs sont par exemple : l’écran
d’affichage ; les haut-parleurs ; le retour haptique ; les LEDs ; les afficheurs ; et les buzzers.
Lignes de bus (Bus Lines)
Les lignes de bus sont des interconnexions entre composants. Les lignes de bus sont simplement des
connexions de fils multiple « normaux ». Dans ce document, les bus sont représentés par des traits épais ou
flèches épaisses. Cependant, ils peuvent être représentés par des trait simples avec barre oblique (slash) et un
nombre indiquant le nombre de bits. Ces deux possibilités sont illustrées en Figure 1.2.
Microcalculateur
Microcontrôleur
Microprocesseur
• Petit ;
• Peu couteux ;
• Personnalisable et versatile : l’utilisateur peut décider des types et des nombres de périphériques à
inclure.
Inconvénients des microprocesseurs
Chacun des microcontrôleurs énumérés dans Tableau 4.1 a un jeu d’instruction (ensemble d’instructions)
qui lui est spécifique, son propre ensemble de périphériques et broches d’E/S. Ils ne sont pas généralement
interchangeables.
*Note : Atmel, le fabriquant original des microcontrôleurs AVR, a été racheté par Microchip en 2016.
Beaucoup de manuels et datasheets AVR contiennent encore le logo Atmel.
1.4 Systèmes embarqués (Embedded Systems)
Alors qu’un PC ou un laptop est une machine à usage général (utilisés pour les jeux, Internet, la musique,
le traitement de texte, etc.), les systèmes embarqués font référence à des composants mono-fonction. Il en
existe plusieurs d’exemples dans le monde qui nous entoure, mais en règle générale, un système embarqué
est capable d’effectuer des calculs sans utiliser un système d’exploitation (comme Windows, Linux, macOS,
iOS, etc.). Les systèmes embarqués peuvent être trouvés dans les montres, les lecteurs MP3, les distributeurs
automatiques de billets, et plus. Dans ces exemples, un ordinateur complet serait préjudiciable pour le
fonctionnement de ces équipements. Imaginez devoir rebooter Windows pour faire fonctionner une machine
à laver !
1.5 Choix d’un Microcontrôleur
Comment choisir un microcontrôleur pour un projet de système embarqué ? Il doit avant tout répondre à
toutes les exigences du projet et doit inclure des périphériques et accessoires rendant relativement simple le
développement de produits autour du microcontrôleur. De plus, il est important de s’assurer de la disponibilité
actuelle et futur du microcontrôleur.
Exigences du Project
• Vitesse ;
• Boîtier (DIP, SMD, etc.)
• Consommation d’énergie ;
• Mémoire ;
• Périphériques (timers, ADC, etc.)
• Nombre de broches d’E/S
• Facilité de mise à jour ;
• Coût.
Accessoires additifs
• Un assembleur disponible ;
• Un debugger ;
• Un compilateur pour les langages de programmation de haut-niveau
comme le C ;
• Un soutien technique.
Langage Machine
Le langage machine est l’ensemble d’instruction du microprocesseur converti en binaire. Par exemple,
l’instruction 0001 1101 0100 1111 sur ATmega328P additionne des nombres contenus dans deux registres (15
et 20). Ce code est ensuite acheminé matériellement (les intestins logiques du microprocesseur) à travers le
décodeur d’instruction pour former les commandes appropriées, les adresses, et les signaux de données à
l’électronique associée pour effectuer la tâche désirée. Le langage machine peut être très fastidieux à écrire
et difficile à débugger. Habituellement, il est accompli en utilisant des cartes perforées et des bandes
magnétiques.
Langage Assembleur
Le langage assembleur utilise des codes mnémoniques pour désigner chaque instruction plutôt que son
code binaire l’instruction machine ci-dessus serait réécrite comme ADD 15,20. L’assembleur est converti en
code machine par un programme appelé « assembleur ». Les familles de microprocesseurs et
microcontrôleurs ont des instructions spécifiques qu’ils sont capables d’exécuter. Pour cette raison, le code
assembleur ne peut pas être copié d’un microcontrôleur AVR et collé dans un microprocesseur Intel, par
exemple. Le ATmega328P, étant un microcontrôleur AVR, utilise le jeu d’instructions AVR. En étant familiarisé
avec les instructions permises sur un microcontrôleur signifie que le code pourra être écrit plus efficacement
et de manière compacte ; généralement, le code assembleur utilise moins de mémoire et prend moins de
temps à s’exécuter comparé à un code écrit en langage évolué.
Langage de Programmation de Haut-niveau (évolué)
Langage de Programmation de Haut-niveau utilise des fonctions pour faire ce que l’assembleur et le
langage machine font. L’addition peut être réalisée en utilisant des symboles arithmétiques comme : f = 152
+ 38 ; Le code en langage de haut-niveau est converti en assembleur puis en langage machine à l’aide d’un
compilateur. Comme exemple de langage évolués, on peut citer C, C++, Python et Visual Basic.
L’utilisation des langages évolués signifie que plus de temps sera passé à travailler sur les algorithmes plutôt
que sur les spécificités des instructions assembleur à utiliser. L’initialisation survient sans pour autant la faire ;
la pile, le pointeur de pile, les adresses mémoires, … sont tous alloués automatiquement par le compilateur.
De plus, les programmes de haut-niveau dans un même langage peuvent plus ou moins être recyclés d’un
microcontrôleur à un autre (sous réserve que tous les registres n’ont pas les mêmes noms, certaines fonctions
peuvent être quelque peu différentes, etc.).
1.8 Les Compilateurs
Les compilateurs assurent que le langage de programmation de haut-niveau est correct, à la fois en syntaxe
et en allocation mémoire. Des erreurs et des avertissements sont toujours affichés dans ces cas, et les codes
avec erreurs ne sont pas charger dans le microcontrôleur. Une fois le code est correct, le compilateur le
converti en langage assembleur, à partir duquel il génère un fichier HEX qui contient tout le code machine à
transférer dans la mémoire programme du microcontrôleur.
1.9 Conception de Programme pour Système Embarqué (SE) vs Ordinateur
La conception pour systèmes embarqués (ES) est très différente de l’écriture de programmes d’application
pour un (PC de bureau, laptop, et mobile). Les premiers sont très dépendants des ressources, spécialement
de mémoire disponible sur chaque type de composant. Ces différences sont données dans Tableau 1.4.
Système Embarqué Ordinateur
Mémoire de l’ordinateur
Les ordinateurs de bureau et les laptops ont une mémoire quasi illimitée et de tout type. La mémoire flash
intégrée est utilisée pour stocker des informations qui ne changent pas et qui contiennent des instructions de
démarrage de l’ordinateur. Celles-ci forment le fameux BIOS (basic I/O system).
La mémoire à accès aléatoire (Random Access Memory - RAM), bien que ce nom soit quelque peu
inapproprié, les données du programme pendant son exécution. Par exemple, ouvrir un fichier PDF charge le
programme de lecture Adobe entière dans la RAM d’où il va s’exécuter. Ceci est dû à la disponibilité de
plusieurs giga-octets de RAM sur la plupart des ordinateurs, et au fait que la RAM à tendance à être plus rapide
que n’importe quel autre type de mémoire d’ordinateur.
La mémoire à lecture seule (Read-Only Memory - ROM), se présentant historiquement sous forme de
disques durs magnétiques, et usurpés de nos jours par la mémoire à état solide (solid-state memory), contient
les programmes exécutables et les fichiers de données non variables.
Mémoire des Systèmes Embarqués
Les systèmes embarqués ont beaucoup moins de capacité mémoire et d’options. La mémoire Flash est non
volatile et stocke les instructions du programme et les données prédéfinies (constants). La RAM est une
mémoire volatile contenant les données variables. Puisque la RAM est une ressource limitée, il est nécessaire
de se soucier de contraintes de taille lors d’écriture de programmes. Par exemple, un tableau de 500 valeurs
en virgule flottante nécessite plus de RAM qu’un microcontrôleur ATmega328P ne puisse tolérer.
Utilisation des Fonctionnalité dans la Puce (On-Chip Features)
Avec les systèmes embarqués, plusieurs fonctionnalités périphériques sont utilisées pour l’interfaçage avec
les dispositifs d’Entrée/Sortie, ce qui n’existe pas sur un PC. La configuration de chacune de ces fonctionnalités
périphériques nécessite la connaissance parfaite de chacun de leurs registres de contrôle.
Fonctionnalités périphériques du ATmega328P
Conception Haut-Bas
Implémentation Bas-Haut
A chaque étape, il est important de garder une documentation détaillée du projet. Les ingénieurs utilisent
des carnets de notes pour y inscrire les idées, les pensées, les exigences, ce qui ne fonctionne pas et ce qui
fonctionne.
L’intérêt de cette stratégie de conception est qu’elle aide à clarifier le problème. On ne peut pas concevoir
quelque chose si on n’est pas complètement sûr de ce qu’elle doit faire. De plus, en subdivisant des parties
sont en plus petites pièces, celles-ci deviennent moins compliquées. On peut réaliser que des parties de la
solution peuvent être réutilisables (e.g. u module construit pour un composant peut avoir un code qui peut
être utilisé ailleurs dans la conception). Finalement, en partitionnant le système en petites briques, plusieurs
personnes peuvent travailler sur la solution.
1.11 Outils de Conception
Des outils de conception sont toujours disponibles pour aider à la conception et la réalisation d’un projet.
Un des outils de conception importants c’est l’utilisation d’organigrammes (Flowcharts). L’organigramme
décrit les étapes qu’un programme doit implémenter, de manière à rendre plus simple l’écriture du code
correspondant. Un autre intérêt de l’organigramme est qu’il est indépendant du langage de programmation.
En d’autres termes, étant donné un organigramme, le programme pourrait alors s’écrire aussi facilement en
langage évolué (e.g., C) qu’en assembleur. Figure 1.5 donne un exemple d’organigramme.
Vérification matérielle