開発のヒント
開発用ツール、デバッグ
「TouchGFXにおけるメモリ使用量の削減方法」(1)
使用できるリソースに限りのある組み込みシステム向けGUIの開発において、メモリ使用量の削減はコストの削減・部品点数の削減の観点から非常に重要です。TouchGFXでは、メモリ使用量の削減のための手法をいくつか準備しています。
メモリ使用量の削減と大きく括っていますが、2つの異なるコンセプトが含まれます。1つは、画像データやフォント·データを格納するFlashメモリの使用量を削減すること、もう1つは、フレーム·バッファとして使用するRAMの使用量を削減することです。ここでは、フレーム·バッファの削減方法について紹介します。
フレーム·バッファは、ディスプレイに次に表示する画像を格納するための1まとまりのメモリで、グラフィック·エンジンが描画した画像データによってその内容が更新されます(図1参照)。
フレーム·バッファ1つあたりのメモリ·サイズは、一般的にフレーム·バッファの色深度やディスプレイの解像度(ピクセル数)によって次の式で計算できます。
ディスプレイ幅(ピクセル) x ディスプレイ高さ(ピクセル) x 色深度(bit) / 8[バイト]
例えば、800 x 480ピクセル、16bitカラーを使用する場合には以下のように計算されます。
800 x 480 x 16 / 8 = 768KB
上記式で計算されるメモリ·サイズのフレーム·バッファを1つもしくは2つ持つのが一般的な構成ですが、TouchGFXでは上記式で算出されるサイズ未満のRAMをフレーム·バッファとして使用することで、フレーム·バッファ·サイズの削減を図るパーシャル·フレーム·バッファと呼ばれる技術をサポートしています。パーシャル·フレーム·バッファ技術では、サイズの小さいフレーム·バッファを再利用してフレーム全体を描画するため、多数の小さな描画が発生し、CPUに対する負荷が高くなります。このため、複雑度が比較的小さなGUIに適した手法です。
TouchGFXでは、フレーム·バッファ·メモリ内蔵のディスプレイ(GRAM搭載ディスプレイと呼びます)で使用可能なパーシャル·フレーム·バッファ(図2)およびGRAMを搭載しないディスプレイで使用可能なエミュレーテッド·フレーム·バッファ(図3)の2つの技術をサポートしています。
図2のパーシャル·フレーム·バッファの方が、より小さいメモリ·ブロックで実現可能なため、メモリ·サイズ削減の効果がより大きいですが、GRAM搭載ディスプレイを使用する場合のみ適用可能です。図3のエミュレーテッド·フレーム·バッファは、GRAMを搭載しないディスプレイで使用可能で、中程度の複雑さを持つGUIにも対応可能です。ただし、LTDCディスプレイ·コントローラおよびChrom-GRCをサポートするマイコンでのみ使用可能です。
詳しくは、TouchGFXオンライン・ドキュメントのフレームバッファの項(https://support.touchgfx.com/ja/docs/basic-concepts/framebuffer )もご覧ください。
過去の開発のヒントはこちら
