Bonjour,
L'inscription sur ce forum et les premiers messages sont modérés par un Administrateur.
Ce n'est pas très convivial mais malheureusement nécessaire suite au spam intensif de nos amis russes.
Cordialement,
Dominique

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

Le langage MicroPython, l'API machine (I2C, SPI, UART, Pin, etc)
Forum rules
Vous aimez MicroPython? Nous aussi! Ces forums sont destinés aux amoureux de Python sur MicroContrôleur.
Le support se fait sur base volontaire et uniquement pour des produits officiels (pas de copie SVP).
Le forum de MicroPython.org sera une excellente référence documentaire (en anglais).

Merci de suivre les recommandations suivantes.
Pensez à:
  • Titre claire: permettant d'identifier le produit et le problème
  • Contenu complet: schema, message d'erreur, etc (tout ce qui permet d'aider à distance).
  • Fichier joint: Max 300 Ko
  • Courtoisie et précision
Post Reply
sensor56
Posts: 43
Joined: Thu 1 Apr 2021 07:14

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

Post 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 ?
User avatar
Dominique
Administrateur du site
Posts: 249
Joined: Sun 17 May 2020 22:43

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

Post 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.
Dominique, MC Hobby.
sensor56
Posts: 43
Joined: Thu 1 Apr 2021 07:14

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

Post by sensor56 »

OK. Tu confirmes la nuance de comportement sur les réveils entre le boot.py et le main.py ?
User avatar
Dominique
Administrateur du site
Posts: 249
Joined: Sun 17 May 2020 22:43

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

Post 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.
Dominique, MC Hobby.
Post Reply