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 : toutes nos formations sont accessibles aux personnes en situation de handicap, qu’il soit moteur, visuel, auditif ou cognitif ; quelles qu’en soient les particularités.
Nous pouvons proposer des solutions de compensation de nos prestations en adaptant les moyens pédagogiques, techniques et d’encadrement. Nos locaux sont en rez-de-chaussée avec des places de parkings extérieures juste devant l’entrée du bâtiment. Aussi, merci de nous informer de vos besoins d’adaptation ; les échanges peuvent se faire et rester en toute confidentialité.
Taux de satisfaction 2i2l : 95 % des stagiaires sont "très satisfaits" ou "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