Willkommen bei der Altia Developer Blog Series! Diese Beiträge wurden von unseren eigenen GUI-Experten verfasst, um Designideen und intelligente Lösungen für die Entwicklung und Bereitstellung eingebetteter Benutzeroberflächen mit Altia Design, unserem UI-Editor, und Altia DeepScreen, unserem automatischen Grafikcodegenerator, vorzustellen.

Sicher sein zu Registrieren für unseren Newsletter, um diese Inhalte direkt an Sie geliefert zu bekommen!


Reduzieren der RAM-Nutzung für ein miniGL-Ziel

Altia miniGL ist ein Altia DeepScreen Architekturimplementierung, die zusammen mit Dingen wie OpenVG und Software-Rendering verwendet wurde, um Designs für weniger leistungsfähige, ressourcenbeschränkte Ziele oder Umgebungen zu generieren.

Der MiniGL-Code von Altia ist in Bezug auf den RAM-Verbrauch bereits sehr optimiert, aber wenn Sie immer noch nach Möglichkeiten suchen, den RAM zu reduzieren, finden Sie hier einige Vorschläge, die es wert sind, untersucht zu werden.

Vermeiden Sie unnötige Objekte

Altia miniGL packt Daten sehr effizient, aber es gibt einige Designoptionen, die die Effektivität dieser Optimierung weiter steigern können. Das Eingebaute Animationen und Bildobjekte verwenden das Dateisystem Optionen aus dem Codegenerierungsbildschirm erhöhen die Menge an verwendetem RAM. Diese Optionen zwingen Ihren DeepScreen-Code dazu, mehr Variabilität zuzulassen, wodurch die Optimierung verringert wird, da der Bereich der Daten unbekannt ist. Derselbe Effekt tritt bei der Verwendung auf Snapshot-Objekte. Vermeiden Sie diese Objekte oder Codegenerierungsoptionen, wenn Sie sie nicht benötigen.

Generell sind die nächsten Kandidaten für eine RAM-Reduktion Text-I/O-Objekte. Diese können getrimmt werden, indem die Länge jedes Objekts überprüft wird, sodass es nur die minimal erforderliche Menge an RAM verbraucht. Sie können Ihre Codegenerierungseinstellung maximale Textstringlänge (statischer Speicher) auf die Länge in Zeichen des längstmöglichen Text-I/O anpassen. Dies kann auch Platz in den internen Datenarrays sparen. Wenn irgendwelche der Text-I/Os in diesen Arrays nicht von einem Sprachobjekt oder von der Logik adressiert werden, können sie in statische Labels geändert werden. Statische Labels werden im ROM statt im RAM gespeichert.

Gleiche Bilder, gleicher Name

Wenn Ihr Design mehrere Verweise auf dieselbe Bildquelldatei enthält, stellen Sie sicher, dass alle Animationen, in denen dieses Bild verwendet wird, denselben Namen haben. Wenn Sie ein Bildobjekt kopieren und einfügen, wird der Name automatisch erhöht. Ein Beispiel dafür sehen Sie unten.

Dies kann verhindert werden, indem _global an den Namen der Animationsvariablen angehängt wird, und wird auch unten demonstriert.

Nun laden und referenzieren all diese unterschiedlichen Objekte dieselbe Bildinstanz im RAM. Dies ermöglicht eingebettete Zauberei wie das Reduzieren eines einfarbigen Hintergrundbildes auf eine einzelne Spalte von Pixeln, die für die Breite der Anzeige kopiert werden. Dadurch wird die minimale Menge an RAM im Vergleich zum Laden eines ganzen Bildes verwendet. Dies muss zusammen mit dem Deaktivieren der Option Bildobjekte verwenden Dateisystem unter Codegenerierung erfolgen. Nun wird in der generierten Binärdatei von vielen Bildanimationen mit gleichem Namen auf dieselben Bilddaten verwiesen.

Am besten testen

Denken Sie zuletzt daran, die Ergebnisse aller in diesem Beitrag erwähnten Methoden zu testen und zu vergleichen. Die Schätzung der RAM-Nutzung ist stark systemabhängig, und die zuverlässigsten Antworten auf Ihre Fragen bestehen darin, Code für Ihr Gerät und Ihr Design zu generieren und zu kompilieren. Ähnlich aussehende Designs können sich aufgrund der Designimplementierung stark in der RAM-Nutzung unterscheiden. Darüber hinaus kann das gleiche Design auf unterschiedlicher Hardware radikal unterschiedliche Speichernutzungen haben. Beispielsweise können einige Geräte die Bilddaten direkt aus Flash referenzieren und in den Framebuffer einfügen. Andere Geräte benötigen jedoch möglicherweise RAM-Kopien von Bildern, um sie zu rendern.

Denken Sie daran, dass auf einer eingebetteten Plattform so viele Variablen eine Rolle spielen, dass Schätzungen der gesamten RAM-Nutzung eines Projekts wahrscheinlich ungenau sind. Es gibt keinen besseren Weg, die RAM-Nutzung Ihres Systems zu ermitteln, als Ihr Design darauf laufen zu lassen Ihre Hardware – und Altia macht es Ihnen leicht, genau das zu tun.

Möchten Sie mehr über die Altia-Codegenerierung erfahren? Fordern Sie eine Live-Demo an heute bei uns!