v3.8.0¶
v3.8.0 ではコアを MicroPython 1.13 に更新し、多数のヘルパーライブラリをファームウェアにフリーズして組み込み、Portenta Ethernet(ネットワーク関連の例を含む)、lcd モジュールへの HDMI CEC サポート、pyb.CAN のボーレート/サンプリングポイント設定を追加し、さらに H7 の低消費電力および HAL に関する多数の修正を行いました。time / utime モジュールは統合され、F4 の pyb.DAC DMA は無効化されました。以下の破壊的変更をお読みください。
ハイライト¶
MicroPython 1.13 — 同梱の MicroPython コアを更新しました。
フリーズされたライブラリ —
uasyncio、mqtt、rpc、rtsp、modbus、bno055、pid、ssd1306などがファームウェアにフリーズされました。Portenta Ethernet — Ethernet サポートに加え、HTTP / SSL / ピアツーピアの例を追加しました。
HDMI CEC —
lcdモジュールに新しい CEC API を追加しました(Pure Thermal)。pyb.CAN—baudrate/sampling_pointキーワードからビットタイミングを設定できます。破壊的変更:
time/utimeモジュールが統合され、F4 のpyb.DACDMA 関数が無効化されました。破壊的変更を参照してください。
新機能¶
フリーズマニフェスト — OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta において、
uasyncio、mqtt、rpc、rtsp、modbus、bno055、mutex、pid、ssd1306、tb6612、vl53l1xがファームウェアにフリーズされました。Portenta Ethernet —
http_client、http_client_ssl、peer_to_peerの例とともに Ethernet を有効化しました。HDMI CEC —
lcdモジュールに HDMI CEC API を追加しました(Pure Thermal)。pyb.CAN— コンストラクタ/init()がbaudrateおよびsampling_pointキーワードからビットタイミングを導出するようになりました(従来の手動プリスケーラ形式も引き続き利用できます)。これに合わせて CAN の例も更新しました。
その他の変更と改善¶
REPL バナーに HAL バージョン文字列が含まれるようになりました。Audio FFT の例は新しい
ulabAPI に合わせて更新しました。
バグ修正¶
カメラとセンサー:
STM32H7 rev Y デバイスにおける OV2640 センサークロックと OV5640 PCLK 周波数スケーリングを修正し、SCL をパルス出力することで FIR I2C バスをアービトレーション喪失状態から復旧できるようにし、F7 のソフトリセット時に AMG8833 の初期化をリトライするようにしました。
電源とタイマー:
H7 の低消費電力(stop/standby)への移行を修正しました。rev V 向けの電圧スケーリング、ウェイク時のオシレータ/PLL の再有効化、DRAM 保持による SDRAM 低消費電力、stop 移行時の Systick 無効化、デバッグビルドでのみ DBGMCU を有効化する処理が含まれます。H7 HAL 更新後の
machine.Timerの HAL 状態を修正し、SD 読み書きの IRQ 優先度変更を元に戻しました。
ディスプレイと接続性:
F4 SPI LCD の 8/16 ビットデータサイズ設定(
MCU_SERIES定義の誤り)を修正し、WINC1500 の SPI バス初期化失敗時に黙って続行する代わりにエラーを返すようにし、WINC1500 の SPI バス競合を避けるため静的な SPI ハンドルを使用するようにしました。MicroPython の GC コレクトに関するバグも修正しました。
システム:
unittests.pyは、テストが無効化または利用不可の場合にスイートを失敗とマークしなくなりました。壊れた Thermopile シールド用のcamera_lcdの例を削除しました。
ハードウェアとボードのサポート¶
OpenMV Pure Thermal — ボードを更新し、名称を変更しました(
OPENMVPURETHERMAL→OPENMVPT)。HDMI CEC に対応しています。OpenMV 2 — OV2640 カメラドライバを有効化しました。
Arduino Portenta H7 — Ethernet サポート。
破壊的 API 変更¶
v3.7.0 から v3.8.0 までのユーザーに影響する API の破壊的変更です。対象範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。
各変更には影響度のタグが付いています:
minor — 狭い範囲の API。それを使用していたスクリプトにのみ影響します。
behavior — API は同じだが結果が異なる。調整済みのスクリプトを再確認してください。
変更はこの順で影響度ごとにグループ化されています。コードを移植したいだけであれば、末尾の 移行チェックリスト に進んでください。各コミットハッシュは GitHub 上の差分にリンクしています。
time / utime モジュールの統合 (minor)¶
time と utime モジュールが統合され、OpenMV の clock クラスが utime に移動しました。同梱のすべての例は import utime / clock = utime.clock() を使うように更新されました。clock クラスのために import time に依存していたスクリプトは、代わりに utime をインポートしてください。
コミット: 20587f308
F4 の pyb.DAC DMA 関数の無効化 (minor)¶
F4 ベースのボードでは、F4 のヒープが DMA でアクセスできない CCM 上にあるため、DMA を必要とする pyb.DAC 関数が無効化されました。DAC の DMA バッファ書き込みを使用していた F4 スクリプトは、それらの関数の使用を避ける必要があります。
コミット: d61f236f2
MicroPython を 1.13 に更新 (behavior)¶
同梱の MicroPython コアを 1.13 に更新しました。標準ライブラリおよび言語の挙動は上流の MicroPython 1.13 に準拠します。バージョン固有の micropython / 標準モジュールの挙動に依存するスクリプトを再確認してください。
コミット: fb0a5e26d
cpufreq のサポート周波数がリビジョン依存に (behavior)¶
より多くの CPU 周波数が追加され、シリコンリビジョンを認識するようになりました。cpufreq.get_supported_frequencies() は H7 でリビジョン依存のリストを返すようになりました(rev X/Y では 50/100/200/400 MHz、rev V では 60/120/240/480 MHz)。古い固定リストから周波数をハードコードしていたスクリプトは、実行時にサポートリストを照会してください。
コミット: 825dd0742
移行チェックリスト¶
v3.8.0 へきれいに移植するための一般的な作業は次のとおりです:
clockクラスを使用している箇所でimport timeをimport utimeに変更してください(time/utime の統合)。F4 ボードでは、
pyb.DACの DMA バッファ関数の使用をやめてください(F4 DAC の変更)。バージョン固有の MicroPython の挙動に依存するスクリプトを 1.13 に対して再検証し(MicroPython の更新)、ハードコードする代わりに実行時に
cpufreq.get_supported_frequencies()を照会してください(cpufreq の変更)。
その他のすべてのスクリプトは変更なしで動作します。