Low Power Software - 5ESPE
Documentation de support de TP

INSA-GEI (J. L. Noullet & Alexandre Boyer) 2023-2024

Thème et objectifs

Au carrefour des thématiques Le développement d'applications embarquées sur microcontrôleur avec :
Objectif du TP : développer un programme de démonstration permettant de mettre en oeuvre et tester plusieurs techniques de réduction de la consommation d'un microcontrôleur "Ultra-Low Power" (STM32L476).

Plateforme Hardware

Microcontrôleur

Ce projet utilise le STM32L476, qualifié de "Ultra-low-power ARM Cortex M4" par le fabricant ST. Toutes les informations à propos des périphériques de ce microcontrôleur sont données dans son Reference Manual. Le Programming Manual est disponible ici.
Une sélection de documents du fabricant est accessible à l'INSA sur le serveur "commetud".
Ces documents sont accessibles depuis les salles de TP sur l'unité R:
R:\LLGDB\DOC_L4

Carte de développement

Le projet utilisera une carte Nucléo de ST, coupée pour permettre la séparation de la sonde de programmation ST-link.
Cette carte est implantée sur une carte support dite Carte Milliwatt

Plateforme Software

Compilateur C/C++

Le projet utilisera la chaîne de compilation GNU ARM construite autour du compilateur GCC.

Debugger

Le projet utilisera le debugger GDB (sous la forme GDB server) qui a été porté pour communiquer avec le processeur cible au moyen de la sonde ST-Link.
GDB server n'ayant pas d'interface utilisateur, le debug se fera via un IDE (Integrated Development Environment).
N.B. contrairement à ce qui existe sur d'autres architectures (telles que X86), il n'est pas nécessaire d'utiliser des options de compilations différentes pour l'utilisation sous debugger et la production finale (release), ainsi les projets seront tous compilés sur une configuration "debug".

Bibliothèques

Le fabriquant du STM32 met à disposition pour chaque famille de microcontrôleur un package dit STM32Cube qui contient le code source en langage C de : Dans ce TP, on utilisera la bibliothèque LL de préférence (plutôt que HAL). Pour plus d'informations sur la bibliothèque LL : Dans les salles de TP du GEI, les bibliothèques pour la famille L4 sont installées sur le serveur commetud :
R:\LLGDB\CubeL4

IDE

Dans ce TP, nous travaillerons avec l'outil STM32CubeIDE 1.4.0. Cet IDE est basé sur le framework Eclipse. Il a été développé en Java pour les développeurs Java, ce qui implique des particularités qui peuvent selon les cas améliorer ou dégrader les conditions de travail hors Java. La principale qualité de cette approche est l'indépendance vis-à-vis du système d'exploitation (Linux, Windows, MacOS, etc..)

Les exemples du package STM32Cube sont prévus pour SW4STM32, cependant ils peuvent être importés dans TrueStudio ou STM32CubeIDE. Conseils d'utilisation de l'IDE : Eclipse : conseils d'utilisation.

Développement du programme de démonstration "Techniques Low Power" sur STM32L476

Objectif général du programme de démonstration

L'objectif du programme de démonstration est de pouvoir tester, à l'aide d'un programme unique, différentes fonctionnalités du microcontrôleur STM32L476 RG et représentatives de l'ensemble des microcontrôleurs ultra-low power permettant la réduction de la consommation énergétique. Le détail des expériences à réaliser est donné ici, les paragraphes ci-dessous suggèrent les étapes du travail à réaliser. Ne cherchez pas à développer d'un seul coup l'ensemble du programme.

Point de départ et étape préliminaire

On partira d'une copie du projet L476_blink, que vous sauvegarderez sous un autre nom.
Le programme est très simple : toutes les 1 s, le programme allume la LED verte (LED utilisateur) pendant 50 ms. L'exécution du programme est cadencée par le timer Systick. La durée d'allumage et d'extinction de la LED est gérée par des fonctions de délais, qui ne permettent aucune réduction de la consommation d'énergie puisqu'elle mobilise le CPU alors qu'il n'y a fondamentalement rien à effectuer.
Avant de développer le programme de démonstration, une étape préliminaire consistera à modifier le programme L476_blink de sorte à ce que le clignotement de la LED soit cadencé par l'interruption activée par le débordement du timer Systick. On configurera le timer pour qu'il déborde toutes les 10 ms. C'est un préliminaire indispensable à la conception du programme de démonstration, puisque cette approche de cadencement des opérations, liée au déclenchement d'interruptions, permettra d'activer le CPU uniquement lorsque des opérations effectives auront à être réalisées. Comment ? C'est ce qui sera testé dans les différentes expériences séquencées du programme de démonstration.
Vous appelerez ce nouveau projet "L476_blink_IT". Il vous servira de base pour le développement du programme de démonstration.

Etapes de développement du programme de démonstration

Le programme de démonstration devra suivre le programme d'expériences séquencées. Celui-ci permet de tester l'influence sur la consommation énergétique du microcontrôleur des différentes plages de tension, des modes basse consommation et des techniques de réveil. En vue d'avoir au final toutes les expériences dans un seul programme, deux variables globales seront utilisées : N.B. la variable expe sera réinitialisée à 1 lors d'une coupure prolongée d'alimentation, ou du dépassement du dernier numéro d'expérience.

Etapes de développement suggérées :

Evaluation

Une séance de test est prévue à partir du programme de démonstration développé par chaque étudiant, en présence de l'enseignant. Chaque binôme devra remplir et transmettre à l'enseignant le formulaire de résultat suivant :

Compléments d'information

STM32

Outils

  • Eclipse / STM32 Cube IDE : conseils d'utilisation

  •