v3.8.0

A v3.8.0 atualiza o núcleo para o MicroPython 1.13, congela um grande conjunto de bibliotecas auxiliares no firmware, adiciona Portenta Ethernet (com exemplos de rede), suporte a HDMI CEC no módulo lcd, configuração de baudrate/ponto de amostragem da pyb.CAN e uma série de correções de baixo consumo do H7 e da HAL. Os módulos time / utime foram unificados e o DMA do pyb.DAC no F4 foi desabilitado — leia as mudanças incompatíveis abaixo.

Destaques

  • MicroPython 1.13 — o núcleo do MicroPython incluído foi atualizado.

  • Bibliotecas congeladasuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 e outras agora estão congeladas no firmware.

  • Portenta Ethernet — suporte a Ethernet além de exemplos de HTTP / SSL / ponto a ponto.

  • HDMI CEC — nova API CEC no módulo lcd (Pure Thermal).

  • pyb.CAN — temporização de bits a partir das palavras-chave baudrate / sampling_point.

  • Incompatível: os módulos time / utime foram unificados e as funções de DMA do pyb.DAC no F4 foram desabilitadas — veja as mudanças incompatíveis.

Novos recursos

  • Manifesto congeladouasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612 e vl53l1x agora estão congelados no firmware no OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.

  • Portenta Ethernet — Ethernet habilitada com exemplos http_client, http_client_ssl e peer_to_peer.

  • HDMI CEC — adicionada uma API HDMI CEC ao módulo lcd (Pure Thermal).

  • pyb.CAN — o construtor / init() agora deriva a temporização de bits das palavras-chave baudrate e sampling_point (a forma manual de prescaler ainda funciona); os exemplos de CAN foram atualizados de acordo.

Outras mudanças e melhorias

  • O banner do REPL agora inclui a string de versão da HAL; o exemplo de FFT de áudio foi atualizado para a API mais recente do ulab.

Correções de bugs

Câmera e sensores:

  • Corrigido o clock do sensor OV2640 e o escalonamento de frequência do PCLK do OV5640 em dispositivos STM32H7 rev Y; recuperação do barramento I2C do FIR a partir de um estado de perda de arbitragem pulsando o SCL e nova tentativa de inicialização do AMG8833 em um soft-reset do F7.

Energia e timers:

  • Corrigida a entrada em baixo consumo (stop/standby) do H7 — escalonamento de tensão para a rev V, reativação do oscilador/PLL ao acordar, baixo consumo da SDRAM com retenção da DRAM, desativação do Systick na entrada em stop e ativação do DBGMCU apenas em builds de depuração. Corrigido o estado da HAL do machine.Timer após a atualização da HAL do H7 e revertida a mudança de prioridade de IRQ de leitura/escrita do SD.

Display e conectividade:

  • Corrigida a configuração de tamanho de dados de 8/16 bits do LCD SPI do F4 (define MCU_SERIES incorreto), passou a retornar erro em falha de inicialização do barramento SPI do WINC1500 em vez de continuar silenciosamente e usou um handle SPI estático para evitar conflitos no barramento SPI do WINC1500. Corrigido um bug de coleta de lixo (GC) do MicroPython.

Sistema:

  • O unittests.py não marca mais a suíte como falha quando um teste é desabilitado ou está indisponível; removidos os exemplos camera_lcd quebrados do shield Thermopile.

Hardware e suporte a placas

  • OpenMV Pure Thermal — placa atualizada e renomeada (OPENMVPURETHERMALOPENMVPT), com HDMI CEC.

  • OpenMV 2 — driver da câmera OV2640 habilitado.

  • Arduino Portenta H7 — suporte a Ethernet.

Mudanças incompatíveis na API

Quebras de API visíveis ao usuário entre a v3.7.0 e a v3.8.0. Escopo: módulos C do Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada mudança é marcada com seu impacto:

  • minor — API restrita; afeta apenas scripts que a usaram.

  • behavior — mesma API, resultados diferentes; reavalie scripts ajustados.

As mudanças são agrupadas por impacto nessa ordem. Se você só quer portar seu código, vá direto para o checklist de migração no final. Cada hash de commit possui um link para o seu diff no GitHub.

Módulos time / utime unificados (minor)

Os módulos time e utime foram unificados e a classe clock do OpenMV foi movida para utime. Todos os exemplos incluídos foram atualizados para import utime / clock = utime.clock(). Scripts que dependiam de import time para a classe clock devem importar utime em vez disso.

Commits: 20587f308

Funções de DMA do pyb.DAC no F4 desabilitadas (minor)

Em placas baseadas no F4, as funções do pyb.DAC que exigem DMA foram desabilitadas porque o heap do F4 reside na CCM, que não é acessível por DMA. Scripts do F4 que usavam escritas em buffer de DMA do DAC devem evitar essas funções.

Commits: d61f236f2

MicroPython atualizado para 1.13 (behavior)

O núcleo do MicroPython incluído foi atualizado para 1.13. O comportamento da biblioteca padrão e da linguagem segue o MicroPython 1.13 upstream; reavalie scripts que dependem de comportamento específico de versão do micropython / módulos padrão.

Commits: fb0a5e26d

As frequências suportadas pelo cpufreq dependem da revisão (behavior)

Mais frequências de CPU foram adicionadas e tornadas cientes da revisão de silício: cpufreq.get_supported_frequencies() agora retorna uma lista dependente da revisão no H7 (50/100/200/400 MHz nas rev X/Y, 60/120/240/480 MHz na rev V). Scripts que fixaram uma frequência da antiga lista fixa devem consultar a lista suportada em tempo de execução.

Commits: 825dd0742

Checklist de migração

Para um port limpo para a v3.8.0, o trabalho típico é:

  1. Mude import time para import utime onde você usa a classe clock (a unificação time/utime).

  2. Em placas F4, pare de usar as funções de buffer de DMA do pyb.DAC (a mudança do DAC do F4).

  3. Revalide scripts que dependem de comportamento específico de versão do MicroPython contra a 1.13 (a atualização do MicroPython) e consulte cpufreq.get_supported_frequencies() em tempo de execução em vez de fixar valores (a mudança do cpufreq).

Todos os outros scripts funcionam sem alterações.