v3.8.0¶
La v3.8.0 met à jour le cœur vers MicroPython 1.13, fige un large ensemble de bibliothèques utilitaires dans le micrologiciel, ajoute la prise en charge de Portenta Ethernet (avec des exemples réseau), du HDMI CEC au module lcd, la configuration du débit en bauds et du point d’échantillonnage de pyb.CAN, ainsi qu’une vague de corrections basse consommation et HAL pour le H7. Les modules time / utime ont été fusionnés et la DMA de pyb.DAC sur F4 a été désactivée — consultez les changements incompatibles ci-dessous.
Points forts¶
MicroPython 1.13 — le cœur MicroPython intégré a été mis à jour.
Bibliothèques figées —
uasyncio,mqtt,rpc,rtsp,modbus,bno055,pid,ssd1306et bien d’autres sont désormais figées dans le micrologiciel.Portenta Ethernet — prise en charge d’Ethernet avec des exemples HTTP / SSL / pair-à-pair.
HDMI CEC — nouvelle API CEC dans le module
lcd(Pure Thermal).pyb.CAN— synchronisation des bits à partir des mots-clésbaudrate/sampling_point.Incompatible : les modules
time/utimeont été fusionnés et les fonctions DMA depyb.DACsur F4 ont été désactivées — voir les changements incompatibles.
Nouvelles fonctionnalités¶
Manifeste figé —
uasyncio,mqtt,rpc,rtsp,modbus,bno055,mutex,pid,ssd1306,tb6612etvl53l1xsont désormais figés dans le micrologiciel sur OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.Portenta Ethernet — Ethernet activé avec les exemples
http_client,http_client_ssletpeer_to_peer.HDMI CEC — ajout d’une API HDMI CEC au module
lcd(Pure Thermal).pyb.CAN— le constructeur /init()dérive désormais la synchronisation des bits à partir des mots-clésbaudrateetsampling_point(la forme manuelle avec prédiviseur fonctionne toujours) ; les exemples CAN ont été mis à jour en conséquence.
Autres changements et améliorations¶
La bannière du REPL inclut désormais la chaîne de version du HAL ; l’exemple Audio FFT a été mis à jour pour la nouvelle API
ulab.
Corrections de bogues¶
Caméra et capteurs :
Correction de l’horloge du capteur OV2640 et de la mise à l’échelle de la fréquence PCLK de l’OV5640 sur les appareils STM32H7 rev Y ; récupération du bus I2C du FIR depuis un état de perte d’arbitrage en générant des impulsions sur SCL, et nouvelle tentative d’initialisation de l’AMG8833 lors d’une réinitialisation logicielle sur F7.
Alimentation et minuteurs :
Correction de l’entrée en mode basse consommation (stop/standby) du H7 — mise à l’échelle de la tension pour la rev V, réactivation de l’oscillateur/PLL au réveil, basse consommation de la SDRAM avec rétention de la DRAM, désactivation du Systick à l’entrée en mode stop, et activation du DBGMCU uniquement dans les versions de débogage. Correction de l’état du HAL de
machine.Timeraprès la mise à jour du HAL du H7 et annulation du changement de priorité d’IRQ pour la lecture/écriture SD.
Affichage et connectivité :
Correction de la configuration de la taille de données 8/16 bits du LCD SPI sur F4 (définition
MCU_SERIESerronée), retour d’une erreur en cas d’échec d’initialisation du bus SPI du WINC1500 au lieu de continuer silencieusement, et utilisation d’un descripteur SPI statique pour éviter les conflits de bus SPI du WINC1500. Correction d’un bogue de ramasse-miettes de MicroPython.
Système :
unittests.pyne marque plus la suite comme échouée lorsqu’un test est désactivé ou indisponible ; suppression des exemplescamera_lcddéfectueux du shield Thermopile.
Matériel et prise en charge des cartes¶
OpenMV Pure Thermal — carte mise à jour et renommée (
OPENMVPURETHERMAL→OPENMVPT), avec HDMI CEC.OpenMV 2 — pilote de caméra OV2640 activé.
Arduino Portenta H7 — prise en charge d’Ethernet.
Changements d’API incompatibles¶
Ruptures d’API visibles par l’utilisateur entre la v3.7.0 et la v3.8.0. Portée : modules C Python dans modules/ et bibliothèques Python dans scripts/libraries/.
Chaque changement est étiqueté selon son impact :
mineur — API restreinte ; n’affecte que les scripts qui l’utilisaient.
comportement — même API, résultats différents ; revérifiez les scripts calibrés.
Les changements sont regroupés par impact dans cet ordre. Si vous voulez simplement porter votre code, passez à la liste de contrôle de migration à la fin. Chaque hachage de commit renvoie à son diff sur GitHub.
Modules time / utime fusionnés (mineur)¶
Les modules time et utime ont été fusionnés et la classe clock d’OpenMV a été déplacée vers utime. Tous les exemples intégrés ont été mis à jour vers import utime / clock = utime.clock(). Les scripts qui s’appuyaient sur import time pour la classe clock doivent importer utime à la place.
Commits : 20587f308
Fonctions DMA de pyb.DAC sur F4 désactivées (mineur)¶
Sur les cartes basées sur le F4, les fonctions de pyb.DAC qui nécessitent la DMA ont été désactivées car le tas du F4 réside dans la CCM, qui n’est pas accessible par la DMA. Les scripts F4 qui utilisaient les écritures de tampon DMA du DAC doivent éviter ces fonctions.
Commits : d61f236f2
MicroPython mis à jour vers la 1.13 (comportement)¶
Le cœur MicroPython intégré a été mis à jour vers la 1.13. Le comportement de la bibliothèque standard et du langage suit MicroPython 1.13 en amont ; revérifiez les scripts qui dépendent d’un comportement micropython / des modules standard spécifique à une version.
Commits : fb0a5e26d
Les fréquences prises en charge par cpufreq dépendent de la révision (comportement)¶
D’autres fréquences CPU ont été ajoutées et rendues conscientes de la révision du silicium : cpufreq.get_supported_frequencies() renvoie désormais une liste dépendante de la révision sur le H7 (50/100/200/400 MHz sur les rev X/Y, 60/120/240/480 MHz sur la rev V). Les scripts qui codaient en dur une fréquence à partir de l’ancienne liste fixe doivent interroger la liste prise en charge à l’exécution.
Commits : 825dd0742
Liste de contrôle de migration¶
Pour un portage propre vers la v3.8.0, le travail habituel est le suivant :
Remplacez
import timeparimport utimelà où vous utilisez la classeclock(la fusion time/utime).Sur les cartes F4, cessez d’utiliser les fonctions de tampon DMA de
pyb.DAC(le changement du DAC F4).Revalidez les scripts qui dépendent d’un comportement MicroPython spécifique à une version par rapport à la 1.13 (la montée de version de MicroPython) et interrogez
cpufreq.get_supported_frequencies()à l’exécution au lieu de coder en dur (le changement de cpufreq).
Tous les autres scripts fonctionnent sans modification.