組込みグラフィックス
組込みグラフィックスという用語は多くのことを意味します。
まず、組込みという用語は、人によってさまざまなことを意味します。 一部の人にとって、組込みシステムは非常に信頼できる旧型の8ビット・マイクロコントローラを意味します。オペレーティング・システムがなく、事実上RAM、ROM、またはGPIOも搭載していないものです。 他の人にとっては、すべてをギガバイトで搭載する最新のスマート・フォンを意味することもあります。
2つ目に、グラフィックスという用語はさまざまに解釈できます。 一部の人にとっては、お気に入りのペインティング・プログラムで自分独自のピクセルを描画することを意味します。 これも別の人にとっては、自分のゲーム機で実行される3D描画ソフトウェアを意味します。
TouchGFXにおいて、組込みシステムはSTM32マイクロコントローラをベースにしたシステムを意味します。 さらにグラフィックスは、毎秒60フレームで実行される、ユーザ・インタフェースとのインタラクティブなアプリケーションを意味します。
4つの主要部分
このようなプラットフォームでグラフィックアプリケーションを実行するために、直接関係する4つの主要コンポーネントを検討します。 当然、組み込みシステムにはさらに多くのコンポーネントが存在する可能性がありますが、これらはグラフィックスの表示とはあまり関係がありません。
手短に言えば、TouchGFXはマイクロコントローラを使用して、Flashメモリにあるパーツを組み立てることで、RAM内に画像を作成および更新します。 作成された画像は、ディスプレイへ転送されます。 このプロセスが、可能かつ必要なだけ繰り返されます。
マイクロコントローラ
マイクロコントローラはこのプロセスの困難な部分をすべて担います。 Flash内の画像を読み取り、RAMに書き込みます。 半透明の赤色のテキストを画像にマージするときに結果の色を計算し、これらをRAMに保存します。 円のすべてのピクセルを描画してRAMに保存します。 画像をRAMからディスプレイに転送します。
STM32マイクロコントローラには、LTDC、Chrom-ART、Chrom-GRCなどの固有の機能があり、これらはグラフィックスの実現に役立ちます。
Further reading
RAM
RAMには計算後の結果の画像(フレームバッファ)が保存されます。 グラフィックスの更新時に、マイクロコントローラはRAMに対して読取り / 書込みを行います。 さらに、結果の画像をディスプレイに転送するときに、再度読み取ります。
多くの場合、結果の画像はマイクロコントローラ内部のRAMに保存されます。 結果のイメージを内部RAMに含めることが不可能な場合は、外部RAMをセットアップに追加できます。
Further reading
Flash
Flashにはすべての静的データが配置されます。 画像、フォント、およびテキストです。 Flashはマイクロコントローラによって読み取られ、その内容がRAMに書き込まれたり結合されたりします。
ほとんどの場合、外部Flashがセットアップに追加されます。すべてのグラフィック・アセットを保持できるほどの容量を、内部Flashが備えていることはほとんどないからです。 ただし、非常にシンプルなアプリケーションであれば、内部Flashで十分です。
理論上、Flashはメモリ・マップドなので、ピクセルをFlashから直接読み取り、RAMに書き込むことができます。 一方、Flashがメモリ・マップドでない場合には、FlashのコンテンツをRAMに転送し、そこから読み取ることができます。
Further reading
ディスプレイ
ディスプレイは、画像が人の目の前に実際に表示される場所です。
RAMに保存されている計算された画像(フレームバッファ)は、マイクロコントローラによりディスプレイに一定間隔で転送されます。