Essai de la StromPi V3

Nous avons passé en revue les fonctions de la StromPi V3, et il est temps de passer à l'essai proprement dit. C'est là que les possesseurs d'un Raspberry Pi 3 auront une mauvaise surprise : la cohabitation de la StromPi V3 et du Bluetooth implique que nous devons modifier quelque chose. Pour la communication et la configuration, la StromPi V3 se sert de l'interface série utilisée normalement entre le Raspberry Pi et la puce Bluetooth. Cela n'apparaît qu'en consultant les instructions d'installation. Après modification de l'interface, nous pouvons utiliser la StromPi V3 et le Bluetooth, mais avec ce dernier, des limitations apparaissent. Pour Bluetooth et StromPi V3 nous pouvons adjoindre les lignes ci-dessous au fichier /boot/config.txt :
dtoverlay=pi3-miniuart-bt
core_freq=250
init_uart_clock=3000000

Après la configuration, la console série permet d'accéder à la StromPi et nous pouvons la configurer. En jetant un coup d'œil sur la page d'accueil, nous trouverons un micrologiciel en version bêta qui met à jour quelques fonctions utiles et remédie à quelques défauts de paramétrage. Il faut donc en passer par la mise à jour du micrologiciel.

Mise à jour du micrologiciel

Des instructions sont fournies pour cette mise à jour. Nous devrons utiliser l'outil stm32flash. Dans la configuration actuelle, nous utilisons l'UART du Raspberry Pi 3B+, la miniUART (une version allégée à laquelle quelques fonctions font défaut). Une fois la fonction adaptée, cette miniUART est utilisée pour le Bluetooth. Les fonctions suivantes manquent :
 
  • détection du caractère Break ;
  • détection des erreurs de trame ;
  • bit de parité ;
  • interruption de dépassement de temps en réception (Receiver Timeout Interrupt) ;
  • signaux DCD, DSR, DTR et RI.

La plupart de ces lacunes ne créent aucune difficulté, mais l'absence de bits de parité rend l'utilisation de l'UART indispensable. L'outil stm32flash communique avec le STM32 de la StromPi en 9600 bauds, 8 bits de données, 1 bit de stop et parité paire (96008E1). Afin que cela fonctionne, nous devons ajouter la modification suivante dans le fichier /boot/confi.txt :  
dtoverlay=pi3-miniuart-bt

Si la miniUART est utilisée pour le Bluetooth, la broche GPIO du connecteur est alors utilisable pour l'UART. Nous devons aussi installer le progiciel de gestion stm32flash et télécharger le micrologiciel à jour. La mise à jour s'effectue alors selon les instructions. Pour le flashage, il faut saisir
stm32flash /dev/serial0 -w RB-StromPi3_Revxxxxxx.binary -b 9600
en mode terminal. Jusqu'ici, tout est très simple. Quel problème pourrions-nous rencontrer? Eh bien voilà : si par mégarde, par exemple pendant la tab completion, nous utilisons un autre fichier que le fichier binaire prévu, il sera écrit dans la puce sans vérification, donc potentiellement en écrasant des données.

Et cela s'est effectivement produit dans notre laboratoire. Lorsque nous nous en sommes aperçu, il était trop tard, le Pi et la StromPi V3 ont redémarré, et, en raison du contenu erroné, toutes les alarmes de sécurité étaient activées. La remise à jour du programme était impossible, y compris via le débogueur. Il faut donc être prudent, il n'y a pas de garde-fou ni de filet de sécurité. Si un fichier erroné est écrit dans la puce, le matériel peut être totalement inutilisable. Même le gestionnaire de chargement en ROM ne permet pas de redresser la situation. Voilà une affirmation dont nous aurions souhaité nous passer : « Pour cette présentation, quelques StromPi V3 furent endommagées ». Elle est malheureusement vraie. Pour poursuivre, nous avons donc retiré la seconde StromPi V3 de son emballage. Nous avons mis de côté la platine au micrologiciel erroné pour remplacer ultérieurement le STM32.

Mise en service et configuration

Après avoir effectué la mise à jour du microprogramme bêta, nous avons entamé la configuration. Il faut mettre le cavalier « CAP » sur « ON », pour amortir la commutation entre les entrées d'alimentation par une capacité de 1 F. Sans le condensateur, la StromPi V3 ne peut pas fournir au Pi une puissance suffisante sur la durée de commutation. Un terminal série permet d'effectuer la configuration de la StromPi V3. Dans notre cas, nous alimentons le Pi en 12 V via l'entrée à large gamme et utilisons l'accu LiFePo4 comme réserve.

Pour la configuration, suivant les instructions, nous mettons la StromPi V3 en mode 4 et initialisons la temporisation d'arrêt sur 10 minutes (600 secondes). Si l'alimentation primaire revenait dans les dix minutes, la temporisation serait interrompue et la Pi repartirait. Ainsi, selon la notice, nous avons indiqué « set-timer 600 » et la réponse fut « The Shutdown-Timer has been set to 88 seconds » (la temporisation d'arrêt a été fixée à 88 secondes). Nous avons essayé ensuite « set-timer 255 ». Réponse : « The Shutdown-Timer has been set to 255 seconds ». Enfin, « set-timer 256 », réponse : « The Shutdown-Timer has been set to 0 seconds ». Il semble donc que la limite soit de 255 et qu'un nombre supérieur soit interprété modulo 256. Nous avons signalé le bogue au service d'assistance par courriel (nous aurions aussi pu le faire via le forum d'assistance, mais comme aucune des questions n'y apparaissait, nous avons préféré écrire).

Mise à jour du micrologiciel et assistance

La réponse concernant le bogue nous est parvenue rapidement ainsi que quelques autres concernant le texte source et le brochage du STM32 intégré. Nous avons été agréablement surpris. Pour certains produits, les fabricants restent très silencieux sur le micrologiciel. Ici, c'est tout le contraire. Entre-temps, le texte source du micrologiciel complet a été publié sur GitHub ainsi que le schéma autour du STM32, avec le brochage complet ainsi que les fonctions matérielles. Ainsi, chacun a les moyens d'adapter le programme à ses besoins et il peut tenter de le déboguer lui-même. Une telle démarche est beaucoup trop rare pour les produits intégrant un logiciel, et elle est tout à l'honneur des développeurs de cette entreprise. Parallèlement, le bogue signalé a été corrigé : avec chaque nouvelle version du micrologiciel, les suggestions des clients sont prises en compte et, si possible, dûment intégrées. Il reste à espérer que le micrologiciel et le produit continuent d'être pris en charge de la sorte.