Emboxプロジェクトでは、
少し前にSTM32プラットフォームでQtを起動し
ました。例として、moveblocksアプリがあります。これは、画面上を移動する4つの青い正方形のアニメーションです。ボード上でタッチスクリーンを使用できるため、たとえば、インタラクティブ機能を追加するために、さらに多くの機能が必要でした。コンピューターでもかっこいいという理由だけで、animatedtilesアプリを選びました。仮想ボタンを押すことで、多くのアイコンが画面上をスムーズに動き、さまざまな形に集まります。さらに、それは3Dアニメーションのように見え、マイクロコントローラーがそのようなタスクに対処できるかどうかさえ疑問でした。
アセンブリ
まず、組み立てから始めます。これを行う最も簡単な方法は、QEMUエミュレーターを使用することです。そこにはすべてがメモリから正確に収まるため、すべてのコンポーネントがアプリケーションを構築するのに十分であるかどうかを簡単に確認できます。すべてのアニメーションタイルが正常に組み立てられたことを確認した後、必要なボードの構成に簡単に転送しました。
船上での最初のスタート
STM32F746G-Discoveryの画面サイズは480x272で、アプリケーションを起動したとき、画面の上部にのみ描画されていました。私たちは当然、何が問題なのかを知りたいと思っていました。もちろん、ボード上でデバッグを開始することもできますが、より簡単な解決策があります。QVFB仮想フレームバッファーを使用して同じ480x272のサイズでLinux上でアプリケーションを実行します。
Linuxでの起動
Linuxで実行するには、QVFBの3つの部分、Qtライブラリ、およびアプリケーション自体が必要です。
QVFBは、Qtを実行するための仮想画面を提供する通常のアプリケーションです。公式ドキュメントに記載されているとおりに収集し ます。
希望の画面サイズで起動します。
./qvfb -width 480 -height 272 -nocursor
次に、Qtライブラリを埋め込みとしてビルドします。-embeddedオプションを指定します。また、ビルドを高速化するためにさまざまなモジュールを無効にしました。最終的に、構成は次のようになりました。
./configure -opensource -confirm-license -debug \ -embedded -qt-gfx-qvfb -qvfb \ -no-javascript-jit -no-script -no-scripttools \ -no-qt3support -no-webkit -nomake demos -nomake examples
次に、animatedtilesアプリケーション(qmake + make)を作成します。そして、コンパイルされたアプリケーションを起動し、QVFBをポイントします。
./examples/animation/animatedtiles/animatedtiles -qws -display QVFb:0
起動後、Linuxでは画面の一部にしか描画されないことがわかりました。オプション「-fullscreen」を追加して、animatedtilesを少し変更しました。指定すると、アプリケーションはフルスクリーンモードで起動します。
Emboxで起動
Emboxでアプリケーションの変更されたソースコードを使用します。再構築して実行します。アプリケーションが起動せず、Qtのメモリが不足しました。Emboxの構成を見ると、ヒープサイズが2MBに設定されており、明らかに十分ではないことがわかります。繰り返しになりますが、ボード上でこの点を直接理解することを試みることができますが、Linuxで快適にそれを実行しましょう。
これを行うには、次のようにアプリケーションを起動します。
$ valgrind --tool=massif --massif-out-file=animatedtiles.massif ./examples/animation/animatedtiles/animatedtiles -qws -fullscreen $ ms_print animatedtiles.massif > animatedtiles.out
animatedtiles.outファイルでは、ヒープ占有率の最大値が約2.7MBであることがわかります。これで、推測する必要はありませんが、Emboxに戻り、ヒープサイズを3MBに設定します。
Animatedtilesがリリースされました。
STM32F769Iで起動-ディスカバリー。
タスクをさらに複雑にして、同じ例を同様のマイクロコントローラーで実行してみましょう。ただし、画面解像度が高い場合のみです-STM32F769I-Discovery(800x480)。つまり、フレームバッファには1.7倍のメモリが必要になります(STM32F746Gの画面は480x272であることに注意してください)が、これはSDRAMの2倍のサイズで補正されます(STM32F746Gで使用可能なSDRAMの8MBに対して16MB)。
上記のようにヒープのサイズを見積もるには、最初にQvfbとLinuxアプリケーションを実行します。
$ ./qvfb -width 800 -height 480 -nocursor & $ valgrind --tool=massif --massif-out-file=animatedtiles.massif ./examples/animation/animatedtiles/animatedtiles -qws -fullscreen $ ms_print animatedtiles.massif > animatedtiles.out
ヒープ内のメモリ消費量を調べます-約6MB(STM32F746Gのほぼ2倍)。
mods.confで目的のヒープサイズを設定して再構築する必要があります。この短いビデオで示されているように、アプリケーションは問題なくすぐに起動しました
従来、結果は自分で再現できます。これを行う方法は、ウィキに記載されてい ます。
この記事は、embedded.comで英語で最初に公開さ れました。