v4.2.2

v4.2.2 добавляет поддержку изображений PNG (декодирование/кодирование через lodepng), табличный загрузчик встроенных моделей, поддержку OV5640 для Portenta, обновление TensorFlow для Edge Impulse и ulab 4.0. Изменился API конфигурации RPC CAN — см. описание несовместимых изменений ниже.

Основные изменения

  • Поддержка PNGImage.to_png(), image.PNG и чтение/запись файлов PNG.

  • tf.load_builtin_model() — табличные встроенные модели, которые можно заменять или добавлять на этапе сборки.

  • Portenta H7 — поддержка камеры OV5640 (с автофокусом).

  • MicroPython/ulab — ulab обновлён до 4.0.0.

  • Несовместимое изменение: изменился API конфигурации RPC CAN — см. описание несовместимых изменений.

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

  • Формат изображений PNG — новый метод Image.to_png(), константа image.PNG / PIXFORMAT_PNG, загрузка/сохранение файлов PNG (чтение/запись .png) и вывод PNG в преобразованиях image.to() через встроенный кодек lodepng.

  • tf.load_builtin_model(path) — загружает встроенную в прошивку модель и возвращает кортеж (labels, net); встроенные модели теперь табличные, поэтому их можно заменять или добавлять на этапе сборки.

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

  • TensorFlow / Edge Impulse — встроенная библиотека вывода обновлена до Edge Impulse ei-V2.5.0, модель person_detection перенесена в таблицу встроенных моделей, а во все сборки Cortex-M0+/M4/M7/M55 добавлены недостающие операторы TensorFlow, благодаря чему запускается больше моделей Edge Impulse.

  • ulab обновлён до 4.0.0.

  • Открытие виртуального последовательного порта USB на скорости 1200 бод теперь вызывает сброс в загрузчик в стиле Arduino (touch reset).

  • Прошивка модуля WiFi WINC1500 обновлена до 19.7.6 (вместе со скриптом обновления), и теперь она сообщает фактическую версию хост-драйвера.

  • Порт RP2 выводит «MPY: soft reboot» и получил инициализацию/деинициализацию UART.

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

  • Исправлены размер сырого буфера кадра для Arduino Nano RP2040 Connect и Product ID USB для Arduino Nicla Vision (корректное перечисление USB).

Поддержка оборудования и плат

  • Arduino Portenta H7 — поддержка камеры OV5640 (с автофокусом); GC2145 на Portenta отключена.

  • Arduino Nano RP2040 Connect — конфигурация памяти и шаблоны чистой файловой системы.

  • WiFi Shield (WINC1500) — прошивка обновлена до 19.7.6.

Несовместимые изменения API

Заметные пользователю изменения API между v4.2.1 и v4.2.2. Область охвата: C-модули Python в modules/ и библиотеки Python в scripts/libraries/.

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

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

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

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

API конфигурации RPC CAN (minor)

В библиотеке rpc именованный аргумент CAN sampling_point в rpc_can_master / rpc_can_slave переименован в sample_point (для соответствия вышестоящему MicroPython), а вспомогательная функция ручной настройки битового тайминга CAN удалена — шина CAN теперь настраивается через CAN(..., baudrate=, sample_point=). Скрипты, передававшие sampling_point или полагавшиеся на старый расчёт битового тайминга, необходимо обновить.

Коммиты: b565eca58, 06d716986

image.format() и сжатые изображения (behavior)

С добавлением унифицированного пути обработки сжатых изображений для PNG функция image.format() теперь возвращает PIXFORMAT_INVALID для неизвестного формата, а индексация / итерация / печать сжатых изображений теперь охватывает как PNG, так и JPEG. Код, который анализировал прежнее возвращаемое значение для неизвестных форматов, следует перепроверить.

Коммит: f12a4659c

Чек-лист миграции

Для чистого перехода на v4.2.2: переименуйте RPC CAN sampling_pointsample_point и удалите любую ручную настройку битового тайминга CAN (изменение RPC CAN), а также перепроверьте любой код, анализировавший image.format() для неизвестных форматов (изменение format()).