|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() Yoann SculoIngénieur Linux Embarqué Inscription : janvier 2006 Messages : 685 ![]() |
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
Pour les OS sur mesure
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 ! |
|
20
|
|
|
#2 |
|
Membre Expert
![]() Inscription : avril 2010 Messages : 1 222 ![]() |
Salut,
Y'a eCos aussi, il est complètement gratuit, très puissant et il est disponible pour plusieurs plateformes. Il est utilisé par beaucoup de fabricants et constructeurs. En ce qui me concerne, je m'y étais intéressé car c'était l'OS d'un modem/routeur sur lequel je faisais du reverse et que j'avais fini par détourner de son usage principal. Dans les faits, c'était aussi une manière d'avoir une plateforme bien dotée, avec interface Ethernet, USB... pour une misère, car à cette période, l'embarqué n'était pas encore à la mode et les petites cartes dédiées qu'on trouve assez facilement maintenant n'étaient pas encore très répandus et leur prix était excessivement démesuré par rapport à ce qu'on pouvait ou voulait en faire. Et ce qui est donc intéressant avec eCos, c'est que les ressources à son sujet, sa documentation, etc. sont presque intarissables. D'ailleurs, je suis toujours aussi impressionné par l'activité qu'il y a autour de cet OS, c'est vraiment un truc bien suivi et très puissant.
__________________
. ....Bibliothèque de scripts utilitaires batch pour Windows (Command Line Routines) ....Tout n'est pas public ou publié encore... et mon téléchargement montre que le compteur des Downloads n'est pas à jour... |
|
|
10
|
|
|
#3 |
![]() ![]() Inscription : juin 2008 Messages : 7 631 ![]() |
Salut,
Je connais peu les linux embarqués (je travaille plus avec des ordonnanceurs). Mais il ne me semble pas avoir vu dans ta liste des linux orientés temps réels. Or il me semble en avoir entendu parler. |
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() ![]() Inscription : mars 2007 Messages : 525 ![]() |
Yop, perso, j'utilise un DebianARM.
Avantage: Distrib GNU/Linux complète et réplique exact de la Debian Classique. Inconvénient: Gestion d'alimentation pas fondamentalement adapté à l'embarqué. Au final, cette distrib m'est plus utile en tant qu'OS de développement ARM qu'embarqué car elle est plus spécialisé sur cette plateforme. De plus, bien que l'on puisse s'en servir en tant que Distrib pour de l'embarqué (rien ne l’empêche, après tout, c'est du Linux, on fait ce qu'on veux), vas falloir bidouiller un peu. Au final, je m'en sert sur ma board NVidia Tegra250 DevKit afin de faire mes reverse engineering de celle-ci. |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : août 2003 Messages : 127 ![]() |
Bijor,
J'utilise OpenEmbedded (bitbake) pour créer des distributions Angtröm et pour créer des paquetages d'installation, y compris pour de simples programmes (gdbserver par exemple). Mon embarqué est un ARM Cortex-A8. La distro choisie est une Angstrom parce que c'est relativement léger. OpenEmbedded me permet de choisir presqu'à la volée si je veux la distro en console, avec interface Gui, ... J'aimerais bien faire un tuto un de ces quatre là-dessus, ça vaut la peine de partager l'expérience de la mise en route de tout ce b... mais il me faudra du temps pour rédiger. Pour le reste (l'applicatif), j'utilise Eclipse avec pas mal de plugin sous Ubuntu 10.10 (j'avais upgradé en 11.04 mais j'en suis vite revenu). Là aussi il y a moyen de faire un tuto parce que les infos sont trop éparses, cela m'a pris pas mal de temps avant de pouvoir déboguer "Bonjour tout le monde" dans l'embarqué via la liaison ethernet. Olivier
__________________
Cortex M0 M3 A8 |
|
|
10
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Aurèle Inscription : mai 2009 Messages : 20 ![]() |
Bonjour,
Personnelement j'utilise BuildRoot pour du arm alors ce que je dis est valable pour arm : il est simple à utiliser : je ne connaissais rien à Linux et j'ai mis moins de 2 mois à mettre en place une distrib (et la chose sur laquelle j'ai passé le moins de temps c'est buildroot) il est complet : il fait tout chaine de compilation, téléchargement, compilations des application/noyau/bootloader mais personnellement je l'utilise avec un noyau à part, le bootloader à part, et la chaine de compilation à part (pour des raison historique de projet) bref c'est complet et modulairepour mon environnement je trouve que les distributions toutes faites ont trop d'application... mais je n'ai pas passé beaucoup de temps sur ces distrib BuildRoot me parait plus facilement "optimisable". Open Embedded j'ai tester un peu et au salon RTS j'ai vu une présentation qui donne envie (comme Aquanum) mais je pense que c'est plus long à prendre en mains mais après ça à l'air puissant Embdbian j'ai voulu regarder mais franchement j'ai pas trouvé assez de docs pour que ce soit facilement utilisable (enfin c'est dans mon souvenir ça fait longtemps que j'ai regardé) pour ce qui est du temps réel il y a par exemple Xenomai ou RTAI ou le patch Preemptrt mais tout ça on peu l'ajouter sur n'importe quelle distrib (j'utilise Xenomai) le reste je n'ai pas testé voila voila PS : pour eCos il me semble que ce n'est pas un Linux... Mais bon c'est vrai qu'il à l'air intéressant alors moi je l'accepte
|
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 430 ![]() |
Bonjour,
Ayant fait dans le milieu professionnelle du dev embarqué sous WinCE, et voulant personnellement du coté linux j'ai investie dans une carte de développement FriendlyARM mini2440. Pour moins de 100€, j'ai pu faire mes armes avec du Linux embarqué. Débutant avec du linux from scratch, puis bluidroot, et finalement Emdebian. Vue que je n'ai pas un projet bien précis, je trouve que d'utilisé une vrai distribution est un grand plus dans la flexibilité d'installation des packets, et la cross-compilation est aussi facilité. Bien sur cette version light de debian ne contient pas la liste de tous les packets de la distribution. Et l'utilisation d'une distribution est beaucoup plus lourd que des systèmes construit "à la main".
__________________
________________________________________________ |
|
00
|
|
|
#8 |
![]() ![]() Yoann SculoIngénieur Linux Embarqué Inscription : janvier 2006 Messages : 685 ![]() |
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) |
|
10
|
|
|
#9 |
|
Membre Expert
![]() Inscription : avril 2010 Messages : 1 222 ![]() |
Je pense que le sujet a été épinglé trop vite, du coup plein de personnes passent à côté.
__________________
. ....Bibliothèque de scripts utilitaires batch pour Windows (Command Line Routines) ....Tout n'est pas public ou publié encore... et mon téléchargement montre que le compteur des Downloads n'est pas à jour... |
|
|
00
|
|
|
#10 | |
|
Membre habitué
![]() Inscription : août 2003 Messages : 127 ![]() |
Citation:
__________________
Cortex M0 M3 A8 |
|
|
|
00
|
|
|
#11 | |
|
Membre expérimenté
![]() ![]() Inscription : mars 2007 Messages : 525 ![]() |
Citation:
![]() 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. |
|
|
|
00
|
|
|
#12 |
|
Membre actif
![]() Bruno Développeur en systèmes embarqués Inscription : mai 2002 Messages : 114 ![]() |
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. |
|
|
20
|
|
|
#13 |
|
Invité régulier
![]() Sissroh CoulbyDéveloppeur en systèmes embarqués Inscription : avril 2012 Messages : 7 ![]() |
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, |
|
|
00
|
|
|
#14 | |||||||
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 695 ![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
Citation:
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. Citation:
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|||||||
|
00
|
|
|
#15 |
|
Invité régulier
![]() Sissroh CoulbyDéveloppeur en systèmes embarqués Inscription : avril 2012 Messages : 7 ![]() |
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 |
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 695 ![]() |
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.
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
00
|
|
|
#17 |
|
Membre actif
![]() Ingénieur développement matériel électronique Inscription : juillet 2010 Messages : 140 ![]() |
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? |
|
|
00
|
|
|
#18 | |||||
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 695 ![]() |
Citation:
Citation:
Citation:
Citation:
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. Citation:
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|||||
|
00
|
Copyright © 2000-2013 - www.developpez.com