L’EMBARQUÉ / N°1 / 31
Développement Application
consommation faites par le débo-
gueur permettront ainsi de vérifier le
comportement attendu et, en cas de
non linéarité par rapport à l’horloge,
de choisir la fréquence assurant la
plus faible consommation.
Une avancée technologique dans le
domaine des MCU permet,
aujourd’hui, de contrôler la valeur
de la tension interne U du cœur de
processeur à partir de l’application
même. Il est ainsi possible pour l’uti-
lisateur de réduire la valeur de la
tension interne VCORE de 1,8 V à
1,2 V si, dans le même temps, la fré-
quence de fonctionnement est ame-
née à 4 MHz maximum. Cette tech-
nique est absolument identique à
celle utilisée dans les processeurs
pour ordinateur portable ou de
bureau ; la technologie SpeedStep
mise au point par Intel en est un
exemple. La possibilité de contrôler
le paramètre tension dans l’équation
de la consommation est un nouvel
atout important pour intervenir dans
un système afin d’obtenir la plus
faible puissance consommée pos-
sible. Reportons nous au calcul théo-
rique : en réduisant la fréquence de
32 MHz à 4 MHz, la consommation
sera diminuée d’un facteur 8 ; si en
parallèle la tension de cœur VCORE
passe de 1,8 V à 2,2 V, alors la puis-
sance consommée est réduite d’un
facteur 18 !
Mieux gérer les interruptions
Voici un autre exemple où il est dif-
ficile de s’apercevoir qu’un système
consomme inutilement de l’énergie,
et qui implique cette fois les interrup-
tions.
La figure 5 montre la courbe de
consommation d’un système piloté
par événements qui, à t0, se trouve
en mode inactif avec une intensité I0.
A t1, le système est activé, ce qui fait
passer le courant I1, valeur qui repré-
sente la consommation du système
actif et se servant d’un périphérique.
A t2, l’exécution est suspendue par
une interruption de plus haute prio-
rité. Le périphérique en cours d’uti-
lisation n’est pas désactivé, bien que
la tâche ou thread de plus haute
priorité ne s’en serve pas. Au lieu de
cela, d’autres périphériques sont
activés par le nouveau thread, ce qui
augmente le courant et le fait passer
à la valeur I2 entre les instants t2 et t3,
moment où le contrôle est rendu au
thread de plus basse priorité.
La fonctionnalité du système est cer-
tainement excellente, ainsi que son
optimisation en termes de vitesse
d’exécution et de taille de code.
Mais au plan énergétique, des efforts
supplémentaires sont possibles. La
zone jaune sur la figure 5 représente
l’énergie économisée si les périphé-
riques inemployés entre t2 et t3 sont
désactivés, ou si les priorités entre les
deux threads sont échangées.
Le débogage énergétique fait donc
découvrir facilement la forte aug-
mentation de consommation corres-
pondant à l’arrivée d’interruption, et
permet d’identifier une anomalie. Un
examen approfondi dans la fenêtre
« Timeline » montre que des périphé-
riques inemployés restent actifs plus
longtemps que nécessaires et donc
consomment de l’énergie. Evidem-
ment dans une situation comme
celle décrite ci-dessus, il faudra tou-
jours vérifier si cela vaut la peine de
dépenser des cycles d’horloge sup-
plémentaires pour activer et désacti-
ver des périphériques.
Repérer les conflits
d’initialisation de matériel
Pour éviter les entrées « flottantes »,
une pratique courante de conception
consiste à raccorder à la masse les
broches d’entrées/sorties non utili-
sées par les microcontrôleurs. Si le
logiciel configure par erreur l’une de
ces broches en tant que sortie
logique à « 1 », un courant pouvant
atteindre 25 mA sera drainé à travers
cette broche. Il est facile de visualiser
cette valeur inexplicablement élevée
sur la courbe de consommation ; il
est aussi possible de retrouver le
code d’initialisation erroné corres-
pondant. Le tout en examinant l’al-
lure de la courbe de consommation
au moment du démarrage de l’appli-
cation. Une situation similaire se
présente si une broche d’E/S, conçue
comme entrée pilotée par un circuit
externe, est incorrectement configu-
rée en tant que sortie par le logiciel.
Attention aux interférences
dans les circuits analogiques
Implanter des circuits analogiques et
numériques sur une même carte
pose des problèmes bien particuliers.
Le placement-routage de la carte
joue à ce niveau un rôle important
dans le maintien de niveaux de bruit
assez bas pour garantir une acquisi-
tion précise des petits signaux analo-
giques. La conception en signal
mixte exige donc beaucoup d’atten-
tion et une grande expertise en déve-
loppement matériel. Mais la concep-
tion du logiciel peut, elle aussi,
affecter la qualité des mesures ana-
logiques. Le fait de programmer
l’exécution de multiples E/S pendant
l’acquisition de mesures analogiques
donne l’occasion à ces nombreuses
lignes numériques de basculer simul-
tanément ; ce qui représente une
bonne opportunité d’introduire du
bruit supplémentaire dans le conver-
tisseur analogique-numérique.
Un débogueur énergétique permet
ici d’examiner les interférences des
signaux numériques et d’alimenta-
tion au sein des composants analo-
giques. Dans la fenêtre « Timeline »,
il est facile d’afficher l’activité d’in-
terruption avec les données de
consommation, et d’étudier la
courbe de consommation juste avant
les interruptions du convertisseur
A/N. Les pics de consommation
parasite au voisinage des conver-
sions A/N peuvent être sources de
bruit et doivent être examinés. Toutes
les données de la fenêtre chronolo-
gique étant corrélées avec le code
exécuté, un simple double-clic sur la
valeur suspecte de la consommation
suffit à faire apparaître le code source
C correspondant.
On voit comment la méthodologie
de débogage énergétique analyse en
détail comment le logiciel applicatif
influence la consommation. Grâce à
ces données, il est alors possible
d’envisager une optimisation du
code source afin de minimiser la
consommation du système embar-
qué. n
I2
I2
I1
I0
t0t1t4
t3
t2
Temps
Consommation de puissance
5 DIAGRAMME DE LA PUISSANCE CONSOMMÉE
Ici, la zone jaune représente l’énergie économisée si
les périphériques inemployés entre t2 et t3 sont
désactivés, ou si les priorités entre les deux threads
sont échangées.