0% ont trouvé ce document utile (0 vote)
39 vues25 pages

Introduction à la Programmation Embarquée

Ce cours aborde la programmation embarquée et mobile, en se concentrant sur le langage C et les systèmes embarqués. Il couvre des sujets tels que les principes des processeurs, les entrées/sorties, et les besoins logiciels pour les systèmes embarqués. Les étudiants apprendront à utiliser des outils de simulation et à gérer les ressources dans des environnements à contraintes spécifiques.

Transféré par

oumaima arfaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues25 pages

Introduction à la Programmation Embarquée

Ce cours aborde la programmation embarquée et mobile, en se concentrant sur le langage C et les systèmes embarqués. Il couvre des sujets tels que les principes des processeurs, les entrées/sorties, et les besoins logiciels pour les systèmes embarqués. Les étudiants apprendront à utiliser des outils de simulation et à gérer les ressources dans des environnements à contraintes spécifiques.

Transféré par

oumaima arfaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Note de cours :

Programmation embarquée et mobile

Année universitaire: 2024-2025

K. Khemiri 1
Plan du cours

 Introduction au langage C

 Introduction au Systèmes Embarqués


 Principes du Processeur

 Entrées/Sorties

 Programmation mobile

K. Khemiri 2
I. Introduction générale

 Les systèmes embarqués sont des dispositifs électroniques intégrant matériel


et logiciel, conçus pour remplir une fonction spécifique de manière autonome
ou en interaction avec d’autres systèmes.
 Contrairement aux ordinateurs généralistes, ils sont optimisés pour des
performances spécifiques tout en respectant des contraintes strictes telles
que la consommation d’énergie, le temps réel et l’espace mémoire limité.

On retrouve ces systèmes dans de nombreux domaines :


•Automobile : Gestion moteur, ABS, airbags, GPS, etc.
•Aéronautique et spatial : Systèmes de navigation et contrôle de vol.
•Électronique grand public : Smartphones, appareils connectés,
électroménager intelligent.
•Médical : Dispositifs de monitoring, pacemakers.
•Industrie et robotique : Automates programmables, capteurs intelligents.

K. Khemiri 3
I. Introduction générale

Besoins logiciels pour les systèmes embarqués


• Langages de programmation adaptés (C, PIC C, Python, etc.)
• Environnements de développement et outils de simulation (Proteus,
MPLAB, etc.)
• Gestion des ressources (mémoire, interruptions, multitâche)
• Interfaces matérielles (GPIO, UART, SPI, I2C)

 Dans ce cours on aura besoin d’utiliser:


- langage C: pour la programmation
- Pic C: communiquer avec les microcontrôleurs
- Proteus : Simulation des circuits électroniques et des microcontrôleurs.

K. Khemiri 4
II. Introduction au Langage C
structure d’un programme
// librairies int main()
#include<stdio.h> {
#include<stdlib.h> // declarations variables
int vars;
// constantes float var2;
#define PI 3.1415 // saisie
scanf("%f",&var2);
// declarations fonctions
int MaFct(int,float); // appel fonction
vars=MaFct(var1,var2);
// declarations variables globales
int var1=1; // affichage
printf("\n vars : %d",vars);

return(0);
}
// definition fonctions
int MaFct(int a,float b)
{

}

K. Khemiri 5
II. Introduction au Langage C
II.1. Types de variables

• char (%c) ou unsigned char (%u) : 1 octet ([-128,127] ou [0,255]), int (%d ou %u),
long int (%ld), float (%f), double (%lf)
• Exemple dans un processeur 32 bits :

• short int : 2 octets


• long int : 4 octets
• float : 4 octets
• double : 8 octets

Note : Il n’existe pas de type Booléen en C (un alias est disponible en Arduino)

Type Déclaration scanf et printf


Caractère char %c
Entier int %d
Réel float %f

K. Khemiri 6
II. Introduction au Langage C
II.2. Déclarations de variables : scalaires

• Déclaration des variables, obligatoire avant d’utiliser une variable :


type identificateur ;

• Exemples :
int x;
float x1, x2, char rep;

• Pas de déclaration à l’intérieur du code ! (en C++, comme avec


l’arduino possible mais à éviter)

K. Khemiri 7
II. Introduction au Langage C
II.3. Portée et qualificateur des variables

• Portée :
- locale: déclaration variable à l'intérieur d'une fonction et valable
uniquement à l’intérieur
- static: permet à une variable locale de conserver sa valeur lors d’appels
successifs de la fonction
- global : déclaration au dessus du main. Elle est connue par tous les
programmes du fichier
- extern: permet de spécifier que la variable est déclarée dans un autre
fichier

• Qualificateur :
- const: valeur ne doit pas changer
- volatile: peut être modifiée par une source externe du programme

K. Khemiri 8
II. Introduction au Langage C
II.4. Opérateurs

• Mathématiques : +, -, *,/,% (modulo)


• Affectation : = (a = 5;)
• Comparaison : ==, !=, >,>=,<,<=
• Logique : &&, ||

Exemple :
rep=(c>=5) && (c<=10) ; // rep égal à 1 si c compris entre 5 et 10 sinon 0
• Conversion explicite :
new_var=(<type>) <nom_var>;
Exemple :
float x=3.2;
int a=(int)x; // a vaudra alors 3

K. Khemiri 9
II. Introduction au Langage C
II.5. Structures de contrôle

• If : sélection • While : répétition


if (condition) while (condition)
{ {
… …
}
}
else
{ ou
do

} {

• Switch : sélection multiple
switch (condition) }while(condition);
{ • For : répétition
case ?: for(i=0;i<ValFinale;i=i+1)
… {
break; …
… }
}

Remarque : pas de elseif, attention aux boucles infinies dans le "while"

K. Khemiri 10
II. Introduction au Langage C
II. 6. Pointeurs

Type particulier de variables

Définition : variable contenant l’adresse d’une autre variable

px 1AE 4 int x = 4 ;

100 1AE int *px = &x ;

Pour avoir accès au contenu du pointeur : printf("\n %d" ,*px);

Pointeurs pour les types : char, int, float

K. Khemiri 11
II. Introduction au Langage C
II.7. Fonctions et sous programmes

• Fonction : (d1,d2) : entrées (ou données) ; R : sortie (résultat)


type NomFonction(type d1,type d2, …){
type R;

return(R);
}
• Sous programme : (d1,d2) : entrées (ou données) ; (R1,R2) : sorties (résultats)
void NomSousProg(type d1,type d2, type *R1,type R2[])
{
*R1 = … ;
}

• Dans l’en-tête déclarer la fonction :


type NomFonction(type,type, …);
void NomSousProg(type,type , type *,type []);
• Dans le programme principal :
r=NomFonction(a1,a2);
NomSousProg(a1,a2,&r1,r2);

K. Khemiri 12
II. Introduction au Langage C
II.8. Passage de paramètres
• par valeur : paramètres d'entrées
Une copie de la valeur de la variable est fournie au programme, impossible à
changer cette valeur

• par adresse : paramètres de sorties ou d’entrées / sorties


L’adresse dans la mémoire est utilisée par la fonction qui peut donc modifier la valeur de la
variable
Exemple :
void echange (int *px, int *py);

int main(){
int a=4,b=3;
echange(&a,&b);
}
void echange (int *px,int *py){ int temp;
temp=*px;
*px=*py;
*py=temp;
}

K. Khemiri 13
II. Introduction au Langage C
II.9. Bibliothèques : affichage (stdio.h)

• printf(“\n N=%d”,N) :
• Chaine de format pouvant contenir des indicateurs
(%c,%d,%f,%s)
• Arguments : les variables dont on veut afficher les valeurs et
qui viendront s’afficher à la place de l’indicateur

• Exemple :
• printf (“\n la tempéature est de %f C°”, temperature);

• Caractère putc() ou chaine de caractères puts()

K. Khemiri 14
II. Introduction au Langage C
II.10. Bibliothèques : saisie (stdio.h)

• scanf (“%d”, &N) :


• indicateurs (%c,%d,%f,%s) (mais pas de tableau d’entiers et de
réels)
• Arguments : les variables dont on veut afficher les valeurs et qui
viendront s’afficher à la place de l’indicateur. On met l’adresse
sauf pour %s car c’est un tableau (et donc une adresse)

• Exemple :
• scanf(“%f”, &temperature);

• Caractère getchar() ou chaine de caractères gets()

K. Khemiri 15
III. Introduction au Systèmes Embarqués
III. 1. Définition

• Système électronique et informatique autonome

• Interagit avec l’extérieur

• Pas ou peu d’interface utilisateur (systèmes enfouis)

• Spécialisé dans une tâche bien précise

• SOC : System On Chip


– Système complet

– En général SOC = 1 ou + processeur+ROM+ E/S

K. Khemiri 16
III. 1. Définition

Un système informatique embarqué


est un système de contrôle-commande

capteur
capteur Mesures, interruptions
capteur
capteur Système informatique
Procédé à
de
piloter
contrôle-commande
actionneur Commandes, affichages

K. Khemiri 17
III.2. Motivations : Systèmes Embarqués

• Miniaturisation processeurs
• Dans tous les objets de la vie courante
– Électroménager : cafetière, lave-vaiselle, …
– Consoles de jeux vidéo, photos, télévisions
– Transports : systèmes de navigation aérien et pour voiture (+ de
100 processeurs)
– Outils de communications de l’information : téléphonie
– Santé: implants, aide personnes handicapées, etc.
– Bâtiment : ascenseurs, surveillance, éclairage, accès
– Production : automate, commande d’énergie, stockage, robot
– Spatial : satellites, …

K. Khemiri 18
III. 3. Différences SE / système classique

• Basse consommation.
– exemple : téléphonie, santé, …
• Il faut trouver le bon compromis entre vitesse et
consommation d ’énergie
– Le SE le plus rapide n’est pas obligatoirement = recherché
• Système temps réel (Real Time RT):
– La plupart des SE sont RT, Le système doit réagir dans un
temps déterminé (deadline).
– Les SE sont principalement des RT
– Vitesse liée aux performances RT.
– Certaines applications ont « plusieurs Deadline »
• exemple : Synchronisation dans les applications Multimedia (arrivée
image et son), airbag, ....

K. Khemiri 19
III. 4. Organisation d’un système embarqué
Environnement
extérieur

ASIC Mémoire
(application specific Logiciel
integrated circuit)
ou OS
Capteurs Convertisseur CPU Convertisseur Acteurs
A/N N/A

IHM Ports de Systèmes


diagnostic auxiliaires

Sauvegarde
et sécurité
du système

Un système informatique doit pouvoir :


- Communiquer avec l’extérieur : capteur, actionneur, …
- Exécuter des instructions : processeur
- Conserver des informations : mémoire

K. Khemiri 20
III. 5. Schéma Général

Un système informatique est composé de circuits :


- processeur(s)
- mémoire
- coupleurs d’Entrées/Sorties

reliés entre eux par des bus :


- d’adresses
- de données
- de contrôle (commande et état)

Quand ces circuits sont intégrés sur une même puce


on parle de microcontrôleur (µC).

K. Khemiri 21
III. 5. Schéma Général

MEMOIRE
RAM + EEPROM

ADRESSES

μP DONNEES
Processeur
R/W*
... CONTROLE

E/S ToR E/S série CA/N « TIMER »

périphériques RxD TxD Start Busy …

K. Khemiri 22
III. 6. Programmation sans OS et avec OS
Sans OS:
• Pas d’OS sur la plupart des SE (coût, lourdeur, …)
• Programmation proche du matériel : optimisation temps, mémoire
• Mettre en place votre environnement de développement :
• Choisir un langage de développement (Assembleur, C/C++)
• Trouver compilateur / linker / simulateur
• datasheets du matériel
• Gérer les entrées / sorties
• Choisir son mapping : où placer les différentes informations dans la
mémoire RAM
• Bien comprendre / utiliser les registres : Configuration, utilisateurs

Avec OS:
• Intéressant dans certains cas : programme lourd cotenant beaucoup de tâches
• Ordonnanceur intégré
• Driver intégré
• Exemple : linux (embarqué et/ou temps réel)

K. Khemiri 23
III. 7. Exemples de SE
Microcontrôleur (comme arduino) :
- Le SE le plus courant
- Comprend un µP, des bus, de la ROM et des E/S
- pas d’OS
- Avantages : pas cher, faible encombrement et faible consommation
- Inconvénients : énormément de choix (avec plus ou moins de
périphériques), traitements plutôt légers

Mini-Ordinateurs (ARM) :
- Exemples :Raspberry Pi (processeur ARM), plateforme Armadeus
(processeur ARM + FPGA)
- OS Linux Embarqué
-Avantages : puissance de linux (driver, ordonnanceur intégré, …)
- Inconvénients : consommation, moins de liberté dans la programmation,
la gestion de la mémoire et très bonne connaissance de Linux

K. Khemiri 24
III. 7. Exemples de SE
FPGA (basé sur des portes logiques) :
- Circuits logiques complexes reconfigurables
- Programmation en VHDL (possible d’autres langages mais sans garantie
de compilation)
- Avantages : flexibles permettant des évolutions, plus performants qu’un
logiciel, moins chers que des ASICs
- Inconvénients : Développement long pour des applications compliquées,
gourmands, moins fiables.

DSP : Digital Signal Processing


- SE conçu pour les applications en Traitement Signal / Images / Vidéo
- Exemples : Télévision, amplificateur HiFi, Routeur, Radar/Sonar,...
- Avantages : précision, prédiction (simulations sur ordinateur), bibliothèques de
calcul (fft, …), Cycle Multiplication/Accumulation (MAC) :
A = A+(X.Y) : 1 cycle au lieu de 4 cycles
- Inconvénients : coût élevé (inutile pour des réalisations simples), complexité
(optimisation du calcul)
K. Khemiri 25

Vous aimerez peut-être aussi