Qtブログ(日本語)

Qt for MCUs 2.3 をリリース

作成者: Qt Group 日本オフィス|Dec 1, 2022 3:00:00 AM

Qt for MCUs の最初のリリース以来、皆様からのフィードバックやご要望が Qt for MCUs の開発の原動力となってきました。本日、要望の多かった機能や改善点を盛り込んだバージョン 2.3 をリリースしました。この新しいバージョンでは、Qt Quick UltraliteLoader QML タイプを追加し、アプリケーションの全体的なメモリ要件を大幅に削減するパーシャルフレームバッファのサポート、Windows で MinGW を使用するアプリケーションのビルドをサポートし、その他にも多くの機能を追加しています。

このバージョンに含まれるすべての変更点リストは、オンラインドキュメンテーションの変更履歴に記載されています。このリリースの内容の詳細については、こちらを参照ください。

QML Loader

デフォルトでは、Qt Quick Ultralite UI で宣言された全ての QML コンポーネントは、RepeaterListView のような動的にデリゲートを割り当てることができるいくつかの場合を除き、メモリ内に静的に割り当てられます。静的なメモリ割り当てには、実行時のパフォーマンスが良い、メモリ関連のバグが発生しにくいなどの利点がありますが、割り当てられたデータがアプリケーションのライフタイム中に必ずしも必要でない場合があり、メモリの浪費を引き起こすという欠点もあります。GUIを開発する場合、画面数が多くても一度に1つしか表示されない場合は、特に静的なコンポーネント割り当てが非効率になる可能性があります。アプリケーションの画面数が多ければ多いほど、メモリの無駄が増えることになります。

Qt Quick UltraliteLoader QML タイプが追加され、QML コンポーネントの割り当てを完全に制御できるようになり、必要な時までその作成を遅らせることができるようになりました。これにより、アプリケーションの全体的な RAM フットプリントを削減し場合によってはデバイスの起動時間を短縮することができます。

この新しいAPIは、通常のQtの対応する部分をそのままモデルにしており、互換性がありますが、いくつかの制限がありますので、こちらの資料を参照ください。また馴染みのない方は新しいQt for MCUsのサンプルでも学習することができます。

パーシャルフレームバッファ

次は、アプリケーションの全体的な必要メモリを大幅に削減することができる新機能を紹介します。

フレームバッファはどんなグラフィックアプリケーションにも必要で、それはディスプレイに転送されるすべてのピクセルを含む RAM 内の予約領域です。グラフィックスエンジンによって行われた最後のレンダリングの完全なイメージを常に保持しています。Qt Quick Ultraliteは通常シングルまたはダブルのフレームバッファを使用し、UIが更新されるたびに実際に変化するピクセルだけをそこにレンダリングします。すべての描画操作が完了すると、フルフレームバッファをディスプレイに転送する必要があります。これらのバッファは、ディスプレイ上のピクセルと同じ大きさである必要があり、一般的なマイクロコントローラベースのグラフィックアプリケーションのRAM要件のほとんどに相当することがよくあります。例えば、解像度480x272の16ビットディスプレイの場合、シングルバッファには260KB、ダブルバッファには520KBのRAMが必要になります。

アプリケーションの残りの部分のためにメモリを解放する、または単にフルフレームバッファを保持するのに十分なRAMがない場合、これらのRAM要件を減らすために、1つまたは複数の小さな部分フレームバッファに基づいて、バッチで表示を更新する新機能が追加されました。 

これにより、シングルバッファやダブルバッファのグラフィックスと比較して、メモリ使用量を大幅に削減することができます。例えば、480x272のディスプレイの場合、フレームバッファに使用するメモリはわずか1Kバイトで済みます。ただし、これには制限や制約があります。パーシャルフレームバッファを使用するためには、DSI、SPI、パラレル接続などのメモリを内蔵したディスプレイを使用する必要があります。また、アニメーションがディスプレイの大部分を占める場合、テアリング現象が発生する可能性があります。

リファレンス・プラットフォームのいくつかは、現在この機能をサポートしており、プラットフォーム・ソースで有効にすることができます。このトピックをさらに深く掘り下げ、あなた自身のプラットフォームポートにどのように実装できるかを学ぶには、こちらのページにアクセスしてください。 

その他にも!

これらは Qt for MCUs 2.3 の主なハイライトに過ぎません。このリリースでは、Windows 上でアプリケーションをビルドするための MinGW のサポート、いくつかのメモリフットプリントの削減スタンドアロンコード生成ツールの改善最近リリースされたバージョン 9.0 の Qt Creator プラグインの改善など、さらに多くの機能および改善が含まれています。 機能一覧はリリースのチェンジログをご覧ください。

今後の展開

次の機能アップデートは、2023 年 3 月にバージョン 2.4 を予定しています。 このリリースのハイライトは、複雑な 2D および 3D アニメーションの画像シーケンスを再生する新機能、あらゆるマイクロコントローラーで Qt Quick Shapes を使用できるソフトウェアベクターグラフィックレンダラーフォントデータの圧縮これまで以上に軽量な Qt Quick Ultralite エンジンが含まれる予定です。

Qt for MCUs 2.3 を今すぐ入手!

既存の Qt for MCUs 開発者の方は、Qt for MCUs のインストールディレクトリのルートにある Qt Maintenance Tool から Qt for MCUs 2.3 をダウンロードすることができます。初めてご利用になる方は、こちらをクリックしてください。また、コメント欄やこちらのフォームからご意見・ご要望をお聞かせください。