Cet article a pour but de regrouper les informations essentielles pour commencer ses premiers pas avec le module iMX6 Rex fabriqué et distribué par Voipac. Je vous propose de consulter d’abord mon article sur les différentes solutions du marché à base de NXP i.MX6.

Sommaire

Se procurer le i.MX6 Rex

Le module iMX6 Rex est distribué par la société Slovaque Voipac. C’est un Computer on Module (CoM) destiné à être utilisé dans des projets de prototypage rapide. Même certaines solutions industrielles finales peuvent l’utiliser, ce qui permet d’éviter une conception et routage de PCB sur mesure qui est complexe (processeur, mémoire, I/O, etc) et ne peut pas toujours être amorti sur des petites séries.

Computer on Module (CoM) Voipac iMX6 Rex

Pour l’évaluer et faire ses premiers pas en vue de son utilisation dans un projet industriel, il est nécessaire de disposer d’une Carrier Board dénommée iMX6 Rex Base Board.

La conception du module iMX6 Rex a été réalisée par FEDEVEL Academy, une autre société Slovaque spécialisée dans la formation sur l’embarqué, et le design de PCB sur mesure. On comprend mieux la présence de l’inscription FEDEVEL sur le PCB du module et l’écosystème associé au produit.

Comme déjà évoqué dans mon précédent article, le iMX6 Rex est dans une phase de « maturité » du cycle de vie chez Voipac, environ 6 à 10 ans après l’introduction sur le marché. Le distributeur indique distribuer de grosses quantités à ses clients actuels, mais déconseille l’usage du module pour de nouveaux projets de conception. C’est le iMX8M qui doit remplacer à terme le iMX6 Rex.

Le wiki de Voipac contient une méthode de compilation du noyau Linux 4.1 « standalone » que j’ai réussi à faire fonctionner (détails ici), et une méthode Yocto 2.1 Krogoth qui ne fonctionne plus.

Ressources utiles au iMX6 Rex

Outre la page produit du distributeur Voipac (ci-dessus) c’est le site imx6rex.com qui contient le plus de ressources utiles. On a d’ailleurs la confirmation que Voipac est le distributeur exclusif de ce produit et FEDEVEL le concepteur (source).

Formations

Deux formations en lien avec le iMX6 Rex sont proposées par Fedevel :

Même si Linux est un noyau standard et très largement adopté, la seconde formation sur uBoot et YOCTO semble tout à fait pertinente même pour les Linuxiens de longue date.

Fichiers utiles

La page d’accueil du site imx6rex.com présente de nombreux fichiers utiles avec notamment :

Binaries

  • Binaires u-boot, le système d’amorçage bien connu sur les plateformes embarquées ARM (fichiers au format imx6rex-u-boot-*)
  • Images Linux (fichiers au format imx6rex-uImage-*)
  • Une image de partition sda1 (fichier UImage-3.15-1GB-sda1-rw-boot-vivante)

Sources & Other files

  • L’outil Cfimager, pour écrire des fichiers imx sb, ou des données raw sur une carte SD
  • Une suite de tests Emc-test-all et Emc-test1 sous forme de script bash
  • Un outil permettant de rendre le iMX6 bootable depuis la carte SD (IMX6DQ SPI To SD Loader Binaries Rev1.0). A priori cela est déjà le cas d’usine sur le module Rex.
  • Plusieurs images : Imx6rex-debian-7.5-linux-3.0.35-1-JUL-2014, Imx6rex-filesystem-12-MAR-2014, Imx6rex-xubuntu-13-04. Il y a à priori l’OS Debian 7.5, Xubuntu, et un système de fichiers dont je ne connais pas l’utilité.

On trouve également de nombreux plans, schémas, vue 3D, listes de composants, etc.

Pages de référence

Analyse de la distribution de démonstration proposée sur carte SD

Le iMX6 Rex avec sa carrier board sont livrées avec une carte SD qui contient une distribution Linux de démonstration. Une carte SD avec Android est également disponible.

Noyau Linux

Voici le résultat de la commande uname -a

On constate un noyau Linux 4.1.36. Cette branche du noyau est sortie en 2015 et son support étendu s’est arrêté courant 2018 (source). Il est étonnant qu’une distribution Linux complète soit fournie sur la carte SD alors que Yocto n’est pas officiellement supporté par FEDEVEL (cf. cet article).

Ce noyau est à la fois plus récent que le 3.0.35 proposé selon la méthodologie LTIB de imx6rex.com (avec le fichier L3.0.35_4.1.0_130816_source.tar.gz), et assez ancien pour une compilation Yocto. Il est fort dommage que la procédure complète de construction avec Yocto ne soit pas rendue publique.

Processeur

Plusieurs mentions sont intéressantes en regardant le fichier /proc/cpuinfo :

Mémoire RAM

Je dispose ici d’une version avec 4 Go de mémoire, selon la commande free :

Partition /boot

La partition /boot est remplie avec trois fichiers dtb (Device Tree Blob) et un noyau zImage. Les Device Tree Blob décrivent l’architecture matérielle précise du SOM, et permettent d’utiliser un noyau relativement générique pour plusieurs matériels.

On pourra probablement exploiter ce noyau et ces Device Tree Blob pour construire une distribution Linux sur-mesure autour. Mais encore une fois, il est bien dommage que la procédure Yocto complète ne soit pas supportée (cf. ci-dessus).

Exécutables

Il est intéressant de passer la commande file sur les binaires fournis sur la carte SD de démonstration du iMX6 Rex.

Si votre chaîne de compilation produit bien des binaires qui se présentent comme ceci, ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), c’est très bon signe. Si ce n’est pas le cas, il semble peu probable que vous réussissiez à l’exécuter sur la machine cible.

A noter que ceci est extrêmement proche des binaires fournis dans Raspberry Pi OS 32 bits qui se présentent comme ceci, pour comparaison :