Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

De heterogene grafische pijplijn van i.MX RT1170 MCU's begrijpen

In dit artikel leer je over de heterogene grafische pijplijn van de i.MX RT1170 MCU en de drie belangrijkste grafische acceleratie-engines.

Moderne embedded apparaten van consumenten- en professionele kwaliteit zijn steeds beter in staat om een ​​groeiend aantal handige functies te bieden. Deze rijkdom aan functies laat ontwerpers zich echter afvragen hoe ze alle functies toegankelijk kunnen maken voor de gebruikers zonder ze te overweldigen met een gecompliceerde interface.

Smartphone-achtige GUI's kunnen een effectief alternatief zijn voor traditionele fysieke knoppen, omdat ze enkele verbeteringen bieden ten opzichte van klassieke fysieke bedieningselementen. NXP maakt het ontwikkelen van feature-rijke en grafische gebruikersinterfaces toegankelijker met verschillende geïntegreerde displaycontrollers en grafische versnellers, zoals die in de i.MX RT1170 crossover MCU.

Figuur 1. De i.MX RT1170 MCU

De drie display-engines van de i.MX RT1170 MCU

Hoewel de meeste NXP-microcontrollers de noodzakelijke GUI-randapparatuur kunnen ondersteunen, worden sommige apparaten (zoals de i.MX RT1170 MCU) geleverd met ingebouwde display-interfaces en grafische versnellers die zijn ontworpen om rijke GUI-toepassingen te ondersteunen. Concreet bevat de i.MX1170 een 2D vector grafische GPU, een PxP grafische versneller en LCDIFV2-ondersteuning.

De speciale 2D GPU met versnelling van vectorafbeeldingen helpt het stroomverbruik en de prestaties van embedded apparaten te optimaliseren door de CPU te ondersteunen bij het renderen van schaalbare vectorafbeeldingen en het samenstellen en manipuleren van bitmaps. De 2D GPU kan ook afbeeldingen transformeren (schaal, rotatie door elke willekeurige hoek, reflecties, scharen) en ze on-the-fly omzetten in kleur.

De Pixel Processing Pipeline (PxP) combineert verschillende bewerkingen voor beeldtransformatie, zoals schalen, rotatie en kleurruimteconversie in één enkele efficiënte verwerkingsengine.

Dankzij de LCDIFV2-ondersteuning kunnen ingebedde ontwerpers tot acht weergavelagen creëren en ermee werken, wat zorgt voor on-the-fly overvloeimogelijkheden.

De 2D Vector Graphics GPU

In vergelijking met pixelafbeeldingen zijn vectorafbeeldingen niet afhankelijk van afzonderlijke pixels om een ​​compleet beeld te vormen. Het vector grafische model gebruikt opdrachten (zoals verplaatsen, lijn naar, krommen naar) en coördinaten om vormen te beschrijven die vervolgens worden gerasterd tot een uiteindelijke afbeelding.

Elke pixel in een pixelafbeelding, zoals een foto die is opgeslagen als een JPEG-bestand, heeft een constante grootte, wat doorgaans betekent dat het transformeren van een pixelafbeelding altijd resulteert in kwaliteitsverlies. Vectorafbeeldingen daarentegen zijn flexibeler als het gaat om transformatie. Het is bijvoorbeeld gemakkelijk om de punten van een primitieve vorm te transformeren en de afbeelding vervolgens opnieuw te tekenen zonder kwaliteitsverlies, aangezien vectorafbeeldingen onafhankelijk werken van de resolutie van de uiteindelijke afbeelding.

Daarom is het zinvol om pixelafbeeldingen te gebruiken bij het vastleggen van afbeeldingen met veel detail, zoals foto's. Daarentegen kunnen vectorafbeeldingen het beste worden gebruikt bij het werken met eenvoudige vormen, zoals kalligrafie, bedrijfslogo's en grafische gebruikersinterfaces.

Voor het renderen van vectorafbeeldingen zijn doorgaans een weergavedoel, padgegevens, opvulgegevens, transformatiegegevens, kleurgegevens en overvloeiregels vereist. Het renderingdoel is de buffer die de gerenderde afbeelding vasthoudt zodra deze klaar is. De padgegevens zijn het meest cruciale onderdeel van een vectorafbeelding, omdat ze de coördinaten en padsegmenten bevatten die de geometrie van de elementen in de vectorafbeelding beschrijven. Het bestaat uit paren van een bewerkingscode en de argumenten die bij elke bewerking horen, respectievelijk:

Figuur 2. Voor het renderen van vectorafbeeldingen zijn doorgaans een weergavedoel, padgegevens, opvulgegevens, transformatiegegevens, kleurgegevens en overvloeiregels vereist.

De vulregel beschrijft welke regel moet worden toegepast bij het bepalen welk deel van een gesloten vorm moet worden ingevuld met een effen kleur. Deze eigenschap kan een van de twee mogelijke waarden aannemen:niet-nul en even-oneven. Met de niet-nulregel geselecteerd, werpt het vulalgoritme een straal vanaf het punt in kwestie tot oneindig in elke richting. Vervolgens wordt geteld hoe vaak die straal een andere lijn in de vectorafbeelding passeert. Als de straal een lijn raakt die van links naar rechts gaat, wordt er één opgeteld bij de uiteindelijke som. Als de lijn van rechts naar links gaat, trekt het algoritme er één af. Als het uiteindelijke getal nul is, ligt het punt aan de buitenkant.

Het even-oneven-algoritme daarentegen telt elke lijn die wordt geraakt, ongeacht de richting van de lijn. Als de resulterende som even is, ligt het betreffende punt buiten de vorm. Anders zit het aan de binnenkant.

De volgende is de transformatie, die wordt gedaan door matrices te manipuleren om verschillende bewerkingen weer te geven, zoals translatie, rotatie en schaling. Affine transformaties zijn een krachtige functie van de ingebouwde 2D vector GPU van de i.MX RT1170 MCU.

Bij het tekenen van de resulterende vorm kan de programmeur kleurinformatie toewijzen aan elk pad:

Figuur 3. Transformatie wordt gedaan door matrices te manipuleren om verschillende bewerkingen weer te geven. Bij het tekenen van vormen kan de programmeur kleurinformatie toewijzen aan elk pad.

De mengregel, die aangeeft hoe een pad naar de uitgebreide bufferinhoud moet worden gemengd, is het laatste stukje informatie dat een uiteindelijke vectorafbeelding vormt. De alfawaarde van de kleurparameter van een pad en de overvloeifunctie bepalen het effect dat de alfa zal hebben op het vectorpad zelf en de bestemmingsbuffer.

De VGLite API — een van de opties om toegang te krijgen tot de 2D-vectorengine van de i-MX RT1170 — implementeert verschillende mengregels die de NXP-toepassingsnota AN13075 in meer detail bespreekt. Naast de vectorpijplijn biedt de VGLite API ook een pijplijn voor rasterafbeeldingen. Meer over dat deel van de API is te vinden in de AN13075 aanvraagnota.

De PxP 2D-versneller

De Pixel Processing Pipeline (PxP) is een krachtige 2D-versneller die grafische buffers of composietvideo kan verwerken voordat deze naar een display wordt verzonden. Het integreert verschillende veelgebruikte bewerkingen voor 2D-graphics, zoals blitting, alpha blending, kleurruimteconversie, vaste hoekrotatie en schalen.

Een mogelijke use-case van deze engine is om twee buffers samen te voegen om een ​​enkel uitvoerbeeld te vormen dat naar een LCD wordt gestuurd. Een van de buffers kan bijvoorbeeld een achtergrondafbeelding bevatten, terwijl de andere UI-elementen zoals tekstlabels of knoppen bevat. De lagen kunnen verschillende groottes hebben en de PxP-engine zorgt ook voor snel en eenvoudig schalen. De AN12110-toepassingsnota bespreekt een meer diepgaande voorbeeldtoepassing waarin de PxP de interne buffer schaalt om op het LCD-scherm van dat project te passen.

Het uitbesteden van algemene 2D-bewerkingen aan een speciale hardwarecontroller, zoals de PxP, biedt een aantal voordelen in vergelijking met het implementeren van de functies op de hoofd-CPU van een embedded microcontroller. Softwareontwikkelaars hoeven het wiel niet opnieuw uit te vinden, aangezien de meest voorkomende functies direct beschikbaar zijn. De hoofd-CPU hoeft ook niet meerdere keren per seconde complexe 2D-manipulaties uit te voeren, wat betekent dat hij zich in plaats daarvan op andere berekeningen kan concentreren, wat leidt tot een vlottere gebruikerservaring en mogelijk meer energie-efficiëntie.

De LCDIFV2-displaycontroller

De tweede versie van de liquid crystal display-interface (LCDIF) helpt ook de hoofd-CPU door de eerder gemaakte weergavegegevens op te halen uit een framebuffer en deze weer te geven op een TFT LCD-paneel. De framebuffer is de ruimte in het geheugen waar de weer te geven beeldgegevens worden opgeslagen. Het is mogelijk om twee buffers door elkaar te gebruiken. Hierdoor kan een van de buffers worden bijgewerkt terwijl de controller de andere trekt. Naast LCDIFv2 bevat de i.MX RT1170 MCU een extra eLCDIF-displaycontroller.

De LCDIFv2-controller in de i.MX ondersteunt tot acht lagen die programmeurs tijdens runtime kunnen mengen en configureren. Dit alles gebeurt zonder tussenkomst van andere acceleratormodules. Elke laag kan een ander kleurformaat, canvasgrootte, positie gebruiken en inhoud ophalen uit buffers op elke geheugenlocatie.

De LCDIFv2-controller ondersteunt ook het Index8BPP-formaat, waarmee programmeurs een afbeelding van 32 bits per pixel kunnen definiëren met behulp van een kleuropzoektabel en een bijbehorende indexarray. Deze methode maakt het mogelijk om een ​​ARGB8888 te definiëren zonder extra geheugen op te offeren. De aanvraagnota AN13075 en de officiële SDK geven voorbeelden van hoe u dit kunt bereiken.

De i.MX RT1170 Crossover MCU en de ondersteunde apparaten

De heterogene grafische pijplijn van de i.MX RT1170 bestaat uit drie engines, elk met zijn eigen voordeel dat een project helpt te vereenvoudigen en, wanneer ze samen worden gebruikt, de prestaties verbeteren terwijl geheugen wordt bespaard. Verschillende NXP-apparaten ondersteunen al enkele van de motoren die in dit artikel worden besproken:de i.MX RT1170 ondersteunt alle drie de grafische versnellers. De op Cortex-M7 gebaseerde i.MX RT1050 en de i.MX RT106x-apparaten ondersteunen PxP en een LCD-controller. De i.MX RT500 is gebaseerd op een Cortex-M33-kern en bevat een 2D GPU.

Naast hardware maakt NXP het mogelijk om kleine en snelle apparaten met volledige functionaliteit te maken door verschillende API's en handige tools te ondersteunen voor het ontwikkelen van GUI's voor embedded apparaten. De website van NXP geeft een overzicht van de verschillende ondersteunde API's en tools en alle ondersteunde apparaten. Het biedt ook verschillende trainingsmaterialen, zoals toepassingsnotities, video's, SDK-voorbeelden en on-demand webinars.

Industrieartikelen zijn een vorm van inhoud waarmee branchepartners nuttig nieuws, berichten en technologie kunnen delen met lezers van All About Circuits op een manier waarop redactionele inhoud niet goed geschikt is. Alle brancheartikelen zijn onderworpen aan strikte redactionele richtlijnen met de bedoeling de lezers nuttig nieuws, technische expertise of verhalen te bieden. De standpunten en meningen in brancheartikelen zijn die van de partner en niet noodzakelijk die van All About Circuits of zijn schrijvers.


Ingebed

  1. Het fabricageproces van de schacht begrijpen
  2. De betekenis van cloudcultuur begrijpen
  3. De voordelen van voorspellend onderhoud begrijpen
  4. De IoT-bedreigingsvector beveiligen
  5. De basisprincipes van een freesmachine begrijpen
  6. Machine learning in het veld
  7. Proto Tech Tip:Het verschil tussen vector- en rasterafbeeldingsbestanden
  8. De werking van schokdemper begrijpen
  9. De term koppeling begrijpen
  10. De flexibiliteit van een materiaal begrijpen
  11. De toepassingen van dieselmotoren begrijpen