
Démarrer avec Embedded Linux
Les origines de Linux remontent à l’OS commercial Unix, mais ce n’est que lorsque l’étudiant finlandais Linus Torvalds a annoncé un noyau Linux gratuit en 1991 que le mouvement du système d’exploitation open source a commencé à vraiment prendre de l’ampleur. Aujourd’hui il y a de nombreuses distributions de Linux qui sont conçues pour être utilisés avec les SBC, un exemple étant la distribution Raspbian basée sur Debian à utiliser avec le Raspberry Pi.

On peut également trouver Linux utilisé sur des ordinateurs de bureau et, en fait, la grande majorité des serveurs de centres de données du monde utilisent Linux. Il n’y a pas de version ou de distribution spécifique de Linux pour les ordinateurs à carte unique intégrés – certaines distributions contiennent moins de ressources spécifiques ou de prise en charge des périphériques, bien qu’il soit facile de les ajouter ultérieurement. Une autre raison à cela est que certains SBC sont sans tête, c’est-à-dire qu’ils n’ont pas de sortie vidéo, telle que HDMI ou vidéo composite. Les circuits intégrés de contrôleur vidéo et la mémoire associée augmentent le coût, la taille et la consommation d’énergie des composants, de sorte que les applications telles qu’un capteur IoT peuvent être extrêmement compactes, à faible consommation d’énergie et moins chères sans de telles fonctionnalités.
La plupart des développeurs de sustèmes embarqués interagiront avec Linux via l’interface de ligne de commande (CLI) plutôt que d’utiliser un environnement graphique de bureau. Mais avant de nous lancer dans certaines des commandes de base de Linux, considérons tout d’abord pourquoi nous utilisons un système d’exploitation.
L’alternative à l’utilisation d’un système d’exploitation consiste généralement à imbriquer votre programme d’application dans une structure et une programmation «à tour de rôle» ou «super-boucle» unique en utilisant une approche «bare metal». Bien que cela puisse aboutir à une conception efficace, cela peut devenir assez lourd si l’application commence à ajouter des fonctionnalités, en particulier celles nécessitant une mise en réseau et une connectivité. Pour ceux qui sont familiers avec l’utilisation d’un Arduino, c’est l’approche que vous utilisez, où des bibliothèques supplémentaires et des pilotes associés doivent être ajoutés afin de faciliter, par exemple, une connexion Internet.
Alors que tout système d’exploitation ajoute une certaine quantité de mémoire et de ressources à toute conception, les capacités qu’il fournit sans effort supplémentaire le rendent très souhaitable.
Certaines des fonctionnalités standard de Linux incluent la fourniture d’un système de fichiers, la connectivité réseau et la planification des tâches, pour ne citer que quelques-unes des nombreuses fonctionnalités essentielles. Linux est un système d’exploitation extrêmement évolutif et efficace, avec des centaines de commandes disponibles, dont certaines seront abordées dans cet article. Linux facilite également l’interface avec le monde réel, en utilisant des interfaces GPIO, ADC / DAC et série telles que I2C.
Il convient de noter cependant que Linux n’est pas un système d’exploitation temps réel car son noyau n’est pas préemptif; c’est-à-dire qu’une fois que le noyau exécute une commande, il ne peut pas être interrompu. Ainsi, pour les applications qui requièrent un comportement déterministe élevé, où le système d’exploitation peut répondre dans un délai prévisible, une distribution Linux standard peut ne pas convenir. Cela dit, un certain nombre d’initiatives de l’industrie sont actuellement en cours afin de fournir une distribution de système d’exploitation Linux en temps réel basée sur la préemption. Certains SBC prennent en charge les applications en temps réel grâce à l’utilisation de matériel dédié, dont le BeagleBone Black est un bon exemple. Les lecteurs intéressés par cette fonctionnalité sont invités à se rensigner sur BeagleBone Black des unités temps réel programmables (PRU).
L’interface de ligne de commande

Votre expérience initiale de Linux sera probablement via sa ligne de commande. En tant qu’administrateur, vous entrez dans la hiérarchie du système d’exploitation à un niveau «racine». Cette structure est la même quelle que soit la distribution que vous utilisez – voir Figure 3.
Pour cette partie de l’article, les commandes Linux sont écrites en vert et <ret> fait référence à la touche retour ou entrée. L’utilisation d’une combinaison de la touche de contrôle et d’une autre touche, telle que «D» dans cet exemple, est signifiée par Ctrl-D. Lorsque vous utilisez une carte sans tête, vous n’aurez pas d’autre choix que de vous connecter au SBC via un terminal distant. Dans les exemples suivants, nous utilisons un Apple MacBook Pro exécutant OS X et se connectant à un BeagleBone Black qui a une adresse IP de 192.168.1.102 et un utilisateur par défaut de «root». Pour faire une connexion à votre SBC il suffit d’utiliser un simple programme de terminal comme PuTTY lors de l’exécution sous Microsoft Windows ou leTerminal Apple, qui est déjà inclus dans OS X.

Dans Terminal, vous pouvez utiliser la commande SSH (Secure Shell) pour vous connecter en toute sécurité à distance à un autre ordinateur. Une fois connecté, vous pourrez exécuter n’importe quelle commande comme si vous étiez directement sur cet ordinateur. Le format le plus courant pour la commande SSH est ssh user @ host <ret>, comme le montre la figure 4. Dans cet exemple, SSH signale que cet hôte n’a pas été précédemment communiqué. En acceptant la communication, cette nouvelle connexion est stockée dans le fichier hosts connu du Mac.
Les lecteurs sont invités à essayer certaines des commandes de base sur la ligne de commande Linux. Is<ret> liste les fichiers du répertoire en cours, ls -l<ret> crée une liste de fichiers tabulée tandis que le fichier ls –-help donne une instruction détaillée sur toutes les options de commande – voir Figure 4.

Les autres commandes fréquentes incluent:
df <ret> pour fournir des informations sur le système de fichiers et une liste des périphériques montés
rm filename <ret> pour supprimer un fichier
mkdir majordomo <ret> pour créer un nouveau répertoire
cd majordomo <ret> pour changer de répertoire
rmdir majordomo <ret> pour supprimer un répertoire
cp setup.py setup.old <ret> pour copier le fichier setup.py dans le fichier setup.old
mv clock.py project / clock.py <ret> pour déplacer le fichier clock.py dans le dossier « project »
Vous pouvez également «diriger» la sortie d’une commande en tant qu’entrée d’une autre commande. Par exemple la commande ls -R | grep .py | cat <ret> recherche récursivement à partir du répertoire actuel tous les fichiers portant le caractère «py» dans le nom du fichier, puis le transmet à cat, qui affiche la sortie dans des pages lisibles à l’écran.

En ce qui concerne la création et l’édition de code source ou de fichiers de configuration, Linux dispose de plusieurs options d’éditeur à utiliser sur la ligne de commande. Ceux-ci incluent vim et nano. Les deux sont populaires, avec des préférences personnelles dictant celle que vous utilisez régulièrement. La plupart des utilisateurs trouveront nano extrêmement rapide à maîtriser tandis que vim demande beaucoup plus de pratique.
Contrôler le GPIO d’un SBC à partir de la ligne de commande Linux est très simple. Comme tout élément dans Linux est considéré comme un fichier, les broches GPIO sont également vues de la même manière. Chaque pin sera généralement accessible depuis le répertoire / sys / class / gpio. Vous définissez la direction de la broche en envoyant une commande ‘out’ ou ‘in’ en utilisant, par exemple pour gpio44, echo out> direction <ret>, et vous pouvez ensuite définir une broche haute ou basse avec les commandes suivantes: echo 1> valeur <ret> ou echo 0> valeur <ret>.
Dans cet article, nous avons présenté le système d’exploitation Linux et mis en évidence quelques commandes pour vous permettre de démarrer. Il y en a beaucoup, beaucoup d’autres, dont certaines, tels que ic2detect, sont spécifiquement destinées au débogage des communications I2C entre, par exemple entre un capteur accéléromètre et le SBC.
Linux fournit un système d’exploitation extrêmement résilient, évolutif et puissant à utiliser avec votre SBC embarqué.
About the author:
Manuel Gschwend dirige le « Groupe Produits » chez Conrad Business Supplies – www.conrad.com
La rédaction vous conseille:
Computer-on-Module SMARC 2.0 avec processeur NXP i.MX8
congatec s’associe à OSADL pour optimiser la prise en charge de sa carte Linux
