Page 1 of 1

Comprendre les fichiers exécutés au boot de Micropython

Posted: Wed 21 Apr 2021 08:55
by sensor56
D'après ce que j'en ai compris et testé, sur la plupart des plateformes, au boot de la carte sont exécutés automatiquement :

* 1. boot.py
* puis 2. main.py

J'ai noté que ces fichiers sont appelés AVANT l'affichage de l'invite Micropython dans l'interpréteur. On ne voit par leur sorties print() éventuelles dans l'interpréteur, du moins celles qui ne sont pas répétées après l'apparition de l'invite >>>

Pour voir les sorties de boot.py et main.py dans l'interpréteur, il faut faire un machine reset :

Code: Select all

>>> import machine
>>> machine.reset()
Par contre la question qui se pose est celle de la différence entre boot.py et main.py : d'après ce que j'en ai compris, le boot.py est exécuté au boot principal mais aussi lors des réveils de la carte mise en sommeil. A la différence du main.py qui lui reprend son exécution là où il était dans le cas d'un réveil de la carte après un sleep.

Est-ce la bonne interprétation ? quelqu'un a-t-il une précision à ajouter ?

Re: Comprendre les fichiers exécutés au boot de Micropython

Posted: Thu 22 Apr 2021 20:13
by Dominique

Code: Select all

boot.py
sert à faire le setup matériel (par exemple rétablir les connexions Ethernet/Wifi/Ble/Modem ...).
Il doit être aussi court que possible et ne rend la main à la MicroPython que lorsque son exécution est terminée.
Donc pas d'interaction REPL avant la fin de l'exécution de boot.py . Par contre les messages

Code: Select all

print()
sont affichés sur la sortie.

Ensuite, MicroPython passe naturellement le relais à

Code: Select all

main.py
(ou à la session REPL si main.py est vide ou termine son exécution).

Bonnes pratiques:
  • JAMAIS de boucles infinie dans Boot.py... cela peu bloquer le démarrage du MicroControleur (seul un reflash de MicroPython permet de récupérer la main sur la plateforme).
  • Utiliser des timeouts dans le code de boot.py (pour donner une chance d'arriver à main.py ou REPL).
  • Utiliser une broche en input avec un switch RUN/STOP pour activer/désactiver l'execution du contenu de boot.py (et faire pareil pour main.py). Cela permet de récupérer la main sur la plateforme en changeant l'état du switch en position STOP puis en pressant le bouton Reset pour la redémarrer.

Re: Comprendre les fichiers exécutés au boot de Micropython

Posted: Fri 23 Apr 2021 06:53
by sensor56
OK. Tu confirmes la nuance de comportement sur les réveils entre le boot.py et le main.py ?

Re: Comprendre les fichiers exécutés au boot de Micropython

Posted: Fri 23 Apr 2021 20:55
by Dominique
Oui, Boot.py est exécuté à chaque redémarrage / réveil.
Il est possible de détecter le type de réveil/exécution... mais je ne connais plus le nom du module / propriété utilisée par coeur.

Dom.