Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Eingebettet

Die heterogene Grafikpipeline von i.MX RT1170-MCUs verstehen

In diesem Artikel erfahren Sie mehr über die heterogene Grafikpipeline der i.MX RT1170-MCU und ihre drei wichtigsten Grafikbeschleunigungs-Engines.

Moderne Embedded-Geräte für Verbraucher und Profis werden zunehmend in der Lage, eine wachsende Palette nützlicher Funktionen anzubieten. Diese Funktionsvielfalt lässt Designer jedoch hinterfragen, wie sie den Benutzern alle Funktionen zugänglich machen können, ohne sie mit einer komplizierten Benutzeroberfläche zu überfordern.

Smartphone-ähnliche GUIs können eine effektive Alternative zu herkömmlichen physischen Tasten sein, da sie einige Verbesserungen gegenüber klassischen physischen Bedienelementen bieten. NXP erleichtert die Entwicklung funktionsreicher und grafischer Benutzeroberflächen mit verschiedenen integrierten Display-Controllern und Grafikbeschleunigern, wie sie in der i.MX RT1170 Crossover-MCU enthalten sind.

Abbildung 1. Die i.MX RT1170 MCU

Die drei Display-Engines der i.MX RT1170 MCU

Während die meisten NXP-Mikrocontroller die erforderlichen GUI-Peripheriegeräte unterstützen können, verfügen einige Geräte (z. Genauer gesagt enthält der i.MX1170 eine 2D-Vektorgrafik-GPU, einen PxP-Grafikbeschleuniger und LCDIFV2-Unterstützung.

Die dedizierte 2D-GPU mit Vektorgrafikbeschleunigung hilft, den Stromverbrauch und die Leistung von Embedded-Geräten zu optimieren, indem sie die CPU beim Rendern skalierbarer Vektorgrafiken und beim Erstellen und Bearbeiten von Bitmaps unterstützt. Die 2D-GPU kann auch Bilder transformieren (Skalieren, Drehung um jeden beliebigen Winkel, Reflexionen, Scherungen) und sie im Handumdrehen in Farbe konvertieren.

Die Pixel Processing Pipeline (PxP) kombiniert verschiedene Bildtransformationsoperationen wie Skalierung, Drehung und Farbraumkonvertierung in einer einzigen effizienten Verarbeitungsmaschine.

Die LCDIFV2-Unterstützung ermöglicht es Embedded-Designern, bis zu acht Display-Layer zu erstellen und mit ihnen zu arbeiten und bietet On-the-Fly-Blending-Funktionen.

Die 2D-Vektorgrafik-GPU

Im Gegensatz zu Pixelgrafiken verlassen sich Vektorgrafiken nicht auf einzelne Pixel, um ein vollständiges Bild zu bilden. Das Vektorgrafikmodell verwendet Befehle (z. B. Verschieben, Linie zu, Kurve zu) und Koordinaten, um Formen zu beschreiben, die dann zu einem endgültigen Bild gerastert werden.

Jedes Pixel in einer Pixelgrafik, beispielsweise einem als JPEG-Datei gespeicherten Foto, hat eine konstante Größe, was normalerweise bedeutet, dass die Transformation einer Pixelgrafik immer zu einem Qualitätsverlust führt. Vektorgrafiken hingegen sind flexibler in der Transformation. Es ist beispielsweise einfach, die Punkte einer primitiven Form zu transformieren und das Bild dann ohne Qualitätsverlust neu zu zeichnen, da Vektorbilder unabhängig von der Auflösung des endgültigen Bildes funktionieren.

Daher ist die Verwendung von Pixelgrafiken sinnvoll, wenn Sie Bilder mit vielen Details aufnehmen, z. B. Fotos. Im Gegensatz dazu werden Vektorgrafiken am besten verwendet, wenn Sie mit einfachen Formen wie Kalligraphie, Firmenlogos und grafischen Benutzeroberflächen arbeiten.

Das Rendern von Vektorbildern erfordert normalerweise ein Renderziel, Pfaddaten, Füllinformationen, Transformationsdaten, Farbinformationen und Mischregeln. Das Renderziel ist der Puffer, der das gerenderte Bild enthält, wenn es fertig ist. Die Pfaddaten sind der wichtigste Teil eines Vektorbilds, da sie die Koordinaten und Pfadsegmente enthalten, die die Geometrie der im Vektorbild vorhandenen Elemente beschreiben. Es besteht aus Paaren eines Operationscodes und den Argumenten, die jeweils mit jeder Operation einhergehen:

Abbildung 2. Das Rendern von Vektorbildern erfordert normalerweise ein Renderziel, Pfaddaten, Füllinformationen, Transformationsdaten, Farbinformationen und Mischregeln.

Die Füllregel beschreibt, welche Regel anzuwenden ist, wenn bestimmt wird, welcher Teil einer geschlossenen Form mit einer Volltonfarbe ausgefüllt werden soll. Diese Eigenschaft kann einen von zwei möglichen Werten annehmen:ungleich null und gerade-ungerade. Wenn die Regel ungleich Null ausgewählt ist, wirft der Füllalgorithmus einen Strahl vom fraglichen Punkt in jede Richtung ins Unendliche. Dann wird gezählt, wie oft dieser Strahl eine andere Linie in der Vektorgrafik passiert. Trifft der Strahl auf eine von links nach rechts verlaufende Linie, addiert er eins zur Endsumme. Wenn die Linie von rechts nach links verläuft, subtrahiert der Algorithmus eins. Wenn die letzte Zahl Null ist, liegt die Spitze außen.

Im Gegensatz dazu zählt der gerade-ungerade Algorithmus jeden Linientreffer ohne Rücksicht auf die Richtung der Linie. Wenn die resultierende Summe gerade ist, liegt der fragliche Punkt außerhalb der Form. Ansonsten ist es innen.

Als nächstes folgt die Transformation, die durch Manipulation von Matrizen durchgeführt wird, um verschiedene Operationen wie Translation, Rotation und Skalierung darzustellen. Affine Transformationen sind eine leistungsstarke Funktion der integrierten 2D-Vektor-GPU der i.MX RT1170 MCU.

Beim Zeichnen der resultierenden Form kann der Programmierer jedem Pfad Farbinformationen zuweisen:

Abbildung 3. Die Transformation erfolgt durch Manipulation von Matrizen, um verschiedene Operationen darzustellen. Beim Zeichnen von Formen kann der Programmierer jedem Pfad Farbinformationen zuweisen.

Die Mischregel, die angibt, wie ein Pfad mit dem Inhalt des erweiterten Puffers gemischt wird, ist die letzte Information, die ein endgültiges Vektorbild ausmacht. Der Alpha-Wert aus dem Farbparameter eines Pfads und die Mischfunktion definieren den Effekt, den das Alpha auf den Vektorpfad selbst und den Zielpuffer hat.

Die VGLite-API – eine der Optionen für den Zugriff auf die 2D-Vektor-Engine des i-MX RT1170 – implementiert verschiedene Mischregeln, die in der NXP-Anwendungsnotiz AN13075 ausführlicher behandelt werden. Neben der Vektorpipeline bietet die VGLite-API auch eine Pipeline für Rasterbilder. Weitere Informationen zu diesem Teil der API finden Sie im Anwendungshinweis AN13075.

Der PxP 2D-Beschleuniger

Die Pixel Processing Pipeline (PxP) ist ein leistungsstarker 2D-Beschleuniger, der Grafikpuffer oder Composite-Video verarbeiten kann, bevor sie an ein Display gesendet wird. Es integriert mehrere häufig verwendete 2D-Grafikverarbeitungsvorgänge wie Blitting, Alpha-Blending, Farbraumkonvertierung, Rotation mit festem Winkel und Skalierung.

Ein möglicher Anwendungsfall dieser Engine besteht darin, zwei Puffer zu mischen, um ein einzelnes Ausgabebild zu bilden, das an ein LCD gesendet wird. Beispielsweise könnte einer der Puffer ein Hintergrundbild enthalten, während der andere UI-Elemente wie Textbeschriftungen oder Schaltflächen enthält. Die Ebenen können unterschiedliche Größen haben und die PxP-Engine ermöglicht auch eine schnelle und einfache Skalierung. Die Anwendungsnotiz AN12110 behandelt eine ausführlichere Beispielanwendung, bei der PxP den internen Puffer so skaliert, dass er auf den LCD-Bildschirm dieses Projekts passt.

Die Auslagerung allgemeiner 2D-Operationen an einen dedizierten Hardware-Controller wie den PxP bietet eine Reihe von Vorteilen im Vergleich zur Implementierung der Funktionen auf der Haupt-CPU eines eingebetteten Mikrocontrollers. Softwareentwickler müssen das Rad nicht neu erfinden, denn die gängigsten Funktionen sind sofort verfügbar. Die Haupt-CPU muss sich auch nicht mehrmals pro Sekunde mit komplexen 2D-Manipulationen auseinandersetzen, was bedeutet, dass sie sich stattdessen auf andere Berechnungen konzentrieren kann, was zu einer flüssigeren Benutzererfahrung und möglicherweise zu mehr Energieeffizienz führt.

Der LCDIFV2-Display-Controller

Die zweite Version der Flüssigkristallanzeigeschnittstelle (LCDIF) unterstützt auch die Haupt-CPU, indem sie die zuvor erstellten Anzeigedaten aus einem Bildpuffer holt und sie auf einem TFT-LCD-Panel anzeigt. Der Bildspeicher ist der Speicherplatz im Speicher, in dem die anzuzeigenden Bilddaten gespeichert werden. Es ist möglich, zwei Puffer austauschbar zu verwenden. Dadurch kann einer der Puffer aktualisiert werden, während der Controller den anderen zeichnet. Neben LCDIFv2 enthält die i.MX RT1170 MCU einen zusätzlichen eLCDIF-Display-Controller.

Der LCDIFv2-Controller im i.MX unterstützt bis zu acht Ebenen, die Programmierer zur Laufzeit kombinieren und konfigurieren können. All dies geschieht ohne die Beteiligung anderer Beschleunigermodule. Jede Ebene kann ein anderes Farbformat, Leinwandgröße und Position verwenden und Inhalte aus Puffern an jedem Speicherort abrufen.

Der LCDIFv2-Controller unterstützt auch das Index8BPP-Format, das es Programmierern ermöglicht, ein 32-Bit-pro-Pixel-Bild mit einer Farb-Lookup-Tabelle und einem dazugehörigen Index-Array zu definieren. Diese Methode ermöglicht es, einen ARGB8888 zu definieren, ohne zusätzlichen Speicher opfern zu müssen. Der Anwendungshinweis AN13075 und das offizielle SDK enthalten Beispiele dafür.

Die i.MX RT1170 Crossover-MCU und ihre unterstützten Geräte

Die heterogene Grafikpipeline des i.MX RT1170 besteht aus drei Engines mit jeweils eigenen Vorteilen, die dazu beitragen, ein Projekt zu vereinfachen und bei gleichzeitiger Verwendung die Leistung zu verbessern und gleichzeitig Speicher zu sparen. Einige NXP-Geräte unterstützen bereits einige der in diesem Artikel besprochenen Engines:Der i.MX RT1170 unterstützt alle drei Grafikbeschleuniger. Die Cortex-M7-basierten Geräte i.MX RT1050 und i.MX RT106x unterstützen PxP und einen LCD-Controller. Der i.MX RT500 basiert auf einem Cortex-M33-Kern und enthält eine 2D-GPU.

Neben der Hardware ermöglicht NXP die Erstellung kleiner und schneller Geräte mit vollem Funktionsumfang durch die Unterstützung verschiedener APIs und hilfreicher Tools für die Entwicklung von GUIs für eingebettete Geräte. Die Website von NXP bietet einen Überblick über die verschiedenen unterstützten APIs und Tools sowie alle unterstützten Geräte. Es bietet auch verschiedene Schulungsmaterialien wie Anwendungshinweise, Videos, SDK-Beispiele und On-Demand-Webinare.

Branchenartikel sind eine Inhaltsform, die es Branchenpartnern ermöglicht, nützliche Nachrichten, Nachrichten und Technologien mit All About Circuits-Lesern auf eine Weise zu teilen, für die redaktionelle Inhalte nicht gut geeignet sind. Alle Branchenartikel unterliegen strengen redaktionellen Richtlinien, um den Lesern nützliche Neuigkeiten, technisches Know-how oder Geschichten zu bieten. Die in Branchenartikeln zum Ausdruck gebrachten Standpunkte und Meinungen sind die des Partners und nicht unbedingt die von All About Circuits oder seinen Autoren.


Eingebettet

  1. Den Wellenherstellungsprozess verstehen
  2. Die Bedeutung der Cloud-Kultur verstehen
  3. Die Vorteile der vorausschauenden Wartung verstehen
  4. Absicherung des IoT-Bedrohungsvektors
  5. Die Grundlagen der Fräsmaschine verstehen
  6. Maschinelles Lernen im Feld
  7. Proto Tech Tip:Der Unterschied zwischen Vektor- und Rastergrafikdateien
  8. Verständnis der Funktionsweise von Stoßdämpfern
  9. Den Begriff Kopplung verstehen
  10. Die Flexibilität eines Materials verstehen