Qt for MCUs 2.7 リリース
3月 14, 2024 by Qt Group 日本オフィス | Comments
Qt for MCUsの新しいバージョンがリリースされました。Qt Quick Ultraliteエンジンに新機能が追加され、新規マイクロコントローラー種類が追加され、リソースに制約のある組み込みシステム向けのGUIフレームワークがさまざまな改善がされました。
このバージョンのすべての変更点については、変更ログでご確認ください。このリリースのハイライトについては、続きをお読みください。
2D図形の利便性向上
新しいQML APIがQt Quick Ultraliteに追加されました。これは、標準Qtから適応され、直接コード互換性があり、アプリケーション内の2つの一般的なUI要素、円弧とグラデーションの実装を簡素化するためのものです。
ArcItem
Qt for MCUsアプリケーションで円弧を描画するには、Qt Quick UltraliteにはShapesモジュールからのPathArc QMLタイプがすでにあります。これはどんな楕円弧も柔軟かつ汎用的に実装する方法を提供しますが、開始と終了の2つの角度値間で円弧が必要な場合には便利さに欠けます。標準Qtの Qt Design Studio Components から適応された新しいArcItemタイプは、このニーズに対応し、ゲージや円形進捗インジケータなどのUIコンポーネントを迅速に実装する方法を提供します。
ご自分で試して使い方を確認するには、新しい studio_components のサンプルをご覧ください。
Gradient
このバージョンまでは、Qt for MCUsでグラデーションを追加する主なオプションは、グラデーションを画像として事前にレンダリングするか、カスタムのC++ベースの描画実装にPaintedItemを使用することでした。より便利で柔軟性のある解決策として、標準QtからGradientタイプをQt Quick Ultraliteに適応しました。これにより、任意の色のストップに基づいて、線形グラデーションでRectangle、Shapes、およびArcItemsを塗りつぶすことができます。
既存のshapesサンプルとwatchのデモは、この新しいタイプの使い方を示すために更新されました。
あらゆる形式のアセットの統合
カスタム画像形式のサポートに関して柔軟性を高めました。これまで、Qt Quick Ultraliteリソースコンパイラによる画像のプリプロセッサ処理をスキップするオプションがなかったため、必要に応じてデコードおよび再圧縮を行っていました。これにより、カスタム形式の画像(例:実行時にリモートサーバーからダウンロードされた画像)や特定のマイクロコントローラーでハードウェアアクセラレーションされる可能性のある一部の形式(例:JPEGデコード)のオンザフライデコードができなくなっていました。この制限を克服するために、新しいImageDecoder APIを追加して、カスタム画像形式と対応するデコーダーを登録できるようにしました。これにより、アプリケーションにカスタムデコーダーインターフェース(ハードウェアまたはソフトウェア)を含め、ハードウェアが提供する固有のデコード能力を活用するか、特定の画像形式を使用することができます。
新しい画像形式を統合するために必要な手順については、このガイドをご覧ください。
オンザフライJPEGデコード
新しいImageDecoder APIの実装例として、一部のSTM32ハードウェアプラットフォームで利用可能なハードウェアアクセラレーションされたJPEGデコーダーのサポートを追加しました。この実装では、JPEGデコーダーをカスタムフォーマットとして登録し、それに対するハードウェアデコードインターフェースを提供する方法を示しています。このアプローチをSTM32プラットフォームで使用することで、アセットの保存にかかる不揮発性ストレージを大幅に節約でき、ランタイムでの解凍時のパフォーマンスオーバーヘッドを回避できます。これは、フラッシュメモリに保存され、必要に応じてデコードされる多数のフレームで構成される複雑なアニメーション(例:起動アニメーション、ビデオ、またはGIFのようなアニメーション)に特に役立ちます。
サポートされるSTM32 F7およびH7プラットフォームで、Sprite_Animationサンプルを更新して、ハードウェア JPEGデコーダーを活用しました。
ディスプレイの向きに合わせてGUIを簡単に回転(技術プレビュー)
GUIコンテンツに静的な回転を簡単に適用するための新しいプロジェクトプロパティを追加しました。
この機能は、デバイスのディスプレイが自然な向きで操作されていない場合に大いに役立ちます。例えば、横向きのUI(800x480など)を縦向きのディスプレイパネル(480x800など)に表示する場合などです。これは、複数のディスプレイオプションのコストの考慮、組み立ての制約、その他の理由によって起こる可能性があります。このような場合、ディスプレイコントローラーが必要な回転を直接処理できない限り、ハードウェア構成に応じてGUIコンテンツを90度、180度、または270度回転する必要があります。
いくつかの解決策には、GUIにランタイム回転を適用することが含まれます。これは、ほとんどのマイクロコントローラーでアプリケーションのフレームレートを著しく低下させる可能性があります。または、レイアウトとアセットを組み込みの回転で設計することで実行時の負荷を回避できますが、非常に手間のかかるワークフローになります。今回の解決策は、QMLコードやGUIリソースに変更を加えることなく、プロジェクトのプロパティを1つ設定するだけというシンプルさと、実行時の負荷を回避する効率性を両立するソリューションとして設計しました。
この機能は、Qt for MCUs 2.7のテクノロジープレビューとしてリリースされ、Qt for MCUs 2.8 LTSで安定リリースにアップグレードされる予定です。次のバージョンではAPIが変更されることはありませんが、現在のバージョンにはまだいくつかの制限があり、すべての最適化が実装されていないため、このリリースでは回転を適用するとフレームレートやCPU使用率に悪影響が出る可能性があります。
この機能について詳しくは、ディスプレイ回転の設定ドキュメントページをご覧ください。
新たなターゲットが可能に
このリリースの一環として、新しいマイクロコントローラをお試しいただけます。
- Renesas RAファミリの新しいフラッグシップ・マイクロコントローラであるCortex M85ベースのRA8D1が、Tier-2 Tech Previewプラットフォームとして利用可能になりました。安定版は近日リリース予定です。
- 特にウェアラブル機器に適した超低消費電力マイコンAmbiq Apollo4 Plus(ディスプレイシールド付き)が、Tier-3プラットフォームとして利用可能になりました。
- Infineon TRAVEO™ T2G CYT4EN は、最大2880 x 1080の高解像度ディスプレイ向けにMPU並みの性能とグラフィックス機能を提供し、Tier-2 Tech Previewプラットフォームとして利用可能です。

その他にも!
Qt Quick Ultralite を可能な限り小さくするために継続的に取り組んでいます。以前のバージョンでリリースされた関連する最適化に続いて、QML から生成される C++ コードをさらに最適化し、その結果、ほとんどのアプリケーションで .text セクションのサイズが 3% から 7% 減少しました。
FreeRTOS multitask サンプルが大幅に改善され、複数のスレッド間で双方向の通信ができるようになりました。これにより、Qt Quick Ultralite とバックエンドのスレッド間の同期が容易になりました。
Qt Design Studio 4.4 では、Qt for MCUs で利用可能な機能に限定した GUI デザイン環境を提供し、標準Qtでのみ有効な QML コードの生成を防ぐことに重点を置き、多くのユーザーエクスペリエンスの向上が行われました。
qmlprojectexporter ツールが改善され、qmlproject プロパティに割り当てられた値が無効な場合のエラー通知が改善されました。
今後について
Qt for MCUs 2.8 Long Term Support (LTS) は 2024 年 5 月下旬にリリースされる予定です。いつものように、MCU用の高度なGUIの作成をさらに迅速にする一連の新機能と改良をご期待ください。次期バージョンでは、次のようなハイライトを盛り込む予定です。
- Qt Quick Ultralite用の Qt Quick Layouts のサブセットで、サイズ変更可能なユーザーインターフェースの作成を大幅に簡素化
- TextInput QML タイプ
- スマートフォンと同等の UX を持つ、フル機能のvirtual keyboard
- CMSIS-packのサポートにより、Qt for MCU をサードパーティの組み込み IDE プロジェクトと簡単に統合
- Zephyr RTOSとビルドシステムのサポート
そして、これだけではありません。生産性を向上させ、組込みプロセッサで実現可能なことの限界を押し広げる目的として、今年以降もさらなる開発を予定しています。さらなるアップデートにご期待ください。
Qt for MCUs 2.7 の入手
既存の Qt for MCUs 開発者は、Qt インストールディレクトリのルートにある Qt Maintenance Tool から Qt for MCUs 2.7 をダウンロードできます。初めてご利用になる方は、こちらをクリックしてください。いずれにせよ、新機能や改善をお楽しみいただければ幸いです。ご意見、ご要望がございましたら、コメントにてお寄せください。
Blog Topics:
Comments
Subscribe to our newsletter
Subscribe Newsletter
Try Qt 6.8 Now!
Download the latest release here: www.qt.io/download.
Qt 6.8 release focuses on technology trends like spatial computing & XR, complex data visualization in 2D & 3D, and ARM-based development for desktop.
We're Hiring
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
Commenting for this post has ended.
Is this feature doomed to stay a Felgo exclusive forever?
That seems like a weird choice from the Qt Company, a usable live reload would make the framework way more attractive than it is now. It sounds like a very technical and standalone feature, not that related to the rest of the Felgo offering. It would have its place in Qt directly.
The company I work for is already paying thousands of euros to Qt but this feature is locked away behind an additional 3k€/year/dev fee.
This post and the yearly Qt WS
adtalk feels like a painful remainder of what we could have but can't.We eventually made our own at our company, with proper CMake project management it's not that hard to do (e.g. with our own "add qml module" function that set it up automatically for any QML module). But yeah paywalling this to the max when other free technologies with better licensing do it for you (Flutter, etc.) kinda sucks.
I kindly ask to publish this proof of concept 👋
Haha I might give it a shot someday, currently nevermind it only works in our "project ecosystem" it's a bit rough around the edges (has that "wasn't a CMake expert yet" feel), and introduces an additional dependency for remote target scenarios (we use Protocol Buffers for all the data we send over the wire). Will look into it if I ever feel like it.
Imagine paywalling the single thing that QML promised to fix: Fast iteration times. 🫤
For the record I have been discussing this with Qt for many years. Recently I was informed (in summary) that Qt officially have absolutely no intention to develop this. We got the QML Preview fixed (because it was broken) but that's all folks. I tried really hard guys for a long time. Sorry I was not successful.
Recently a friend advised me to try online gambling. He recommended the site king billy, and I decided to register. The welcome bonus was very useful for the start. I started playing roulette, and luck was on my side. It was very nice that the winnings were withdrawn quickly and without problems. Now I visit this site every week to relax.