Archive 07/10/2020.

3.3.4 Gestion de l’énergie, clarifications?

michel_billaud

Bonjour,
quelques soucis à comprendre la page 3.3.4. En essayant de comprendre pourquoi, quelques éléments ;

  • la notion de “mode bloqué” n’est pas définie
  • niveau != mode ?
  • confusions potentielles entre mode plus élevé et niveau le plus élevé (numériquement, par consommation ou par économie ?)

Mon interprétation :

  • au niveau de RIOT, 4 niveaux sont définis pour la consommation.
  • sur les microcontrôleurs il y a différents modes. ça ne correspond pas forcément aux 4 modes
  • le thread Idle doit mettre le microcontrôleur dans le mode le plus économique.
  • sachant que pour une application, on peut vouloir garder certains dispositifs en fonctionnement, ce qui exclut de passer systématiquement au mode 0.
  • on donne donc la possibilité au programmeur d’interdire (= bloquer ?) certains niveaux
  • en mode idle, on prend le mode la plus économique qui existe sur le mC, et qui ne soit pas bloqué.

Le blocage peut se faire

  • statiquement, par une valeur fixée à la compilation via une macro
  • dynamiquement, par programme (pm_block etc) avec possibilité de bloquer/débloquer provisoirement.

Après, c’est inventé dans ma tête, je me plante peut être dans les grandes largeurs :wink:

aabadie2

Bonjour,

En lisant votre poste, je pense que vous avez assez bien saisi le concept et la manière de bloquer/débloquer les différents niveaux de consommation.

Ensuite pour être un peu plus précis, RIOT définit effectivement 4 niveaux maximum de basse consommation mais tous ne sont pas forcément utilisés suivant les types de microcontrôleurs. Par exemple, sur STM32, seulement 2 sont utilisables

  • 0 : mode STANDBY, pas de rétention de RAM, seul le RTC et des interruptions GPIO (à vérifier cependant, j’ai un doute) peuvent réveiller le micro
  • 1 : mode STOP avec rétention de RAM. Suivant les familles de STM32, certains micro ont des modes STOP + ou - sophistiqués avec de la rétention partielle de RAM mais pas la peine de rentrer dans les détails. Dans le mode, on peut avoir plus de périphériques qui fonctionnent encore: LPTIM, LPUART et peut-être d’autres encore.

Alors que sur NXP kinetis, on n’a qu’un seul niveau et je ne connais pas assez pour vous dire lesquels de tête mais j’imagine qu’on a de la rétention de RAM (donc pas de reboot au reveil).

Et donc, les niveaux non utilisés sont juste ignorés ce qui fait que pour kinetis, il suffit de débloquer le niveau 0 pour avoir le niveau de conso le plus faible. Pour STM32, il faut débloquer le niveau 1 pour avoir le STOP et pour avoir le niveau standby, il faut débloquer 0 et 1.

J’espère que ça éclaircit un peu plus les choses pour vous.

Il y a déjà eu une question/remarque à ce sujet dans le forum. Le paragraphe mérite d’être amélioré pour être moins obscur. Ca sera pour la prochaine session :slight_smile: