Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Comprendre le pipeline graphique hétérogène des microcontrôleurs i.MX RT1170

Dans cet article, découvrez le pipeline graphique hétérogène du MCU i.MX RT1170 et ses trois principaux moteurs d'accélération graphique.

Les appareils embarqués modernes grand public et professionnels sont de plus en plus capables d'offrir une gamme croissante de fonctionnalités utiles. Cette richesse en fonctionnalités, cependant, laisse les concepteurs se demander comment rendre toutes les fonctions accessibles aux utilisateurs sans les submerger avec une interface compliquée.

Les interfaces graphiques de type smartphone peuvent être une alternative efficace aux boutons physiques traditionnels, car elles offrent quelques améliorations par rapport aux commandes physiques classiques. NXP rend le développement d'interfaces utilisateur riches en fonctionnalités et graphiques plus accessibles avec divers contrôleurs d'affichage et accélérateurs graphiques intégrés tels que ceux inclus dans le MCU croisé i.MX RT1170.

Figure 1. Le microcontrôleur i.MX RT1170

Les trois moteurs d'affichage du MCU i.MX RT1170

Alors que la plupart des microcontrôleurs NXP peuvent prendre en charge les périphériques GUI nécessaires, certains appareils (tels que le MCU i.MX RT1170) sont livrés avec des interfaces d'affichage intégrées et des accélérateurs graphiques conçus pour prendre en charge des applications GUI riches. Plus concrètement, le i.MX1170 comprend un GPU graphique vectoriel 2D, un accélérateur graphique PxP et le support LCDIFV2.

Le GPU 2D dédié avec accélération graphique vectorielle permet d'optimiser la consommation d'énergie et les performances des périphériques embarqués en prenant en charge le processeur pour le rendu de graphiques vectoriels évolutifs et la composition et la manipulation de bitmaps. Le GPU 2D peut également transformer les images (échelle, rotation par n'importe quel angle arbitraire, réflexions, cisaillements) et les convertir en couleur à la volée.

Le pipeline de traitement des pixels (PxP) combine diverses opérations de transformation d'images telles que la mise à l'échelle, la rotation et la conversion de l'espace colorimétrique en un seul moteur de traitement efficace.

La prise en charge de LCDIFV2 permet aux concepteurs intégrés de créer et de travailler avec jusqu'à huit couches d'affichage, offrant des capacités de fusion à la volée.

Le GPU des graphiques vectoriels 2D

Par rapport aux graphiques en pixels, les graphiques vectoriels ne reposent pas sur des pixels individuels pour former une image complète. Le modèle graphique vectoriel utilise des commandes (telles que déplacer, ligne vers, courbe vers) et des coordonnées pour décrire les formes qui seront ensuite pixellisées en une image finale.

Chaque pixel d'un graphique en pixels, tel qu'une photographie stockée sous forme de fichier JPEG, a une taille constante, ce qui signifie généralement que la transformation d'un graphique en pixels entraîne toujours une perte de qualité. Les graphiques vectoriels, en revanche, sont plus flexibles en matière de transformation. Il est facile de transformer les points d'une forme primitive, par exemple, puis de redessiner l'image sans perte de qualité, car les images vectorielles fonctionnent indépendamment de la résolution de l'image finale.

Par conséquent, l'utilisation de graphiques en pixels a du sens lors de la capture d'images avec beaucoup de détails, comme des photographies. En revanche, les graphiques vectoriels sont mieux utilisés lorsque vous travaillez avec des formes simples, telles que la calligraphie, les logos d'entreprise et les interfaces utilisateur graphiques.

Le rendu d'images vectorielles nécessite généralement une cible de rendu, des données de chemin, des informations de remplissage, des données de transformation, des informations de couleur et des règles de fusion. La cible de rendu est le tampon qui contient l'image rendue une fois qu'elle est terminée. Les données de chemin sont la partie la plus cruciale d'une image vectorielle, car elles contiennent les coordonnées et les segments de chemin qui décrivent la géométrie des éléments présents dans l'image vectorielle. Il se compose de paires d'un code d'opération et des arguments qui accompagnent chaque opération, respectivement :

Figure 2. Le rendu d'images vectorielles nécessite généralement une cible de rendu, des données de chemin, des informations de remplissage, des données de transformation, des informations de couleur et des règles de fusion.

La règle de remplissage décrit la règle à appliquer lors de la détermination de la partie d'une forme fermée à remplir avec une couleur unie. Cette propriété peut prendre l'une des deux valeurs possibles :non nulle et paire-impaire. Avec la règle non nulle sélectionnée, l'algorithme de remplissage projette un rayon du point en question à l'infini dans chaque direction. Il compte ensuite la fréquence à laquelle ce rayon passe une autre ligne dans le graphique vectoriel. Si le rayon frappe une ligne allant de gauche à droite, il ajoute un à la somme finale. Si la ligne va de droite à gauche, l'algorithme soustrait un. Si le nombre final est zéro, le point se trouve à l'extérieur.

En revanche, l'algorithme pair-impair compte chaque ligne touchée sans tenir compte de la direction de la ligne. Si la somme résultante est paire, le point en question est en dehors de la forme. Sinon, c'est à l'intérieur.

Vient ensuite la transformation, qui se fait en manipulant des matrices pour représenter diverses opérations telles que la translation, la rotation et la mise à l'échelle. Les transformations affines sont une fonctionnalité puissante du GPU vectoriel 2D intégré du MCU i.MX RT1170.

Lors du dessin de la forme résultante, le programmeur peut affecter des informations de couleur à chaque chemin :

Figure 3. La transformation est effectuée en manipulant des matrices pour représenter diverses opérations. Lors du dessin de formes, le programmeur est capable d'attribuer des informations de couleur à chaque chemin.

La règle de fusion, qui indique comment fusionner un chemin vers le contenu du tampon étendu, est la dernière information qui constitue une image vectorielle finale. La valeur alpha du paramètre de couleur d'un chemin et la fonction de mélange définissent l'effet que l'alpha aura sur le chemin vectoriel lui-même et le tampon de destination.

L'API VGLite - l'une des options pour accéder au moteur vectoriel 2D de l'i-MX RT1170 - implémente diverses règles de mélange que la note d'application NXP AN13075 décrit plus en détail. Outre le pipeline vectoriel, l'API VGLite fournit également un pipeline pour les images raster. Vous trouverez plus d'informations sur cette partie de l'API dans la note d'application AN13075.

L'accélérateur PxP 2D

Le Pixel Processing Pipeline (PxP) est un puissant accélérateur 2D qui peut traiter les tampons graphiques ou la vidéo composite avant de l'envoyer vers un écran. Il intègre plusieurs opérations de traitement graphique 2D couramment utilisées telles que le blitting, le mélange alpha, la conversion de l'espace colorimétrique, la rotation à angle fixe et la mise à l'échelle.

Un cas d'utilisation possible de ce moteur consiste à mélanger deux tampons pour former une seule image de sortie envoyée à un écran LCD. Par exemple, l'un des tampons peut contenir une image d'arrière-plan, tandis que l'autre contient des éléments d'interface utilisateur tels que des étiquettes de texte ou des boutons. Les couches peuvent avoir différentes tailles et le moteur PxP permet également une mise à l'échelle rapide et facile. La note d'application AN12110 traite d'un exemple d'application plus détaillé dans lequel le PxP met à l'échelle le tampon interne pour l'adapter à l'écran LCD de ce projet.

L'externalisation des opérations 2D courantes vers un contrôleur matériel dédié, tel que le PxP, offre une gamme d'avantages par rapport à la mise en œuvre des fonctions sur le processeur principal d'un microcontrôleur embarqué. Les développeurs de logiciels n'ont pas à réinventer la roue, car les fonctions les plus courantes sont facilement disponibles. Le processeur principal n'a pas non plus à gérer des manipulations 2D complexes plusieurs fois par seconde, ce qui signifie qu'il peut se concentrer sur d'autres calculs à la place, ce qui permet une expérience utilisateur plus fluide et potentiellement plus d'efficacité énergétique.

Le contrôleur d'affichage LCDIFV2

La deuxième version de l'interface d'affichage à cristaux liquides (LCDIF) aide également le processeur principal en récupérant les données d'affichage précédemment créées à partir d'un tampon de trame et en les affichant sur un panneau LCD TFT. Le frame buffer est l'espace de la mémoire où sont stockées les données d'image à afficher. Il est possible d'utiliser deux tampons de manière interchangeable. Cela permet à l'un des tampons d'être mis à jour pendant que le contrôleur dessine l'autre. Outre LCDIFv2, le MCU i.MX RT1170 intègre un contrôleur d'affichage eLCDIF supplémentaire.

Le contrôleur LCDIFv2 de l'i.MX prend en charge jusqu'à huit couches que les programmeurs peuvent mélanger et configurer lors de l'exécution. Tout cela se passe sans l'intervention d'autres modules accélérateurs. Chaque couche peut utiliser un format de couleur, une taille de canevas, une position et extraire le contenu différents des tampons à n'importe quel emplacement de mémoire.

Le contrôleur LCDIFv2 prend également en charge le format Index8BPP, qui permet aux programmeurs de définir une image 32 bits par pixel à l'aide d'une table de recherche de couleurs et d'un tableau d'index qui l'accompagne. Cette méthode permet de définir un ARGB8888 sans avoir à sacrifier de la mémoire supplémentaire. La note d'application AN13075 et le SDK officiel donnent des exemples de la façon d'y parvenir.

Le MCU croisé i.MX RT1170 et ses périphériques pris en charge

Le pipeline graphique hétérogène de l'i.MX RT1170 se compose de trois moteurs, chacun avec son propre avantage qui permet de simplifier un projet et, lorsqu'il est utilisé à l'unisson, d'améliorer ses performances tout en économisant de la mémoire. Plusieurs appareils NXP prennent déjà en charge certains des moteurs décrits dans cet article :l'i.MX RT1170 prend en charge les trois accélérateurs graphiques. Les appareils i.MX RT1050 et i.MX RT106x basés sur Cortex-M7 prennent en charge PxP et un contrôleur LCD. L'i.MX RT500 est basé sur un cœur Cortex-M33 et intègre un GPU 2D.

Outre le matériel, NXP permet de créer de petits appareils rapides et complets en prenant en charge différentes API et des outils utiles pour le développement d'interfaces graphiques pour les appareils embarqués. Le site Web de NXP fournit un aperçu des différentes API et outils pris en charge et de tous les appareils pris en charge. Il propose également différents supports de formation tels que des notes d'application, des vidéos, des exemples de SDK et des webinaires à la demande.

Les articles sur l'industrie sont une forme de contenu qui permet aux partenaires de l'industrie de partager des actualités, des messages et des technologies utiles avec les lecteurs d'All About Circuits d'une manière qui ne convient pas au contenu éditorial. Tous les articles de l'industrie sont soumis à des directives éditoriales strictes dans le but d'offrir aux lecteurs des nouvelles utiles, une expertise technique ou des histoires. Les points de vue et opinions exprimés dans les articles de l'industrie sont ceux du partenaire et pas nécessairement ceux d'All About Circuits ou de ses rédacteurs.


Embarqué

  1. Comprendre le processus de fabrication d'arbres
  2. Comprendre l'importance de la culture cloud
  3. Comprendre les avantages de la maintenance prédictive
  4. Sécurisation du vecteur de menace IoT
  5. Comprendre les bases de la fraiseuse
  6. Apprentissage automatique sur le terrain
  7. Conseil technique Proto :la différence entre les fichiers graphiques vectoriels et raster
  8. Comprendre le fonctionnement de l'amortisseur
  9. Comprendre le terme couplage