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