De la programmation sur une cible embarquée
Le terme embarqué n'a pas une définition formelle. Il est souvent utilisé pour qualifier de multiples facettes des systèmes informatiques et électroniques. Il peut être vu comme un composant intégré à un système plus large (un avion ou une télévision), ou bien comme un système autonome avec des contraintes de taille ou de consommation comme pour un téléphone portable.
Dans le contexte des objets connectés, nous nous concentrerons sur le système informatique qui est directement intégré à l'objet et qui sert à contrôler ses opérations. En général ce système est un microcontrôleur.
Programmer efficacement ces systèmes nécessite des compétences en programmation, mais aussi une compréhension assez fine du fonctionnement de l'architecture informatique. C'est pourquoi vous commencerez par revoir des concepts de base sur l'exécution d'un système informatique avant d'aborder sa programmation.
Le matériel choisi
Avant de rentrer dans le vif du sujet, commençons par quelques explications sur le contexte et les choix que nous avons dû faire.
Afin d’illustrer la programmation sur une cible embarquée, il a fallu choisir une cible (un système spécifique), et les outils de développement.
Pour la cible, notre choix s’est porté sur le microcontrôleur STM32F103 de la société STMicroelectronics. Celui-ci est représentatif des architectures modernes et est présent dans de nombreux systèmes industriels existants (vous verrez dans la suite qu'il existe une très grande variété de cibles possibles). De plus, il existe de nombreuses cartes avec ce microcontrôleur à des faibles prix, ce qui va vous permettre d’acquérir votre propre carte avant de commencer ce cours et ainsi de manipuler concrètement la programmation d’un microcontrôleur si vous le souhaitez. Vous pouvez suivre ce cours sans disposer de matériel, mais vous risquez de perdre la joie que l'on peut avoir de voir clignoter « pour de vrai » une simple LED...
Nous avons bâti les exercices et les tutoriaux sur la carte d’évaluation NUCLEO-F103RB.
Elle est disponible pour un peu plus d’une dizaine d’euro (par exemple sur Amazon ou chez Farnell) et peut se commander facilement. Cette carte dispose d’une connectique compatible avec les composants Arduino, ce qui vous permettra de poursuivre sa prise en main en investissant dans quelques composants supplémentaires. Pour l’utiliser, il suffit d’un simple câble USB et une chaîne de développement adaptée.
En ce qui concerne la chaîne de compilation, nous avons fait le choix d’une solution propriétaire sur Windows plutôt que des outils gratuits et ouverts disponibles sur Linux. La solution retenue est l’environnement de développement (IDE) µVision de la société Keil (appartenant à la société ARM).
Pourquoi ce choix ?
Tout d’abord pour faciliter l’installation de la chaîne d’outils. L’IDE µVision a l’avantage d’être facile à installer et d’être auto-suffisant (pour compléter votre installation, il ne vous manquera qu’un pilote pour Windows à installer). µVision comprend un compilateur et tous les fichiers nécessaires pour commencer un projet rapidement.
Une seconde raison qui nous a poussé à choisir cet outil est l'interface de débogage très bien faite qui facilite l’apprentissage.
Ensuite, la version d’évaluation disponible sur le site de Keil est gratuite. Cette version comporte des limitations comme la taille du code généré mais, dans une phase d’apprentissage, ces limitations ne sont pas pénalisantes.
Enfin, le dernier avantage à cet outil, est la possibilité d’apprendre à programmer sur microcontrôleur sans nécessairement disposer d’une carte réelle. En effet, µVision embarque un simulateur d’architecture qui permet de tester son code et d’en observer son comportement. Ce simulateur ne couvre pas tous les composants d’un microcontrôleur, mais il est largement suffisant pour ce que vous aurez à en faire.
En résumé, pour suivre ce cours, vous aurez au minimum besoin d’installer l’IDE µVision. Un complément intéressant serait de faire l’acquisition d’une carte Nucleo F103RB pour avoir la satisfaction de faire tourner votre code sur un vrai microcontrôleur. Enfin, nous verrons à la fin de ce cours, la possibilité d’ajouter quelques composants électroniques à la carte, mais cela n’a rien d’obligatoire.
Dans la suite de cette première partie, vous allez:
commencer par comprendre la nature des différents outils,
installer ces outils,
prendre en main les principales fonctionnalités pour le développement et le débogage,
commencer l’étude de la programmation sur microcontrôleur.