Langage C pour les applications temps-réel et embarquées

(ref.002603A)

5 jours - 35 heures

Objectifs

  • Cette formation traite de la configuration de l’éditeur de liens en fonction du mapping mémoire d’une cible
  • L’accès aux registres des périphériques en utilisant des unions et des champs de bits est vue en détails
  • La gestion des interruptions et des exception est couverte
  • Cette formation aborde également la re-direction des fonction read() et write() vers des drivers de bas niveaux
  • Cette formation détaille la conception et le développement d’un gestionnaire de taches propriétaire
  • La communication inter-taches est abordée
  • La mise en œuvre des librairies d’entrées/sorties de ST est expliquée

Partenaires

ST Microelectronics

Prérequis

  • Des notions de base du langage C ou d’un autre langage de programmation est recommandé, même si la syntaxe du langage C est revue pendant la formation
  • Ceci n’est pas une formation langage C pour débutant

Configurations

  • Les travaux pratiques sont effectués en utlisant IAR Workbench

Contenu

Prise en main d’un environnement de développement

Structure d’un programme en C

Configuration du compilateur

Configuration de l’éditeur de liens

Sections générées automatiquement par le compilateur

Sections définies par l’utilisateur

Méthodologie pour processeurs ayant une MMU ou un cache

Fichier de configuration du linker

Code de démarrage

Inclusion de fichiers d’en-tête

Macros

Macros assembleur

Compilation conditionnelle

Classe d’allocation : register, extern, static et auto

Variables globales et variables locales

Les types du langage C

Constantes

Casting implicite et explicite

Operateurs, priorités et ordre d’évaluation

L’attribut volatile

L’attribut const

Les instructions sélectives : if..else, opérateur ternaire, switch..case

Les instructions itératibves : while(), do..while(), for()

Les instructions de contrôle : break, continue, return

Modes d’adressage

Pointeurs : déclaration, initialisation

Tableaux unidimensionnelles

Tableaux multidimensionnelles

Structures : déclaration, initialisation, accès à un champ, structures imbriquées

Tableaux de structures

Structures à champs de bits, sensibilité à l’endianness

L’intérêt de typedef

Le type enum

Unions : déclaration, initialisation, accès à un champ

Modélisation des registres d’entrées/sorties à l’aide de structures et d’unions

Alignements implicites des champs et bourrage

Déclaration en C ANSI et en C KR

Attributs static et extern

Appels de fonctions, passage de paramètres

Valeur de retour

La fonction main(), séquence de démarrage

Pointeur de fonction

Interface C/assembleur, stack frame

Assembleur embarqué

L’intérêt du tas par rapport aux sections de données statiques

Fonctions associées : malloc(), calloc(), realloc() et free()

Description de l’algorithme d’allocation 'first fit'

Listes chaînées : simplement-chaînées, doublement-chaînées, arbre

Opérations de bases : insertion et suppression d’un élément

Gestion d’exception en C, table de gestionnaire du cœur ARM

Interruptions sur niveau ou sur front

Introductions au timers du STR712

Pilotes génériques

Description des UARTs du STR712

Etude d’un driver pour les ports UARTs

Librairies et archives

Mise en flash d’une application

Connection à un périphérique

Fonctions standards d’entrée / sortie, stdin, stdout, stderr

Buffer d’entrée / sortie

Fonctions de formatage d’entrée / sortie : printf() et scanf()

Fonctions d’entrée / sortie fichiers : fopen() et fclose()

Définitions : tache et processus, préemption

Notion d’OS orienté temps réel (RTOS)

Etat des taches, transitions entre états

Multi-taches et temps réel

Déterminisme

Implémentation d’un gestionnaire de tache : définition d’un algorithme de priorité

Gestion d’une liste de descripteurs de taches

Mécanisme de suspension et reprise d’une tache

Communication et synchronisation inter-taches

Notes

  • Des supports de cours papiers seront fournis à chaque participant pendant la formation.