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 для F4pyb.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 — плата обновлена и переименована (
OPENMVPURETHERMAL→OPENMVPT), с 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 типичная работа такова:
Замените
import timeнаimport utimeтам, где вы используете классclock(объединение time/utime).На платах F4 прекратите использовать функции DMA-буфера
pyb.DAC(изменение F4 DAC).Перепроверьте скрипты, зависящие от поведения MicroPython конкретной версии, относительно 1.13 (обновление MicroPython) и запрашивайте
cpufreq.get_supported_frequencies()во время выполнения вместо жёсткого задания (изменение cpufreq).
Все остальные скрипты работают без изменений.