Comment choisir son OS Linux embarqué ?
Venez partager votre expérience

Le , par Aquanum, Membre chevronné
Bonjour,

Je me permets de lancer une petite discussion qui me permettra de créer un article sur le choix et les différentes utilisations d'OS Linux embarqué. J'utilise ici le terme OS plutôt que distribution, cela me semble plus adapté.

Il existe beaucoup de systèmes et outils basés sur Linux sur le marché aujourd'hui, en voici une liste non exhaustive.

Pour les OS clé en main
  • MeeGo
  • Android
  • GeeXbox / OpenBricks
  • webOS
  • Embedded Debian (emdebian)
  • Embedded Gentoo
  • Open Wrt


Pour les OS sur mesure
  • Buildroot
  • Scratchbox
  • OpenEmbedded
  • Yocto Project
  • uClinux
  • LFS


Je pense qu'il serait intéressant de recenser les avantages et inconvénients de chacun de ces projets. De voir dans quels cas et contextes ils sont pertinents ou bien à déconseiller. Mon idée serait du coup de regrouper l'expérience des gens pour en faire un document qui concentre toutes les informations nécessaires au choix d'un OS plutôt qu'un autre.

Je trouve que cette réflexion vaut le coup d'être lancée car de mon côté le besoin est réel. A moins d'avoir pu travailler sur tous les projets, il reste difficile d'avoir une vision objective et constructive. Et par conséquent, choisir entre plusieurs OS n'est pas une mince affaire.

Avez-vous une expérience sur l'intégration de telles solution ?
Quel est votre ressenti sur ces différents OS ?
Quels sont les avantages et inconvénients que vous pourriez trouver ?
Quels sont les cas d'utilisation pour les différents OS que vous auriez pu tester ? Adapté ? Pas adapté ?

J'ajouterai ma pierre à l'édifice après quelques réponses
Merci d'avance !


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Aquanum Aquanum - Membre chevronné https://www.developpez.com
le 08/06/2011 à 14:28
Hop, je me lance. Donc, de ce que j'ai pu tester jusque là :

Buildroot
Vraiment très pratique car complètement sur mesure. Je travaille avec depuis 1 an et demi et j'en suis vraiment très satisfait. Il y aurait un article à écrire dessus, j'y compte bien à l'occasion. Une version sort tous les 3 mois, et le projet est très vivant.
Les avantages : modularité et simplicité
Inconvénients : pas de gestion de package intégrée, la suppression/réinstallation/recompialtion de paquets est un peu prise de tête, le temps de compilation d'un système complet

LFS
Utile lorsque l'on souhaite se générer un Linux ultra ultra sur mesure, avec optimisation de taille pour faire tenir ça sur les plus petits systèmes. Je le vois plutôt comme un outil d'apprentissage qu'une solution industrielle aujourd'hui. Enfin, Linux From Scratch est plus de l'ordre de la guideline qu'un réel outil de génération de système. Tout se fait à la main.

Android
Je suis le nez dedans en ce moment, mais jusque là je trouve que la doc relative à l'intégration/portage d'un système Android est assez rare. Très peu de doc, c'est bien galère

Embedded Gentoo
Personnellement, je ne vois pas trop l'intérêt. Enfin devoir recompiler ses paquets sur de l'embarqué... c'est juste une idée à la con
J'ai tenté de m'installer vim sur une gentoo embarquée, ça m'a pris plus d'une heure de compiler sur target ! Super ! Pour moi l'avantage de Gentoo est de pouvoir tout faire soi même quand on est un gros rebelle de Linux. Mais là honnêtement, qu'on me montre des avantages pour contraster avec ma première approche catastrophique...

Embedded Debian
Bien sympathique d'avoir une debian embarquée. Toutefois, l'âge de certains paquets peut poser certains problèmes et être assez pénible.

Angström
Agréable approche d'Angström avec un gestionnaire paquets bien sympathique !
Mais je n'ai pas eu l'occasion de travailler sur la durée avec.
Si je ne me trompe pas par contre, Angström/OpenEmbedded est un très gros consommateur de place sur le disque dur pour tout l'environnement de dev (staging)
Avatar de minnesota minnesota - Membre émérite https://www.developpez.com
le 08/06/2011 à 15:53
Je pense que le sujet a été épinglé trop vite, du coup plein de personnes passent à côté.
Avatar de monnoliv monnoliv - Membre habitué https://www.developpez.com
le 08/06/2011 à 21:28
Si je ne me trompe pas par contre, Angström/OpenEmbedded est un très gros consommateur de place sur le disque dur pour tout l'environnement de dev (staging)

Oui mais sur le PC de développement on en a de la mémoire disque!
Avatar de ArKam ArKam - Membre éclairé https://www.developpez.com
le 09/06/2011 à 10:21
Citation Envoyé par Aquanum  Voir le message
Hop, je me lance. Donc, de ce que j'ai pu tester jusque là :

Buildroot
Vraiment très pratique car complètement sur mesure. Je travaille avec depuis 1 an et demi et j'en suis vraiment très satisfait. Il y aurait un article à écrire dessus, j'y compte bien à l'occasion. Une version sort tous les 3 mois, et le projet est très vivant.
Les avantages : modularité et simplicité
Inconvénients : pas de gestion de package intégrée, la suppression/réinstallation/recompialtion de paquets est un peu prise de tête, le temps de compilation d'un système complet

LFS
Utile lorsque l'on souhaite se générer un Linux ultra ultra sur mesure, avec optimisation de taille pour faire tenir ça sur les plus petits systèmes. Je le vois plutôt comme un outil d'apprentissage qu'une solution industrielle aujourd'hui. Enfin, Linux From Scratch est plus de l'ordre de la guideline qu'un réel outil de génération de système. Tout se fait à la main.

Android
Je suis le nez dedans en ce moment, mais jusque là je trouve que la doc relative à l'intégration/portage d'un système Android est assez rare. Très peu de doc, c'est bien galère

Embedded Gentoo
Personnellement, je ne vois pas trop l'intérêt. Enfin devoir recompiler ses paquets sur de l'embarqué... c'est juste une idée à la con
J'ai tenté de m'installer vim sur une gentoo embarquée, ça m'a pris plus d'une heure de compiler sur target ! Super ! Pour moi l'avantage de Gentoo est de pouvoir tout faire soi même quand on est un gros rebelle de Linux. Mais là honnêtement, qu'on me montre des avantages pour contraster avec ma première approche catastrophique...

Embedded Debian
Bien sympathique d'avoir une debian embarquée. Toutefois, l'âge de certains paquets peut poser certains problèmes et être assez pénible.

Angström
Agréable approche d'Angström avec un gestionnaire paquets bien sympathique !
Mais je n'ai pas eu l'occasion de travailler sur la durée avec.
Si je ne me trompe pas par contre, Angström/OpenEmbedded est un très gros consommateur de place sur le disque dur pour tout l'environnement de dev (staging)

Trés bon résumé de ta part

Juste un truc, pour débian, si tu souhaite des paquets à jour tu peux mettre ceci dans ton source.list:

deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free

Le SID c'est le Still In Development et ça intègre les paquets les plus à jour, par contre du coups, tu vas avoir potentiellement des soucis de jeunesse.
Avatar de Teuchteu Teuchteu - Membre habitué https://www.developpez.com
le 25/07/2011 à 18:39
Bonjour,

On utilise actuellement des Fox G20 dans nos systèmes. J'utilise principalement embdebian pour les cartes ayant besoin du réseau et de service type HTTP, SSH, SQL... Mais le noyau est tout de même configuré au plus juste en fonction des besoins.

Pour les cartes très simples on a opté pour un linux "maison". En gros rien de plus que le noyau et un busybox aux petits oignons, avec quelques scripts. Mais dans ce cas on ne fait rien de plus que lancer l'application dédiée. Aucun accès réseau, aucun services.

La raison principal est un passage d'environ 2minutes à moins de 10s sur le temps de démarrage.

Et la satisfaction personnelle...

Donc personnellement je pense qu'un OS type LFS se justifie pleinement sur des systèmes industriels où le gain compense le temps passé. Quand le système ne propose aucune fonctionnalité, c'est pus rapide de partir de rien que de tout enlever d'un système complexe.
Avatar de Sissroh Sissroh - Membre à l'essai https://www.developpez.com
le 05/01/2013 à 22:41
Bonjour tout le monde,

Cela fait quelques mois que j'essaye de récolter des informations sur "comment développer une application embarquée sous Linux ?" De ce fait, j'ai lu énormément d'articles sur le sujet et jusqu'à présent, ça reste flou pour moi. Pour info, j'ai seulement travaillé 2 mois au cours d'un stage hors embarqué sur un PC équipé d'une distribution Ubuntu sur un projet d'imagerie médicale (ça remonte à 3 ans). En effet, Passionné de l'embarqué, je développe en langage C sur microcontroleur PIC et j’intègre dans mes applications des interfaces de communication industrielles comme CANopen, Modbus et un protocole maison. Cependant, je souhaiterai me lancer sur du TCP/IP (je pense bien maîtrisé théoriquement le modèle en couche puis quelques exemples de sources). Personnellement, j'ai envi de basculer sur le développement Linux embarqué par curiosité et dans le but de renforcer mes compétences. Voici quelques questions permettant de m’éclaircir les idées :

1. Un programme embarqué classique sans OS se démarre juste après la mise sous tension de la carte au main.c, alors comment ça se passe pour un OS embarqué ?

2. Si je dispose d'une application sans OS communiquant par liaison série, comment pourrais-je intégrer cette même application dans un OS embarqué ? L'accès aux GPIO (ports d'entrée/sortie) se ferra aussi simplement qu'avec sans OS (par exemple piloter une led) ?

3. Un programme C sur PIC est dit séquentiel, alors avec un OS, mon programme s'exécutera de quelle manière ?

4. Et la question au-quelle je n'arrête pas de me poser : qu'est ce qu'un OS embarqué peut apporter à une application ?

Je reconnais que mes questions sont assez vagues mais je pourrai surement les préciser suivant vos différentes réponses que j'attends avec impatience !!

Merci à vous.

Cordialement,
Avatar de Bktero Bktero - Modérateur https://www.developpez.com
le 06/01/2013 à 14:01
Bonjour tout le monde,

Salut !

Je reconnais que mes questions sont assez vagues mais je pourrai surement les préciser suivant vos différentes réponses que j'attends avec impatience !!

Tes questions sont vagues parce que tu ne sembles être au clair sur ce que fait un système d'exploitation

j'ai envi de basculer sur le développement Linux embarqué par curiosité et dans le but de renforcer mes compétences

Il y a énormément d'OS embarqué qui ne sont pas Linux, et qui sont sûrement plus simple à prendre en main et à utiliser sur des "petits" micro-contrôleurs. Personnellement, je travaille avec Keil µVision (un IDE pour µ-contrôleur) depuis un mois et j'utilise parfois l'OS qui est fourni avec, RTX. Je vais donc répondre à tes questions par rapport avec mon expérience avec cet OS :

1. Un programme embarqué classique sans OS se démarre juste après la mise sous tension de la carte au main.c, alors comment ça se passe pour un OS embarqué ?

Idem. En fait, tu as un script de start-up qui fait des choses (init, éventuellement appeler des fonctions) puis saute à l'adresse de la fonction main. Que j'utilise RTX ou pas, même effet : mon programme commence par le main.

2. Si je dispose d'une application sans OS communiquant par liaison série, comment pourrais-je intégrer cette même application dans un OS embarqué ? L'accès aux GPIO (ports d'entrée/sortie) se ferra aussi simplement qu'avec sans OS (par exemple piloter une led) ?

3. Un programme C sur PIC est dit séquentiel, alors avec un OS, mon programme s'exécutera de quelle manière ?

Un OS, c'est surtout la gestion multithread. Si tu ne démarres pas de thread, ton programme exécute ton main et ses sous-fonctions de la même façon. Avec Keil et RTX, l'utilisation de l'OS n'est qu'une option à cocher dans les options du projet. Si tu n'utilises pas les fonctions de l'OS, tu peux compiler avec ou sans cette option sans changer ton code...

4. Et la question au-quelle je n'arrête pas de me poser : qu'est ce qu'un OS embarqué peut apporter à une application ?

Si tu poses la question, alors la réponse est très possiblement "rien". Il faut que tu comprennes à quoi serve un OS. Un gros avantage est le multithread. L'OS te permet aussi de faire des évènements, endormir des threads, etc.

Je prend l'exemple d'une carte pour laquelle j'ai fait une démo fin décembre. Les drivers pour les boutons, les joysticks, le touch screen étaient en mode "attente active" et non en mode "interruption". Du coup, j'ai fait 3 threads qui venaient régulièrement interrogés les entrées et générait des évènements au besoin. Assez chiant à faire sans thread.

De la même manière, tu peux mettre un thread en attente d'un signal émis par un autre thread et c'est l'OS qui te donne les fonctions pour le faire et s'occupe de tout.

Merci à vous.

En espérant avoir aidé ^^
Avatar de Sissroh Sissroh - Membre à l'essai https://www.developpez.com
le 06/01/2013 à 21:22
Bonjour et merci pour tes réponses,

Je tiens à préciser que j'ai envi de faire de Linux embarqué par curiosité et que je sais qu'il existe bcp d'autres OS pouvant être embarqué. Mais mon choix c'est Linux.

D'après ce que tu dis, si je n'utilise pas de threads dans mon programme alors un OS n'a pas lieu d'être ?

Par exemple, j'ai envi de travailler sur un projet personnel consistant à récupérer un signal d'un convertisseur A/D, appliquer un algorithme de filtrage et l'envoyer sur internet par TCP/IP. Est ce selon ton expérience, j'aurai besoin d'utiliser les threads pour ça ?

Merci
Avatar de Bktero Bktero - Modérateur https://www.developpez.com
le 06/01/2013 à 22:33
Si ton programme exécute séquentiellement les actions, je ne vois pas trop à quoi un thread supplémentaire te servirait.

Si en revanche, tu peux recevoir à tout moment un paquet réseau te demandant de faire une nouvelle mesure alors que ton programme est occupé à faire autre chose, ça peut-être utile. Ici, un interruption pourrait faire l'affaire, mais un thread peut apporter plus de chose. Mettons par exemple que ton processeur fasse un calcul long. Arrive le paquet réseau. Si tu es sur interruption, l'ISR s'exécute jusqu'à la fin et rend la main. Si l'ISR fait beaucoup de calculs, elle bloque pendant longtemps le traitement principal. Avec le threads, tu peux avoir une gestion plus fine grâce aux priorités des threads. Si le traitement principal est prioritaire, le thread recevant le paquet réseau attendra que le traitement principal se termine. Si le traitement demandé est plus prioritaire, le programme principal attendra comme avec une interruption. Enfin, si elles ont la même priorité, l'OS donnera du temps processeur à l'un puis à l'autre pour que les deux avancent sans attendre la fin complète de l'autre.
Avatar de mith06 mith06 - Membre éclairé https://www.developpez.com
le 08/01/2013 à 9:16
Salut!

Est-ce qu'il existe une distrib linux RT (avec gestion d'une pile TCP/IP) capable de booter en moins de 1s?

Je viens de lire plus haut qu'il est possible de descendre à 10s.
Je voudrais bien voir votre réaction le jour ou il faudra attendre 10s après avoir mis le contact pour démarrer le moteur de votre voiture. C'est déjà le cas dans les téléviseurs, les boxs internets (1à2 minute de boot...) les téléphones portables, je trouve ces délais INACCEPTABLES.

Je me demande d'ailleurs ce qui peut prendre autant de temps?
Avatar de Bktero Bktero - Modérateur https://www.developpez.com
le 09/01/2013 à 21:12
Salut!

Hey !

Est-ce qu'il existe une distrib linux RT (avec gestion d'une pile TCP/IP) capable de booter en moins de 1s?

Peut-être. Mais pas sûr qu'elle soit accessible sur le net. N'importe qui peut faire une distribution Linux, avec ce qu'il veut et éventuellement suffisamment peu de trucs pour que ça boote vite. 1s en revanche, je ne ne sais pas du tout, ça peut dépendre aussi du matériel.

Je viens de lire plus haut qu'il est possible de descendre à 10s.
Je voudrais bien voir votre réaction le jour ou il faudra attendre 10s après avoir mis le contact pour démarrer le moteur de votre voiture.

En même temps, j'ai pas une voiture récente et entre le moment où je mets le contact et le moment où tous les voyants s'éteignent et que je peux donc démarrer, il se passe plusieurs secondes ^^

C'est déjà le cas dans les téléviseurs, les boxs internets (1à2 minute de boot...) les téléphones portables, je trouve ces délais INACCEPTABLES.

Mon téléphone Android et ma télé mettent des plombes à démarrer et c'est totalement insupportable ! Ma freebox, je ne sais, je ne la reboote jamais ^^
Il faut aussi voir la fréquence à laquelle tu allumes et éteints ton appareil. Le temps de boot devient désagréable quand tu le subis souvent.

Je me demande d'ailleurs ce qui peut prendre autant de temps?

Du code et du code et du code qui s'exécute
Offres d'emploi IT
Ingénieur développement fpga (traitement vidéo) H/F
Safran - Ile de France - 100 rue de Paris 91300 MASSY
Spécialiste systèmes informatiques qualité et référent procédure H/F
Safran - Ile de France - Colombes (92700)
Chef projet big data - pse flotte H/F
Safran - Ile de France - Évry (91090)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil