Langage C

Formation C : le langage C pour l’embarqué Savoir développer en langage C pour des applications embarquées

Savoir développer en langage C pour des applications embarquées

Résumé

Logiciels : Chaîne de production gcc et outils de debug gdb/ddd, simulations avec QEMU (cible arm) et VirtualBox (cible « PC »)
Durée : 21 à 28 heures
Objectifs :
 appréhender les contraintes d’un programme fonctionnant sur une machine à ressources réduites et acquérir les bonnes pratiques pour l’écriture de programmes en langage C sur des plateformes dites embarquées. Cela comprend en particulier :
 connaître le détail de l’interaction avec le compilateur, en tenant compte de différentes cibles/cœur processeur,
 savoir manipuler les données complexes (formation de 4 jours) : chaînes et tableaux ; les grands nombres,
 organiser la mémoire,
 appliquer les bons usages de la mémoire : passage de paramètres, cycle de vie d’une donnée dans la pile,
 gérer le temps et le traitement des interruptions/exceptions,
 utiliser les règles pour un debug efficace,
 connaître les règles pour le bon usage du compilateur : optimisations explicites ou implicites,
 employer les bonnes pratiques d’un développement multitâches.
Pré-requis : Avoir réalisé une première expérience dans le développement en langage C. Avoir des besoins métier.
Public : Développeurs expérimentés.
Méthodes mobilisées : Alternance d’apports théoriques et d’exercices de mise en application pratique. Chaque aspect théorique est illustré par des exemples concrets issus de cas réels de traitements en embarqué. Des travaux pratiques mettant en œuvre l’ensemble des savoirs sont réalisés dans des machines virtuelles et sur des cartes réelles.
Modalités et délais d’accès : Sur inscription préalable au minimum 1 semaine avant le début de la formation selon disponibilité du formateur.
Modalités d’évaluations : Une évaluation du niveau des stagiaires est réalisée avant l’entrée en formation par téléphone ou au moyen d’un questionnaire. Évaluation des acquis et de la satisfaction en fin de formation.
Accessibilité aux personnes en situation de handicap ou présentant des difficultés d’apprentissage : nous pouvons proposer des solutions de compensation de nos prestations en adaptant les moyens pédagogiques, techniques et d’encadrement (les précisions).
Taux de satisfaction 2i2L : 96,34 % des stagiaires sont satisfaits à l’issue de leur formation.
Tarif : pour une demande de formation interne, nous consulter.

Programme

L’organisation de la mémoire
 connaître le détail de l’accès aux données, registres, caches et mémoires externes
 connaître le détail du fonctionnement d’un cache (I et D) et impact sur les performances
 connaître le fonctionnement d’une MPU et d’une MMU
 connaître le fonctionnement et les usages des DMA
 Utiliser les variables avec volatile

Les bons usages de la mémoire
 maîtriser la portée, la visibilité des données
 maîtriser l’utilisation de constantes : les économies possibles de RAM
 maîtriser les passages de données entre fonctions (registres, pile)
 maîtriser l’utilisation de pointeurs
 maîtriser l’analyse détaillée de la pile (cycle de vie des données, cadre de pile, risques de débordements)
 maîtriser la gestion de la mémoire dynamique

L’utilisation du compilateur
 maîtriser les étapes de traduction du code
 maîtriser la production du code final (linker) et savoir ajouter des librairies
 maîtriser la localisation des différentes sections (par exemple avec l’analyse du format ELF)
 maîtriser les scripts personnalisés pour le linker

Les règles pour un debug efficace
 connaître l’impact de l’utilisation de la console
 connaître les points d’arrêts matériels et logiciels

Le multi-tâches
 timer matériel et compteurs logiciels, analyse des choix possibles pour la mesure du temps
 détails de fonctionnement des interruptions (priorité, section critique, sauvegarde de contexte)
 utilisation de plusieurs contextes et introduction aux scheduler : avantages et impacts
 mise en œuvre d’applications concurrentes avec un scheduler préemptif sur une cible mono-cœur type ARM cortex-M3 (sans MMU). Possibilité de prévoir des applications sur composant multi-cœur (type cortex-A8), sur demande.
 files de messages et communication inter-processus
 usages et impacts des briques matérielles (MPU / MMU)
 introduction aux architectures multi-cœurs
 gestion de la synchronisation et de la concurrence d’accès

Les données complexes (en option sur 4 journées)
 maîtriser les chaînes de texte (ascii 7bits, ascii 8bits et codepages, UTF)
 connaître les représentations de nombres, le format Q15, les nombres à virgule flottante (l’IEEE754 avec et sans utilisation d’une FPU)
 maîtriser le transtypage et le changement de représentation
 connaître les structures, unions, et types complexes
 maîtriser l’alignement des structures