Cours C pour les Cours C pour les systèmes embarqué systèmes embarqué M.RAHMOUN
Cours C pour les Cours C pour les systèmes embarqué systèmes embarqué M.RAHMOUNE M.RAHMOUNE Partie I : Rappel du langage C Partie II: Manipulation de la mémoire : les opérations binaire, Partie III: Programmation pour les systèmes embarqués Ecole Nationale des Sciences Appliquées d ’Oujda Historique Historique Langage C, est un langage structurée, développé en 1970 par Dennie Ritchie aux Laboratoires Bell d'AT&T, il est l'aboutissement de deux langages : • BPCL développé en 1967 par Martin Richards. • B développé en 1970 chez AT&T par Ken Thompson. ANSI/ISO 1988 (et 1999) Le C est Le langage de développement le plus répandu dans les entreprise (et ailleurs). Bibliographie [Brian W. Kernighan Dennis M. Ritchie] Le livre du C Norme ANSI [Claude Delannoy] Le livre du C premier langage [Claude Delannoy] Programmer en langage C [Claude Delannoy] Programmer en langage C …... La gestion de la mémoire La gestion de la mémoire 0 1 Logique de 2 états insuffisante Logique de (28) 256 états logique binaire 0 1 insuffisante La mémoire d’un ordinateur Code Code exécutable exécutable Cache (cmos) Unité Logique Registres RAM (silicium) La gestion de la mémoire • La mémoire comporte trois zone d La mémoire comporte trois zone d allocation allocation • Chaque zone sert a mémoriser trois types de variables Chaque zone sert a mémoriser trois types de variables Mémoire Mémoire Statique Statique (Heap, tas) (Heap, tas) Mémoire Mémoire Dynamique Dynamique (Stack/pile) (Stack/pile) Mémoire virtuelle (disque) (silicium) Zone d ’allocation mémoire Zone statique Tout objet manipulé par l'ordinateur est stocké dans sa mémoire. On peut considérer que cette mémoire est constituée d'une série de « cases ». Des cases dans lesquelles sont stockées les valeurs des variables ou les instructions du programme. Pour pouvoir accéder à un objet (la valeur d'une variable ou les instructions à exécuter par exemple), c'est-à-dire au contenu de la case mémoire dans laquelle cet objet est enregistré, il faut connaître le numéro de cette case. Autrement dit, il faut connaître l'emplacement en mémoire de l'objet à manipuler. Cet emplacement est appelé l'adresse de la case mémoire, et par extension, l'adresse La gestion de la mémoire La gestion de la mémoire Cet emplacement est appelé l'adresse de la case mémoire, et par extension, l'adresse de la variable ou l'adresse de la fonction stockée dans cette case et celles qui la suivent Toute case mémoire a une adresse unique. Lorsqu'on utilise une variable ou une fonction, le compilateur manipule l'adresse de cette dernière pour y accéder. C'est lui qui connaît cette adresse, le programmeur n'a pas à s'en soucier. Une adresse est une valeur. Cette valeur est constante, car en général un objet ne se déplace pas en mémoire La gestion de la mémoire La gestion de la mémoire Ici un fichier ascii ici l’écran 0101011110111 Pour que la conversion des caractères en codes binaire soit universel. Des normes standard sont été établis: ASCII (American Standard Code for Information Interchange) codes ASCII standards codes ASCII étendus codes ASCII étendus Segment N+2 Segment N+1 Segment N Segment N-1 = 64 Ko (65.536 octets Offset de l ’objet en mémoire Sans segmentation Sans segmentation + Un adressage sur 64 bits Un adressage sur 64 bits Sans segmentation Sans segmentation + Un adressage sur 64 bits Un adressage sur 64 bits • La lecture et l’écriture dans un fichier sont des opérations d’entrée / sortie. La lecture et l’écriture dans un fichier sont des opérations d’entrée / sortie. – Utilisation de la bibliothèque Utilisation de la bibliothèque iostream iostream (déjà utilisée pour les E/S (déjà utilisée pour les E/S écran/clavier écran/clavier) Généralité Sur Les Flux (Ou Flots) Généralité Sur Les Flux (Ou Flots) L’écran a les dimensions 24 lignes × 80 caractères en général Le langage C Le langage C Le C est un langage structuré, typé et modulaire, extensible • Langage polyvalent permettant le développement de systèmes d'exploitation, de programmes applicatifs scientifiques et de gestion. • Langage structuré. • Langage évolué qui permet néanmoins d'effectuer des opérations de bas niveau (< assembleur d'Unix >). • Portabilité (en respectant la norme ANSI !) due a l'emploi de bibliothèques dans lesquelles sont reléguées les fonctionnalités liées à la machine. • Grande efficacité et puissance Plan sommaire du cours C Plan sommaire du cours C C est un langage compilé … normalisation tardive (97/98...) Protocole de communication entre le programmeur et le processeur. Protocole de communication entre le programmeur et le processeur. Code C Code C Code Code préprocesseurs préprocesseurs Programme Programme Librairies Librairies Fichier(s Fichier(s) ) Objet Objet L’extension d’un fichier est .c ou un .h pour un fichier d’entête Une suite de données Stockées en mémoire secondaire (disque dur, CD, Diquette…). – Sous forme d’octet (comme en mémoire centrale). – A quoi ça sert: • Les données en mémoire centrale durent uniquement le temps de Les Fichiers Texte En C Les Fichiers Texte En C • Les données en mémoire centrale durent uniquement le temps de programme => Mais un fichier est persistant. • Beaucoup plus de place en mémoire secondaire (disque dur…). • Mais! L’accès à la mémoire secondaire est beaucoup plus long 9 x 10-3 sec par rapport 9*10 -9 sec pour l’accès à la mémoire. # include <stdio.h> #define PI 3.14159 /* fichier hello */ main() { Les Fichiers Hello C Word Les Fichiers Hello C Word commentaire C Directive du processeur inclure fichier .h Une seule fonction main par programme C { printf(« hello to C word "); return 0; } Bloc / Programme principale Une instruction se termine par ; Structure d’un programme C Structure d’un programme C • Programme C : une ou plusieurs fonctions dont au moins une fonction main stockées dans un ou plusieurs fichiers. • Fonction : • type et nom de la fonction suivis d'une liste d'arguments entre parenthèses, • instruction composée constituant le corps de la fonction. • Instruction composée : délimitée par les caractères { et } • Instruction composée : délimitée par les caractères { et } • Instruction simple : se termine par ; • commentaire : encadre par les délimiteurs /*et */ • Instruction préprocesseur : commence par # Les sources d'une application écrite en langage C peut être stocke dans un ou plusieurs fichiers dont le suffixe ou l’extension .c La compilation de ces sources s'effectue a l'aide de la commande cc. Sans autre spéciation, cette commande enchaîne 3 étapes : • appel au préprocesseur • appel au compilateur, • appel a l'éditeur de liens. Généralité: Jeu de caractère utilisé en c Généralité: Jeu de caractère utilisé en c • 26 lettres de l'alphabet (minuscules, majuscules) et les chiffres de 0 à 9 • caractères spéciaux : ! * + \ " < # ( = | } > % ) ~ ; ] / • séquences d'échappement telles : • passage a la ligne (\n), • tabulation (\t), • backspace (\b). ^ - [ : , ? & _ { ' . (espace) Identificateur et mots Identificateur et mots-clés clés • Identificateur : nom donné aux diverses composantes d'un programme; variables, tableaux, fonctions. Forme de lettres et de chiffres ainsi que du caractère permettant une plus grande lisibilité. Le 1er caractère doit obligatoirement être une lettre ou bien un caractère . Peut contenir jusqu'a 31 caractères minuscules et majuscules. Il est d'usage de réserver les identificateurs entièrement en majuscules Il est d'usage de réserver les identificateurs entièrement en majuscules aux variables du préprocesseur. - Identificateur valide : x y12 somme_1 _temperature noms surface n_de_chier TABLE - Identificateurs invalides : 4eme commence par un chiffre x#y caractère non autorise (#) no-commande caractère non autorise (-) taux change caractère non autorise (espace) Exemple: Les mots réservés Les mots réservés auto extern sizeof break float Static case for struct char goto switch const if typedef continue int union default long unsigned do register Void double return volatile else short while enum signed #include <stdio.h> #define PI 3.14159 /* calcul de la surface d'un cercle */ main() { float rayon, surface; float calcul(float rayon); printf("Rayon = ? ") ; scanf("%f", &rayon) ; Structure d’un programme C Structure d’un programme C surface = calcul(rayon) ; printf("Surface = %f\n", surface) ; } /* définition de fonction */ float calcul(float r) { /* définition de la variable locale */ float a ; a = PI * r * r ; return(a); } L'operateur séquentiel (,) permet de regrouper des sous-expressions sous forme de liste. Ces sous expressions sont évaluées en séquence. Opérateur Séquentiel Opérateur Séquentiel Exemple int i; float r; double dble , d; char *ptr; char buffer[100]; d = (i = 1 , r = 2.718f , dble = 2.7182818); r = (float)(ptr = buffer , i = 10); Les types de base Les types de base • Le langage contient des types de base qui sont les entiers, les réels simple et double précision et les caractères que l'on identifie a l'aide des mots-clés int, float, double et char respectivement. • De plus il existe un type uploads/Management/ cours-c-pour-embarque.pdf
Documents similaires
-
22
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 19, 2021
- Catégorie Management
- Langue French
- Taille du fichier 2.6439MB