Académique Documents
Professionnel Documents
Culture Documents
20 Ressources
20 Ressources
1 / 12
Introduction
Dans un systme embarqu, les ressources sont limites : la mmoire est souvent faible on manque souvent dun coprocesseur arithmtique lnergie est critique les entres-sorties sont minimales
2 / 12
Gestion de la mmoire
Allocateur classique
permet dallouer des blocs de taille quelconque gre des listes de blocs libres et occups peut dsallouer explicitement ou faire de la garbage collection
Allocateur ddi
gre une zone alloue statiquement alloue des blocs de taille xe utilise un bitmap pour reprsenter lespace occup
3 / 12
Ide : marquer avec un seul bit les blocs occups en mmoire Initialisation : tous les blocs sont zro Allocation : recherche dun bit zro Dsallocation : remise dun bit zro
8 bits
Bloc 1
Bloc 2
Bloc 3
Bloc 4
Bloc 5
Bloc 6
Bloc 7
Bloc 8
4 / 12
Optimisations
Possibilit de recherche par mots machine entiers Possibilit de dichotomie sur mots entiers Utilisation des oprations assembleur de recherche du premier bit zro dans un mot Possibilit de se souvenir du rsultat de la dernire allocation avec remise zro en cas de dsallocation
5 / 12
Oprations numriques
Il existe deux reprsentations des nombres virgule : 1 Virgule ottante :
position de la virgule conserve dans le nombre prcision dpendante du nombre (5 chires signicatifs par exemple) ncessit de renormalisation chaque opration coprocesseur arithmtique bienvenu utiliss pour des grandeurs trs variables (108 108 par exemple)
2
Virgule xe :
position de la virgule gre par le programmeur prcision absolue indpendante du nombre (0,0001 par exemple) mise lchelle eectue par le programmeur lorsque cest ncessaire utiliss pour des grandeurs limites (0, 0001 100, 9999 par exemple) calculs en gnral beaucoup plus lgers
6 / 12
Virgule ottante :
Reprsentation dune grandeur avec une prcision de n%
Virgule xe :
Logiciels bancaires : on souhaite garder la valeur dun compte au centime prs, pas une approximation 1% prs Logiciels de navigation : la prcision doit tre de 0, 01 et doit rester identique 0 et 180
Le choix de la virgule ottante se fait souvent par ignorance de la virgule xe, ou par fainantise des dveloppeurs.
7 / 12
Virgule xe
Le nombre utilis est entier La mise lchelle nest pas toujours ncessaire :
Des grandeurs de mme unit sajoutent et se soustraient Exemple : angle = angle angle
Des oprateurs de mise lchelle (scaling ) permettent de simuler les oprations avec dautres nombres rels :
Problme : tant donn un rayon en millimtres, comment calculer une aire en millimtres carrs (A = R 2 ) en restant en entiers ? Solution : utiliser une approximation de (A 3142RR ) 1000 Certains langages orent un oprateur S(a, b, c) calculant ab en c utilisant un rsultat intermdiaire de double prcision
8 / 12
Fractions continues
Problme :
Trouver lapproximation dun nombre rel par une fraction Trouver une fraction irrductible la plus prcise possible
3 1
3+ 1
3+ Prcision :
7+
1 15+0,99659592
355 113
< 106
355RR 113
Calcul de laire : A
Samuel Tardieu (ENST)
Fonctions relles
Problme : reprsenter une fonction relle Solution
Choisir la reprsentation du domaine de la fonction en virgule xe Choisir la prcision du rsultat Utiliser une table pour stocker les valeurs tudier la possibilit dinterpoler (linairement ou avec un polynme plus complexe) les valeurs intermdiaires
Exemples dinterpolation
Doublement des valeurs : (cas particulier) f( a+b f (a) + f (b) ) 2 2
Interpolation linaire : (k [0, 1]) f (a + k(b a)) = f (a) + k(f (b) f (a))
Samuel Tardieu (ENST) Gestion des ressources 10 / 12
Gestion de lnergie
Solutions
Ne jamais faire dattente active (polling ) Utiliser le mode veille du systme Bloquer sur des ressources prvues pour cela (smaphores, variables conditionnelles) lorsquelles sont fournies par le systme dexploitation
11 / 12
Entres-sorties
Comment dverminer un programme ? Avec une LED : changement dtat chaque passage dans la boucle principale Avec une LED : changement dtat chaque interruption Avec une LED : changement dtat chaque passage dans une routine suspecte Avec une LED : allumage chaque assertion incorrecte Tout cela fonctionne aussi avec un moteur (allumage pendant 1 seconde puis extinction) Tout cela fonctionne aussi avec un buzzer Avec un port srie : traces slectives, slectionnables par macros (lorsque cest applicable au langage choisi)
12 / 12