Altia Developer Blog Seriesへようこそ! これらの投稿は、独自のGUIエキスパートによって作成され、UIエディターであるAltiaDesignと自動グラフィックコードジェネレーターであるAltiaDeepScreenを使用して組み込みユーザーインターフェイスを開発および展開するための設計アイデアとスマートソリューションを紹介します。

必ず アカウント登録 ニュースレターでこのコンテンツを直接配信してください。


miniGLターゲットのRAM使用量を削減

AltiaminiGLは アルティア ディープスクリーン OpenVGやソフトウェアレンダリングなどと一緒に使用され、リソースが制限された機能の少ないターゲットまたは環境の設計を生成するアーキテクチャの実装。

Altia miniGLコードは、RAM消費の観点からすでに非常に最適化されていますが、RAMを削減する方法をまだ探している場合は、検討する価値のあるいくつかの提案があります。

不要な物を避ける

Altia miniGLはデータを非常に効率的にパックしますが、この最適化の効果をさらに高めることができるいくつかの設計上の選択肢があります。 ザ 組み込みのアニメーション & 画像オブジェクトはファイルシステムを使用します コード生成画面のオプションを選択すると、使用するRAMの量が増えます。 これらのオプションにより、DeepScreenコードはより多くの変動性を許容するようになり、データの範囲が不明であるため、最適化が減少します。 これと同じ効果は、使用時に発生します スナップショットオブジェクト。 これらのオブジェクトやコード生成オプションが必要ない場合は、避けてください。

一般的に、RAM削減の次の候補は次のとおりです。 テキストI/Oオブジェクト。 これらは、必要最小限のRAMのみを消費するように、すべてのオブジェクトの長さをチェックすることでトリミングできます。 コード生成設定の最大テキスト文字列長(静的メモリ)を、可能な限り長いテキストI/Oの文字数に調整できます。 これにより、内部データ配列のスペースも節約できます。 これらの配列のテキストI/Oのいずれかが、言語オブジェクトまたはロジックによってアドレス指定されていない場合は、静的ラベルに変更できます。 静的ラベルはRAMではなくROMに保存されます。

同じ画像、同じ名前

デザインに同じ画像ソースファイルへの複数の参照が含まれている場合は、この画像が使用されているすべてのアニメーションが同じ名前を共有していることを確認してください。 画像オブジェクトをコピーして貼り付けると、名前が自動的にインクリメントされます。 この例を以下に示します。

これは、アニメーション変数名に_globalを追加することで防ぐことができ、以下にも示されています。

これで、これらの異なるオブジェクトはすべて、RAM内の同じイメージインスタンスをロードして参照します。 これにより、単色の背景画像をディスプレイの幅に合わせてコピーされたXNUMX列のピクセルに縮小するなどの埋め込みウィザードが可能になります。 これにより、イメージ全体をロードするのではなく、最小量のRAMが使用されます。 これは、コード生成で[画像オブジェクトの使用ファイルシステム]オプションの選択を解除すると同時に実行する必要があります。 これで、同じ画像データが参照されますが、多くの画像アニメーションは、生成されたバイナリファイルで名前を共有します。

テストするのが最善です

最後に、この投稿に記載されているすべての方法の結果をテストして比較することを忘れないでください。 RAM使用量の見積もりはシステムに大きく依存します。質問に対する最も信頼できる答えは、デバイスとデザインのコードを生成してコンパイルすることです。 似たようなデザインは、デザインの実装によりRAMの使用量が大きく異なる場合があります。 さらに、同じデザインでも、ハードウェアごとにメモリ使用量が大幅に異なる可能性があります。 たとえば、一部のデバイスは、Flashから直接画像データを参照してフレームバッファに入れることができます。 ただし、他のデバイスでは、画像をレンダリングするために画像のRAMコピーが必要になる場合があります。

組み込みプラットフォームには非常に多くの変数が関係しているため、プロジェクトの合計RAM使用量の見積もりは不正確になる可能性があることを覚えておいてください。 システムのRAM使用量を見つけるには、デザインを実行するよりも良い方法はありません。 あなたのハードウェア –そしてAltiaはそれを簡単に行うことができます。

Altiaコード生成についてもっと知りたいですか? ライブデモをリクエストする 今日は一緒に!