エンジンのアーキテクチャ
グラフィックスとは、詰まるところ物理的なディスプレイ上に何かを表示するためのものです。 重要なのは高速であることです。
組込みグラフィックスという用語は多くのことを意味します。
まず、組込みという用語は、人によってさまざまなことを意味します。 一部の人にとって、組込みシステムは非常に信頼できる旧型の8ビット・マイクロコントローラを意味します。オペレーティング・システムがなく、事実上RAM、ROM、またはGPIOも搭載していないものです。 他の人にとっては、すべてをギガバイトで搭載する最新のスマート・フォンを意味することもあります。
2つ目に、グラフィックスという用語はさまざまに解釈できます。 一部の人にとっては、お気に入りのペインティング・プログラムで自分独自のピクセルを描画することを意味します。 これも別の人にとっては、自分のゲーム機で実行される3D描画ソフトウェアを意味します。
TouchGFXにおいて、組込みシステムはSTM32マイクロコントローラをベースにしたシステムを意味します。 さらにグラフィックスは、毎秒60フレームで実行されるインタラクティブなアプリケーションを意味します。
4つの主要部分
こうしたプラットフォーム上でグラフィックス・アプリケーションを実行するには、以下の4つの主要コンポーネントが直接的に関与すると考えられます。 もちろん組込みシステムには、もっと多くのコンポーネントが存在する可能性がありますが、グラフィックス表示との関係性は低いと考えられます。
手短に言えば、TouchGFXはマイクロコントローラを使用して、Flashメモリにあるパーツを組み立てることで、RAM内に画像を作成および更新します。 組み立てられた画像は、ディスプレイへ転送されます。 このプロセスが、可能かつ必要なだけ繰り返されます。
マイクロコントローラ
マイクロコントローラはこのプロセスの困難な部分をすべて担います。 Flash内の画像を読み取り、RAMに書き込みます。 半透明の赤色のテキストを画像にマージするときに結果の色を計算し、これらをRAMに保存します。 円のすべてのピクセルを描画してRAMに保存します。 以下同様です。
STM32マイクロコントローラには、グラフィックスの実現に役立つ固有の機能があります。 さまざまなマイクロコントローラの詳細については、「マイクロコントローラ」を参照してください。
RAM
RAMには計算後の画像が保存されます。 マイクロコントローラはRAMに対して読取り / 書込みを行います。 さらに、結果の画像をディスプレイに転送するときに、再度読み取ります。
多くの場合、RAMはマイクロコントローラ内部にあります。 結果の画像を内部RAMに保持することが難しい場合には、外部RAMをセットアップに追加します。
Flash
Flashにはすべての静的データが配置されます。 画像、フォント、およびテキストです。 Flashはマイクロコントローラによって読み取られ、その内容がRAMに書き込まれたり結合されたりします。
ほとんどの場合、外部Flashがセットアップに追加されます。すべてのグラフィック・アセットを保持できるほどの容量を、内部Flashが備えていることはほとんどないからです。
理論上、Flashはメモリ・マップドなので、ピクセルをFlashから直接読み取り、RAMに書き込むことができます。 そうでない場合には、FlashのコンテンツをRAMにバッファリングし、そこから読み取ることができます。
ディスプレイ
ディスプレイは、画像が人の目の前に実際に表示される場所です。
RAMに保存されている計算された画像(フレームバッファ)は、マイクロコントローラによりディスプレイに一定間隔で転送されます。
性能
このセットアップで、最終的にはディスプレイ上でスムーズなアニメーションを実現するには、組込みグラフィックスの実行時にいくつか注意すべき点があります。
全般的な戦略
常に考慮すべきいくつかの一般的な注意点を次に示します。
- 変更のない対象の描画に時間をかけないこと
- FlashからRAMへの転送量をできる限り少なくすること
- RAMからディスプレイへの転送量をできる限り少なくすること
- グラフィックスの品質とアニメーション速度の適切なバランスを見つけること
- ハードウェアの機能を活用すること
TouchGFXエンジンを使用すると、こうした点にすべて対処できるようになりますが、それでも開発者は注意を払う必要があります。
セットアップ固有の戦略
膨大な数の組込みセットアップが可能であることは、実現可能な内容がセットアップによって大きく異なることを意味しています。
可能なセットアップの大まかな概要を以下に示します。
- STM32マイクロコントローラ
- クロック・レート: 50 MHz~500 MHz
- 可能なグラフィックス関連IPの範囲: Chrom-ART、Chrom-GRC、JPEGコーデックなど
- RAM
- 内部: 0~1 MB
- 外部: 0~100 MB
- Flash
- 内部: 0~1 MB
- 外部: 0~1 GB
- ディスプレイ
- 1~24ビット・カラー
- 100x100~1000x1000ピクセル
1つの可能なセットアップ上で実現可能なUIアプリケーションが、別のセットアップ上で実現可能なものとまったく異なる可能性があるのは明らかです。 したがって、目的のUIアプリケーションを実際のセットアップに割り当てる際には、細心の注意が必要です。
TouchGFXはこれらのセットアップ向けに基礎から完全に設計されており、STM32マイクロコントローラの機能を最大限に引き出し、必要なRAMとFlashの量を最小限に抑えることに重点を置いています。