Cette série d'articles présente quelques bases du langage C, dans un contexte de programmation des microcontrôleurs. Les notions abordées sont plutôt générales et ne s'adressent pas à une famille de composants en particulier. L'offre étant diversifiée en la matière, les exemples d'illustrations seront réalisés dans un environnement spécifique.
Sommaire
- Le langage C dans les systèmes embarqués
- Processus de développement d'un programme en C
- Exemple de programme en langage C
- La directive "include"
- Les variables
- Les types de données:
- Les identificateurs:
- Les commentaires:
- Les opérateurs et les expressions en langage C:
- Bibliothèque d'entrée-sortie:
- Les instructions de contrôle :
- Les fonctions :
- Programmation multi fichiers et classes d’allocations des variables :
- Les tableaux :
- Les chaînes de caractères :
- Les pointeurs :
- Les structures :
- Les unions :
- Les énumérations
- Les macros :
Le langage C dans les systèmes embarqués
Origines :
Le langage C avait été développé en 1972 dans les laboratoires Bell par Dennis Ritchie, pour la création des systèmes d’exploitations. Sa première utilisation majeure fût le développement du système UNIX peut avant 1974.
Ce langage a continué d'évoluer après cette période à travers différents compilateurs; et le succès a contribué à sa normalisation d'abord par l'ANSI (American National Standard Institute), puis par l'ISO (international Standard Organisation), ensuite vont suivre le CEN (Comité Européen de Normalisation) et l'AFNOR (Association Française de Normalisation). Toutes ces normes sont identiques, et on parlera de C ANSI ou C norme ANSI.
En raison de la nature bas niveau pour programmer les systèmes d’exploitation (en référence aux pilotes de périphériques, par exemple le clavier, l’écran, les disques), le langage C offre un ensemble de caractéristiques intéressantes pour être utilisé par les développeurs d’applications embarquées. A y voir de plus près, à chaque fois qu’on écrit un programme pour un microcontrôleur, on développe en fait son système d’exploitation.
Avantages du langage C :
- Il existe un très grand nombre de compilateurs C pour divers types de microcontrôleurs et pour n’importe quelle plateforme (Linux, Windows, Mac).
- Il est plus facile et plus rapide d’écrire un programme pour microcontrôleurs en C qu’en assembleur.
- Le langage C peut presque faire tout ce que l’assembleur fait pour un programme pour microcontrôleurs.
- Le C est un langage de bas niveau par rapport aux autres langages programmation de haut niveau.
Peut-on parler de portabilité du langage C?
Prenons ce cas de figure. La question est de savoir si un programme qui fait basculer une entrée-sortie d’un microcontrôleur peut aussi faire basculer une entrée-sortie d'une carte mère d’un ordinateur? La réponse est non. La manière dont la mémoire, les interruptions et les différents périphériques sont utilisés est totalement différente d’un composant à l’autre.
Autre cas; la gestion des périphériques peut différer d'un compilateur à un autre. Par exemple le compilateur MPLAB XC8 et le compilateur CSS ne gèrent pas les routines d'interruptions de la même façon.
De ce fait nous pouvons dire que C n’est pas tout à fait portable, pour les systèmes embarqués. Des différences peuvent apparaître d'un composant à l'autre ou d'un compilateur à un autre.
Le langage ANSI C de base lui-même et tous les algorithmes généraux qui sont écrits sans s'interfacer avec le matériel sont portables. Mais dans tout système embarqué, vous utiliserez toujours certains périphériques et interruptions du composant. Il n'existe aucun moyen standard de les gérer et il ne pourrait pas y en avoir vu la diversité de l'offre du marché.
Les outils nécessaires:
Pour illustrer les différentes notions qui seront abordées, nous aurons besoin de:
- L'environnement de développement intégré MPLAB X créé par la société Microchip. Celui-ci a été choisi car il existe une version gratuite, bien que des versions payantes plus améliorées soient aussi proposées. Il intègre un simulateur. Un compilateur compatible peut y être installé; bref tout ce dont nous avons besoin pour les exemples.
- Le compilateur MPLAB XC8, et en cas de besoin le compilateur MPLAB XC16.
Les exemples seront réalisés en majorité pour des cibles 8 bits, ce qui à notre sens constitue une base de départ pour la programmation des microcontrôleurs.