v3.8.0

v3.8.0 обновляет ядро до MicroPython 1.13, замораживает большой набор вспомогательных библиотек в прошивку, добавляет поддержку Portenta Ethernet (с примерами работы с сетью), поддержку HDMI CEC в модуль lcd, настройку скорости передачи и точки выборки для pyb.CAN, а также волну исправлений для низкого энергопотребления H7 и HAL. Модули time / utime были объединены, а DMA для F4 pyb.DAC был отключён — ознакомьтесь с критическими изменениями ниже.

Основные моменты

  • MicroPython 1.13 — встроенное ядро MicroPython было обновлено.

  • Замороженные библиотекиuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 и другие теперь заморожены в прошивку.

  • Portenta Ethernet — поддержка Ethernet плюс примеры HTTP / SSL / peer-to-peer.

  • HDMI CEC — новый API CEC в модуле lcd (Pure Thermal).

  • pyb.CAN — тайминг битов из ключевых слов baudrate / sampling_point.

  • Критическое: модули time / utime были объединены, а функции DMA для F4 pyb.DAC были отключены — см. критические изменения.

Новые возможности

  • Замороженный манифестuasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612 и vl53l1x теперь заморожены в прошивку на OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.

  • Portenta Ethernet — включена поддержка Ethernet с примерами http_client, http_client_ssl и peer_to_peer.

  • HDMI CEC — добавлен API HDMI CEC в модуль lcd (Pure Thermal).

  • pyb.CAN — конструктор / init() теперь вычисляет тайминг битов из ключевых слов baudrate и sampling_point (форма с ручным предделителем всё ещё работает); примеры CAN обновлены соответствующим образом.

Прочие изменения и улучшения

  • Баннер REPL теперь включает строку версии HAL; пример Audio FFT был обновлён под более новый API ulab.

Исправления ошибок

Камера и датчики:

  • Исправлена тактовая частота датчика OV2640 и масштабирование частоты PCLK OV5640 на устройствах STM32H7 rev Y; восстановление шины FIR I2C из состояния потери арбитража путём подачи импульсов на SCL и повторная попытка инициализации AMG8833 при программном сбросе F7.

Питание и таймеры:

  • Исправлен вход в режим низкого энергопотребления H7 (stop/standby) — масштабирование напряжения для rev V, повторное включение генератора/PLL при пробуждении, низкое энергопотребление SDRAM с сохранением DRAM, отключение Systick при входе в stop и включение DBGMCU только в отладочных сборках. Исправлено состояние HAL machine.Timer после обновления HAL H7 и отменено изменение приоритета IRQ чтения/записи SD.

Дисплей и подключение:

  • Исправлена конфигурация размера данных 8/16 бит для F4 SPI LCD (неправильное определение MCU_SERIES), при ошибке инициализации шины SPI WINC1500 возвращается ошибка вместо тихого продолжения, и использован статический дескриптор SPI во избежание конфликтов шины SPI WINC1500. Исправлена ошибка сборки мусора (GC-collect) в MicroPython.

Система:

  • unittests.py больше не помечает набор тестов как проваленный, когда тест отключён или недоступен; удалены неработающие примеры camera_lcd для шилда Thermopile.

Аппаратное обеспечение и поддержка плат

  • OpenMV Pure Thermal — плата обновлена и переименована (OPENMVPURETHERMALOPENMVPT), с HDMI CEC.

  • OpenMV 2 — включён драйвер камеры OV2640.

  • Arduino Portenta H7 — поддержка Ethernet.

Критические изменения API

Видимые пользователю изменения API между v3.7.0 и v3.8.0. Область: C-модули Python в modules/ и библиотеки Python в scripts/libraries/.

Каждое изменение помечено по степени влияния:

  • minor — узкий API; затрагивает только скрипты, которые его использовали.

  • behavior — тот же API, другие результаты; перепроверьте настроенные скрипты.

Изменения сгруппированы по влиянию в этом порядке. Если вы просто хотите портировать свой код, перейдите к контрольному списку миграции в конце. Каждый хеш коммита ссылается на свой diff на GitHub.

Модули time / utime объединены (minor)

Модули time и utime были объединены, а класс clock OpenMV перемещён в utime. Все встроенные примеры были обновлены на import utime / clock = utime.clock(). Скрипты, которые полагались на import time для класса clock, должны вместо этого импортировать utime.

Коммиты: 20587f308

Функции DMA для F4 pyb.DAC отключены (minor)

На платах на базе F4 функции pyb.DAC, требующие DMA, были отключены, поскольку куча F4 находится в CCM, недоступной для DMA. Скрипты F4, которые использовали запись в DMA-буфер DAC, должны избегать этих функций.

Коммиты: d61f236f2

MicroPython обновлён до 1.13 (behavior)

Встроенное ядро MicroPython было обновлено до 1.13. Поведение стандартной библиотеки и языка следует за вышестоящим MicroPython 1.13; перепроверьте скрипты, зависящие от поведения micropython / стандартных модулей конкретной версии.

Коммиты: fb0a5e26d

Поддерживаемые частоты cpufreq зависят от ревизии (behavior)

Добавлено больше частот CPU, и они стали учитывать ревизию кремния: cpufreq.get_supported_frequencies() теперь возвращает зависящий от ревизии список на H7 (50/100/200/400 МГц на rev X/Y, 60/120/240/480 МГц на rev V). Скрипты, которые жёстко задавали частоту из старого фиксированного списка, должны запрашивать поддерживаемый список во время выполнения.

Коммиты: 825dd0742

Контрольный список миграции

Для чистого перехода на v3.8.0 типичная работа такова:

  1. Замените import time на import utime там, где вы используете класс clock (объединение time/utime).

  2. На платах F4 прекратите использовать функции DMA-буфера pyb.DAC (изменение F4 DAC).

  3. Перепроверьте скрипты, зависящие от поведения MicroPython конкретной версии, относительно 1.13 (обновление MicroPython) и запрашивайте cpufreq.get_supported_frequencies() во время выполнения вместо жёсткого задания (изменение cpufreq).

Все остальные скрипты работают без изменений.